19.4. 複数の Ingress の作成
単一の AWS Load Balancer (ALB) を介して、単一のドメインの一部であるさまざまなサービスにトラフィックをルーティングできます。各 Ingress リソースは、ドメインの異なるエンドポイントを提供します。
19.4.1. 単一の AWS Load Balancer を介して複数の Ingress を作成
CLI を使用すると、単一の AWS Load Balancer (ALB) を介してトラフィックを複数の Ingress にルーティングできます。
前提条件
-
OpenShift CLI (
oc
) にアクセスできる。
手順
次のように、
IngressClassParams
リソースの YAML ファイル (例:sample-single-lb-params.yaml
) を作成します。apiVersion: elbv2.k8s.aws/v1beta1 1 kind: IngressClassParams metadata: name: single-lb-params 2 spec: group: name: single-lb 3
次のコマンドを実行して、
IngressClassParams
リソースを作成します。$ oc create -f sample-single-lb-params.yaml
次のように、
IngressClass
リソースの YAML ファイル (例:sample-single-lb-class.yaml
) を作成します。apiVersion: networking.k8s.io/v1 1 kind: IngressClass metadata: name: single-lb 2 spec: controller: ingress.k8s.aws/alb 3 parameters: apiGroup: elbv2.k8s.aws 4 kind: IngressClassParams 5 name: single-lb-params 6
- 1
- API グループと
IngressClass
リソースのバージョンを定義します。 - 2
IngressClass
の名前を指定します。- 3
- コントローラー名を定義します。
ingress.k8s.aws/alb
は、このクラスのすべての Ingress がaws-load-balancer-controller
によって管理される必要があることを示します。 - 4
IngressClassParams
リソースの API グループを定義します。- 5
IngressClassParams
リソースのリソースタイプを定義します。- 6
IngressClassParams
リソースの名前を定義します。
次のコマンドを実行して、
IngressClass
リソースを作成します。$ oc create -f sample-single-lb-class.yaml
次のように、
AWSLoadBalancerController
リソース YAML ファイル (例:sample-single-lb.yaml
) を作成します。apiVersion: networking.olm.openshift.io/v1 kind: AWSLoadBalancerController metadata: name: cluster spec: subnetTagging: Auto ingressClass: single-lb 1
- 1
IngressClass
リソースの名前を定義します。
次のコマンドを実行して、
AWSLoadBalancerController
リソースを作成します。$ oc create -f sample-single-lb.yaml
次のように、
Ingress
リソースの YAML ファイル (例:sample-multiple-ingress.yaml
) を作成します。apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: example-1 1 annotations: alb.ingress.kubernetes.io/scheme: internet-facing 2 alb.ingress.kubernetes.io/group.order: "1" 3 alb.ingress.kubernetes.io/target-type: instance 4 spec: ingressClassName: single-lb 5 rules: - host: example.com 6 http: paths: - path: /blog 7 pathType: Prefix backend: service: name: example-1 8 port: number: 80 9 --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: example-2 annotations: alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/group.order: "2" alb.ingress.kubernetes.io/target-type: instance spec: ingressClassName: single-lb rules: - host: example.com http: paths: - path: /store pathType: Prefix backend: service: name: example-2 port: number: 80 --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: example-3 annotations: alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/group.order: "3" alb.ingress.kubernetes.io/target-type: instance spec: ingressClassName: single-lb rules: - host: example.com http: paths: - path: / pathType: Prefix backend: service: name: example-3 port: number: 80
- 1
- Ingress の名前を指定します。
- 2
- パブリックサブネットでプロビジョニングするロードバランサーを示し、インターネット経由でアクセスできるようにします。
- 3
- ロードバランサーでリクエストを受信したときに、Ingress からのルールが一致する順序を指定します。
- 4
- ロードバランサーがサービスに到達するために OpenShift ノードをターゲットにすることを示します。
- 5
- この入力に属する Ingress クラスを指定します。
- 6
- リクエストルーティングに使用されるドメインの名前を定義します。
- 7
- サービスにルーティングする必要があるパスを定義します。
- 8
- Ingress で設定されたエンドポイントにサービスを提供するサービスの名前を定義します。
- 9
- エンドポイントにサービスを提供するサービスのポートを定義します。
次のコマンドを実行して、
Ingress
リソースを作成します。$ oc create -f sample-multiple-ingress.yaml