複数のIngressパターン
同じEKSクラスター内で複数のIngressオブジェクトを活用することは一般的です。例えば、複数の異なるワークロードを公開するためなどです。デフォルトでは、各IngressはそれぞれALBの作成につな がりますが、IngressGroup機能を活用することで複数のIngressリソースをグループ化できます。コントローラーはIngressGroup内のすべてのIngressのルールを自動的に統合し、1つのALBでそれらをサポートします。さらに、Ingressで定義されたほとんどのアノテーションは、そのIngressによって定義されたパスにのみ適用されます。
この例では、uiコンポーネントと同じALBを通してcatalog APIを公開し、パスベースのルーティングを活用して適切なKubernetesサービスにリクエストをディスパッチします。
まず、uiコンポーネントの新しいIngressを作成します:
~/environment/eks-workshop/modules/exposing/ingress/multiple-ingress/ingress-ui.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ui-multi
namespace: ui
labels:
app.kubernetes.io/created-by: eks-workshop
annotations:
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/target-type: ip
alb.ingress.kubernetes.io/healthcheck-path: /actuator/health/liveness
alb.ingress.kubernetes.io/group.name: retail-app-group
alb.ingress.kubernetes.io/inbound-cidrs: $INBOUND_CIDRS
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: ui
port:
number: 80
A
アノテーションalb.ingress.kubernetes.io/group.nameを追加してIngressGroupをretail-app-groupに設定します
B
rulesセクションは、ALBがトラフィックをどのようにルーティングすべきかを表現するために使用されます。uiコンポーネントでは、パス/で始まるすべてのHTTPリクエストをポート80のKubernetesサービスuiにルーティングします
次に、catalogコンポーネント用に別のIngressを作成します:
~/environment/eks-workshop/modules/exposing/ingress/multiple-ingress/ingress-catalog.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: catalog-multi
namespace: catalog
labels:
app.kubernetes.io/created-by: eks-workshop
annotations:
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/target-type: ip
alb.ingress.kubernetes.io/healthcheck-path: /health
alb.ingress.kubernetes.io/group.name: retail-app-group
alb.ingress.kubernetes.io/inbound-cidrs: $INBOUND_CIDRS
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /catalog
pathType: Prefix
backend:
service:
name: catalog
port:
number: 80