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/v1beta11 kind: IngressClassParams metadata: name: single-lb-params2 spec: group: name: single-lb3 次のコマンドを実行して、
IngressClassParamsリソースを作成します。$ oc create -f sample-single-lb-params.yaml次のように、
IngressClassリソースの YAML ファイル (例:sample-single-lb-class.yaml) を作成します。apiVersion: networking.k8s.io/v11 kind: IngressClass metadata: name: single-lb2 spec: controller: ingress.k8s.aws/alb3 parameters: apiGroup: elbv2.k8s.aws4 kind: IngressClassParams5 name: single-lb-params6 - 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-lb1 - 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-11 annotations: alb.ingress.kubernetes.io/scheme: internet-facing2 alb.ingress.kubernetes.io/group.order: "1"3 alb.ingress.kubernetes.io/target-type: instance4 spec: ingressClassName: single-lb5 rules: - host: example.com6 http: paths: - path: /blog7 pathType: Prefix backend: service: name: example-18 port: number: 809 --- 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