21.6. 複数の Ingress の作成

単一の AWS Load Balancer (ALB) を介して、単一のドメインの一部であるさまざまなサービスにトラフィックをルーティングできます。各 Ingress リソースは、ドメインの異なるエンドポイントを提供します。

21.6.1. 単一の AWS Load Balancer を介して複数の Ingress を作成

CLI を使用すると、単一の AWS Load Balancer (ALB) を介してトラフィックを複数の Ingress にルーティングできます。

前提条件

  • OpenShift CLI (oc) にアクセスできる。

手順

  1. 次のように、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
    1
    IngressClassParams リソースの API グループとバージョンを定義します。
    2
    IngressClassParams リソースの名前を指定します。
    3
    IngressGroup の名前を指定します。このクラスのすべての Ingress は、この IngressGroup に属します。
  2. 次のコマンドを実行して、IngressClassParams リソースを作成します。

    $ oc create -f sample-single-lb-params.yaml
  3. 次のように、IngressClass リソースの YAML ファイル (例: sample-single-lb.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 6
    1
    API グループと IngressClass リソースのバージョンを定義します。
    2
    IngressClass の名前を指定します。
    3
    すべての IngressClasses に共通のコントローラー名を定義します。aws-load-balancer-controller は、コントローラーを調整します。
    4
    IngressClassParams リソースの API グループを定義します。
    5
    IngressClassParams リソースのリソースタイプを定義します。
    6
    IngressClassParams リソースの名前を定義します。
  4. 次のコマンドを実行して、IngressClass リソースを作成します。

    $ oc create -f sample-single-lb.yaml
  5. 次のように、Ingress リソースの YAML ファイル (例: sample-multiple-ingress.yaml) を作成します。

    apiVersion: networking.k8s.io/v1 1
    kind: Ingress
    metadata:
      name: <example-1> 2
      annotations:
        alb.ingress.kubernetes.io/scheme: internet-facing 3
        alb.ingress.kubernetes.io/group.order: "1" 4
    spec:
      ingressClass: alb 5
      rules:
      - host: example.com 6
        http:
            paths:
            - path: /blog 7
              backend:
                service:
                  name: <example-1> 8
                  port:
                    number: 80 9
    kind: Ingress
    metadata:
      name: <example-2>
      annotations:
        alb.ingress.kubernetes.io/scheme: internet-facing
        alb.ingress.kubernetes.io/group.order: "2"
    spec:
      ingressClass: alb
      rules:
      - host: example.com
        http:
            paths:
            - path: /store
              backend:
                service:
                  name: <example-2>
                  port:
                    number: 80
    kind: Ingress
      metadata:
      name: <example-3>
      annotations:
        alb.ingress.kubernetes.io/scheme: internet-facing
        alb.ingress.kubernetes.io/group.order: "3"
    spec:
      ingressClass: alb
      rules:
      - host: example.com
        http:
            paths:
            - path: /
              backend:
                service:
                  name: <example-3>
                  port:
                    number: 80
    1 2
    Ingress の名前を指定します。
    3
    パブリックサブネットでプロビジョニングするロードバランサーを示し、インターネット経由でアクセスできるようにします。
    4
    ロードバランサーでリクエストを受信したときに、Ingress からのルールが一致する順序を指定します。
    5
    この入力に属する Ingress クラスを指定します。
    6
    リクエストルーティングに使用されるドメインの名前を定義します。
    7
    サービスにルーティングする必要があるパスを定義します。
    8
    Ingress で設定されたエンドポイントにサービスを提供するサービスの名前を定義します。
    9
    エンドポイントにサービスを提供するサービスのポートを定義します。
  6. 次のコマンドを実行して、Ingress リソースを作成します。

    $ oc create -f sample-multiple-ingress.yaml