20.6. 1 つの AWS ロードバランサーを介して複数の Ingress リソースを提供する


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

20.6.1. 1 つの AWS ロードバランサーを介して複数の Ingress リソースを作成する

CLI を使用すると、1 つの AWS ロードバランサーを介して複数の 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-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
    Ingress クラス名を指定します。
    3
    コントローラー名を定義します。ingress.k8s.aws/alb という値は、このクラスのすべての Ingress リソースを AWS Load Balancer Controller によって管理することを意味します。
    4
    IngressClassParams リソースの API グループを定義します。
    5
    IngressClassParams リソースのリソースタイプを定義します。
    6
    IngressClassParams リソース名を定義します。
  4. 次のコマンドを実行して IngressClass リソースを作成します。

    $ oc create -f sample-single-lb-class.yaml
  5. 次のように、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 リソースの名前を定義します。
  6. 次のコマンドを実行して、AWSLoadBalancerController リソースを作成します。

    $ oc create -f sample-single-lb.yaml
  7. 次のように、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 Container Platform ノードをターゲットにすることを示します。
    5
    この Ingress に属する Ingress クラスを指定します。
    6
    要求のルーティングに使用するドメイン名を定義します。
    7
    サービスにルーティングする必要があるパスを定義します。
    8
    Ingress リソースで設定されたエンドポイントを提供するサービス名を定義します。
    9
    エンドポイントにサービスを提供するサービスのポートを定義します。
  8. 次のコマンドを実行して Ingress リソースを作成します。

    $ oc create -f sample-multiple-ingress.yaml
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.