すべてのプロダクト
Search
ドキュメントセンター

Container Compute Service:ALB Ingress のクイックスタート

最終更新日:Feb 11, 2026

Application Load Balancer (ALB) Ingress は ALB をベースに構築されており、強力な Ingress トラフィック管理機能を提供します。Nginx Ingress と互換性があり、複雑なビジネスルーティングを処理でき、証明書の自動検出をサポートします。HTTP、HTTPS、QUIC プロトコルをサポートします。Container Service for Kubernetes (ACK) クラスターで ALB Ingress を使用すると、クラウドネイティブアプリケーションに必要な高い弾力性と大規模なレイヤー 7 のトラフィック処理能力が提供されます。

仕組み

ALB Ingress には、以下の基本的な概念が含まれます。

  • ALB Ingress コントローラーは、Ingress リソースを管理するコンポーネントです。このコンポーネントは、API サーバーを使用して、Ingress リソースおよび AlbConfig リソースの変更を動的に取得し、その後 ALB インスタンスを更新します。Nginx Ingress コントローラーとは異なり、ALB Ingress コントローラーは ALB インスタンスのコントロールプレーンです。ALB インスタンスを管理しますが、ユーザー トラフィックを直接処理しません。代わりに、ALB インスタンスがユーザー トラフィックを転送します。ALB Ingress コントローラーは、クラスターの API サーバーを使用して、Ingress リソースの変更を動的に取得し、Ingress で定義された転送ルールに基づいて ALB インスタンスを更新します。

  • AlbConfig (クラスターレベルの CRD):AlbConfig は、ALB Ingress Controller によって作成されるクラスターレベルのカスタムリソース定義 (CRD) です。AlbConfig のパラメーターは、ALB インスタンスの設定を定義します。1 つの AlbConfig は 1 つの ALB インスタンスに対応します。ALB インスタンスは、ユーザートラフィックのエントリポイントであり、ユーザーリクエストをバックエンド Service に転送する役割を担います。これは Application Load Balancer (ALB) によって完全に管理されます。

  • IngressClass:IngressClass は、Ingress と AlbConfig の間の関連付けを定義します。

  • Ingress:Ingress は、外部トラフィックのルーティングとアクセスルールを定義する Kubernetes のリソースオブジェクトです。ALB Ingress Controller は Ingress リソースの変更を監視し、ALB インスタンスを更新してトラフィックを転送します。

  • Service:Kubernetes では、Pod は頻繁に変更される一時的なリソースです。Service は、同じ機能を実行する Pod のグループに対して、安定した統一されたエントリポイントを提供します。他のアプリケーションやサービスは、個々の Pod の変更を意識することなく、Service の仮想 IP アドレスとポートにアクセスすることでバックエンドの Pod と通信できます。

次の図は、ALB インスタンスと ALB Ingress の論理的な関係を示しています。

image

制限事項

AlbConfig、Namespace、Ingress、および Service リソースの名前は、aliyun で始めることはできません。

古いバージョンの Nginx Ingress Controller は spec:ingressClassName フィールドを認識しません。クラスターに Nginx Ingress と ALB Ingress の両方が設定されている場合、ALB Ingress が古いバージョンの Nginx Ingress Controller によって調整される可能性があります。この問題を回避するには、Nginx Ingress Controller をできるだけ早く更新するか、アノテーションを使用して ALB Ingress の IngressClass を指定してください。詳細については、「Nginx Ingress Controller コンポーネントのアップグレード」または「ALB Ingress の高度な使用方法」をご参照ください。

利用シーンの例

このチュートリアルでは、4 つの Pod を持つ Nginx デプロイメントを例に、同じドメイン名の下で異なる URL パスに基づいてトラフィックを転送するように ALB Ingress を設定する方法を説明します。

フロントエンドリクエスト

トラフィックの転送先

demo.domain.ingress.top/coffee

coffee サービス

demo.domain.ingress.top/tea

tea サービス

前提条件

ステップ 1:バックエンドサービスのデプロイ

コンソール

  1. ACS コンソールにログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。

  2. クラスターリスト ページで、対象のクラスターの名前をクリックします。左側のナビゲーションウィンドウで、Workloads > Deployments を選択します。

  3. Deployments ページで、右上隅の [YAML から作成] をクリックします。

  4. [作成] ページで、次の手順を実行します。

    1. Sample TemplateCustom を選択します。

    2. Template:YAML 設定ファイルのコードを入力します。この設定ファイルは、coffeetea という名前の 2 つの Deployment と、coffee-svctea-svc という名前の 2 つの Service をデプロイします。

      YAML 設定のリファレンス

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: coffee
      spec:
        replicas: 2
        selector:
          matchLabels:
            app: coffee
        template:
          metadata:
            labels:
              app: coffee
          spec:
            containers:
            - name: coffee
              image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginxdemos:latest
              ports:
              - containerPort: 80
      ---
      apiVersion: v1
      kind: Service
      metadata:
        name: coffee-svc
      spec:
        ports:
        - port: 80
          targetPort: 80
          protocol: TCP
        selector:
          app: coffee
        type: ClusterIP
      ---
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: tea
      spec:
        replicas: 2
        selector:
          matchLabels:
            app: tea
        template:
          metadata:
            labels:
              app: tea
          spec:
            containers:
            - name: tea
              image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginxdemos:latest
              ports:
              - containerPort: 80
      ---
      apiVersion: v1
      kind: Service
      metadata:
        name: tea-svc
      spec:
        ports:
        - port: 80
          targetPort: 80
          protocol: TCP
        selector:
          app: tea
        type: ClusterIP
  5. 設定が完了したら、[作成] をクリックします。[正常に作成されました] というメッセージが表示されます。

  6. デプロイメントとサービスが作成されたことを確認します。

    1. 左側のナビゲーションウィンドウで、[ワークロード] > [デプロイメント] を選択します。coffeetea という名前のデプロイメントが作成されていることを確認します。

    2. 左側のナビゲーションウィンドウで、[ネットワーク] > [サービス] を選択します。coffee-svctea-svc という名前のサービスが作成されていることを確認します。

kubectl

  1. cafe-service.yaml という名前のファイルを作成し、次の内容を記述します。このファイルは、coffeetea という名前の 2 つのデプロイメントと、coffee-svctea-svc という名前の 2 つのサービスをデプロイするために使用されます。

    YAML 設定のリファレンス

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: coffee
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: coffee
      template:
        metadata:
          labels:
            app: coffee
        spec:
          containers:
          - name: coffee
            image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginxdemos:latest
            ports:
            - containerPort: 80
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: coffee-svc
    spec:
      ports:
      - port: 80
        targetPort: 80
        protocol: TCP
      selector:
        app: coffee
      type: ClusterIP
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: tea
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: tea
      template:
        metadata:
          labels:
            app: tea
        spec:
          containers:
          - name: tea
            image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginxdemos:latest
            ports:
            - containerPort: 80
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: tea-svc
    spec:
      ports:
      - port: 80
        targetPort: 80
        protocol: TCP
      selector:
        app: tea
      type: ClusterIP
  2. 次のコマンドを実行して、2 つのデプロイメントと 2 つのサービスをデプロイします。

    kubectl apply -f cafe-service.yaml

    期待される出力:

    deployment "coffee" created
    service "coffee-svc" created
    deployment "tea" created
    service "tea-svc" created
  3. 次のコマンドを実行して、アプリケーションとサービスのステータスを確認します。

    1. 次のコマンドを実行して、アプリケーションのステータスを確認します。

      kubectl get deployment

      期待される出力:

      NAME                             READY   UP-TO-DATE   AVAILABLE   AGE
      coffee                           2/2     2            2           2m 26s
      tea                              2/2     2            2           2m 26s
    2. 次のコマンドを実行して、サービスのステータスを確認します。

      kubectl get svc

      期待される出力:

      NAME                          TYPE            CLUSTER-IP       EXTERNAL-IP           PORT(S)           AGE
      coffee-svc                    ClusterIP       172.16.XX.XX     <none>                80/TCP            9m 38s
      tea-svc                       ClusterIP       172.16.XX.XX     <none>                80/TCP            9m 38s

ステップ 2:AlbConfig の作成

コンソール

  1. ACS コンソールにログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。

  2. クラスターリスト ページで、対象のクラスターの名前をクリックします。左側のナビゲーションウィンドウで、Workloads > [カスタムリソース] を選択します。

  3. CRDs タブで、Create from YAML をクリックします。

    1. Sample TemplateCustom を選択します。

    2. Template:YAML 設定ファイルのコードを入力します。

      YAML 設定のリファレンス

      apiVersion: alibabacloud.com/v1
      kind: AlbConfig
      metadata:
        name: alb-demo
      spec:
        config:
          name: alb-test
          addressType: Internet
          zoneMappings:                          # 高可用性を確保するために、異なるゾーンにある少なくとも 2 つの vSwitch を選択します。
          - vSwitchId: vsw-uf6ccg2a9g71hx8go**** # 実際の vSwitch ID (ゾーン 1) に置き換えます。
          - vSwitchId: vsw-uf6nun9tql5t8nh15**** # 実際の vSwitch ID (ゾーン 2、ゾーン 1 とは異なる必要があります) に置き換えます。
        listeners:
          - port: 80
            protocol: HTTP

      調整可能なパラメーターは次の表のとおりです。

      パラメーター

      必須

      説明

      metadata.name

      はい

      AlbConfig の名前。

      説明

      AlbConfig の名前はクラスター内で一意である必要があります。AlbConfig を作成する際は、名前の競合を避けるために名前が一意であることを確認してください。

      spec.config.name

      いいえ

      ALB インスタンスの名前。

      spec.config.addressType

      いいえ

      ALB インスタンスのネットワークタイプ。有効な値:

      • Internet (デフォルト):ALB インスタンスはパブリックに公開され、インターネットからアクセスできます。

        説明

        Application Load Balancer は、Elastic IP Address (EIP) との関連付けにより、インターネット向けのサービスを提供します。インターネット向けの ALB インスタンスを使用する場合、EIP インスタンス、帯域幅、およびデータ転送に対して課金されます。詳細については、「従量課金」をご参照ください。

      • Intranet:ALB インスタンスはプライベートで、VPC 内からのみアクセスできます。

      spec.config.zoneMappings

      はい

      ALB の vSwitch ID を設定します。vSwitch の作成方法の詳細については、「vSwitch の作成と管理」をご参照ください。

      説明
      • 指定された vSwitch は、ALB がサポートするゾーンにあり、クラスターと同じ VPC 内にある必要があります。ALB がサポートするリージョンとゾーンの詳細については、「ALB がサポートするリージョンとゾーン」をご参照ください。

      • Application Load Balancer はマルチゾーンデプロイをサポートしています。現在のリージョンが 2 つ以上のゾーンをサポートしている場合、高可用性を確保するために異なるゾーンにある少なくとも 2 つの vSwitch を選択してください。

      spec.listeners

      いいえ

      ALB インスタンスのリスナーポートとプロトコルを設定します。この例では、ポート 80 に HTTP リスナーを設定します。

      リスナーは、トラフィックがロードバランサーにどのように入るかを定義します。この設定を保持しない場合、ALB Ingress を使用するにはリスナーを作成する必要があります。

  4. 設定が完了したら、[作成] をクリックします。[正常に作成されました] というメッセージが表示されます。

  5. ALB インスタンスが作成されたことを確認します。

    1. Application Load Balancer (ALB) コンソールにログインします。

    2. トップメニューバーで、インスタンスが配置されているリージョンを選択します。

    3. [インスタンス] ページで、alb-test という名前の ALB インスタンスを見つけます。これは、インスタンスが正常に作成されたことを示します。

kubectl

  1. AlbConfig を作成するために、次の内容を alb-test.yaml という名前のファイルにコピーします。

    YAML 設定のリファレンス

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb-demo
    spec:
      config:
        name: alb-test
        addressType: Internet
        zoneMappings:                          # 高可用性を確保するために、異なるゾーンにある少なくとも 2 つの vSwitch を選択します。
        - vSwitchId: vsw-uf6ccg2a9g71hx8go**** # 実際の vSwitch ID (ゾーン 1) に置き換えます。
        - vSwitchId: vsw-uf6nun9tql5t8nh15**** # 実際の vSwitch ID (ゾーン 2、ゾーン 1 とは異なる必要があります) に置き換えます。
      listeners:
        - port: 80
          protocol: HTTP

    調整可能なパラメーターは次の表のとおりです。

    パラメーター

    必須

    説明

    metadata.name

    はい

    AlbConfig の名前。

    説明

    AlbConfig の名前はクラスター内で一意である必要があります。AlbConfig を作成する際は、名前の競合を避けるために名前が一意であることを確認してください。

    spec.config.name

    いいえ

    ALB インスタンスの名前。

    spec.config.addressType

    いいえ

    ALB インスタンスのネットワークタイプ。有効な値:

    • Internet (デフォルト):ALB インスタンスはパブリックに公開され、インターネットからアクセスできます。

      説明

      Application Load Balancer は、Elastic IP Address (EIP) との関連付けにより、インターネット向けのサービスを提供します。インターネット向けの ALB インスタンスを使用する場合、EIP インスタンス、帯域幅、およびデータ転送に対して課金されます。詳細については、「従量課金」をご参照ください。

    • Intranet:ALB インスタンスはプライベートで、VPC 内からのみアクセスできます。

    spec.config.zoneMappings

    はい

    ALB の vSwitch ID を設定します。vSwitch の作成方法の詳細については、「vSwitch の作成と管理」をご参照ください。

    説明
    • 指定された vSwitch は、ALB がサポートするゾーンにあり、クラスターと同じ VPC 内にある必要があります。ALB がサポートするリージョンとゾーンの詳細については、「ALB がサポートするリージョンとゾーン」をご参照ください。

    • Application Load Balancer はマルチゾーンデプロイをサポートしています。現在のリージョンが 2 つ以上のゾーンをサポートしている場合、高可用性を確保するために異なるゾーンにある少なくとも 2 つの vSwitch を選択してください。

    spec.listeners

    いいえ

    ALB インスタンスのリスナーポートとプロトコルを設定します。この例では、ポート 80 に HTTP リスナーを設定します。

    リスナーは、トラフィックがロードバランサーにどのように入るかを定義します。この設定を保持しない場合、ALB Ingress を使用するにはリスナーを作成する必要があります。

  2. 次のコマンドを実行して AlbConfig を作成します。

    kubectl apply -f alb-test.yaml

    期待される出力:

    albconfig.alibabacloud.com/alb-demo created

    この出力は、AlbConfig が正常に作成されたことを示します。

ステップ 3:IngressClass の作成

各 IngressClass は 1 つの AlbConfig に対応する必要があります。

コンソール

  1. ACS コンソールにログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。

  2. クラスターリスト ページで、対象のクラスターの名前をクリックします。左側のナビゲーションウィンドウで、Workloads > [カスタムリソース] を選択します。

  3. [CRDs] タブで、[Create from YAML] をクリックします。

    1. Sample TemplateCustom を選択します。

    2. Template:YAML 設定ファイルのコードを入力します。

      YAML 設定のリファレンス

      apiVersion: networking.k8s.io/v1
      kind: IngressClass
      metadata:
        name: alb
      spec:
        controller: ingress.k8s.alibabacloud/alb
        parameters:
          apiGroup: alibabacloud.com
          kind: AlbConfig
          name: alb-demo

      調整可能なパラメーターは次の表のとおりです。

      パラメーター

      必須

      説明

      metadata.name

      はい

      IngressClass の名前。

      説明

      IngressClass の名前はクラスター内で一意である必要があります。IngressClass を作成する際は、名前の競合を避けるために名前が一意であることを確認してください。

      spec.parameters.name

      はい

      関連付けられた AlbConfig の名前。

  4. 設定が完了したら、Create をクリックします。ページに作成が成功したことを示すメッセージが表示されます。

  5. IngressClass が作成されたことを確認します。

    1. 左側のナビゲーションウィンドウで、[ワークロード] > [カスタムリソース] を選択します。

    2. [リソースオブジェクトブラウザー] タブをクリックします。

    3. [API グループ] 検索バーに IngressClass と入力して検索します。対応する IngressClass が作成されていることを確認します。

kubectl

  1. IngressClass を作成するために、次の内容を alb.yaml という名前のファイルに作成します。

    YAML 設定のリファレンス

    apiVersion: networking.k8s.io/v1
    kind: IngressClass
    metadata:
      name: alb
    spec:
      controller: ingress.k8s.alibabacloud/alb
      parameters:
        apiGroup: alibabacloud.com
        kind: AlbConfig
        name: alb-demo

    調整可能なパラメーターは次の表のとおりです。

    パラメーター

    必須

    説明

    metadata.name

    はい

    IngressClass の名前。

    説明

    IngressClass の名前はクラスター内で一意である必要があります。IngressClass を作成する際は、名前の競合を避けるために名前が一意であることを確認してください。

    spec.parameters.name

    はい

    関連付けられた AlbConfig の名前。

  2. 次のコマンドを実行して IngressClass を作成します。

    kubectl apply -f alb.yaml

    期待される出力:

    ingressclass.networking.k8s.io/alb created

ステップ 4:Ingress の作成

コンソール

  1. ACS コンソールにログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。

  2. クラスターリスト」ページで、対象クラスターの名前をクリックします。左側のナビゲーションウィンドウで、「ネットワーク」>「Ingress」を選択します。

  3. Ingresses ページで、Ingress の作成 をクリックし、Ingress の作成 ダイアログボックスでルーティングを設定します。

    設定項目

    説明

    設定例

    ゲートウェイタイプ

    アプリケーションロードバランシングのゲートウェイタイプとして ALB または MSE を選択できます。

    ALB Ingress

    名前

    Ingress のカスタム名。

    cafe-ingress

    Ingress クラス

    Ingress のカスタムクラス。

    alb

    ルール

    [+ ルールの追加] をクリックして、複数のルーティングルールを追加します。

    • [ドメイン名]:カスタムドメイン名。

    • [パスのマッピング]:次の項目を設定します。

      • [パス]:サービスにアクセスするための URL パス。この例では設定せず、ルートパス / を使用します。

      • 一致ルール[プレフィックス][完全一致]、および [デフォルト (ImplementationSpecific)] に対応しています。

      • [サービス名]:ターゲットサービス。Kubernetes の Service です。

      • [ポート]:サービスが公開する必要のあるポート。

    • 1 つの Ingress は、同じドメイン名の下で複数のパスをサポートします。[+ パスの追加] をクリックしてパスを追加します。

    • [ドメイン名]:demo.domain.ingress.top

    • [パスのマッピング]

      • [パス]:/tea

      • 一致タイプ: ImplementationSpecific

      • [サービス名]:tea-svc

      • [ポート]:80

    • [パスのマッピング]

      • [パス]:/coffee

      • 一致タイプ: 実装固有

      • [サービス名]:coffee-svc

      • [ポート]:80

    TLS 設定

    TLS 設定を有効にして、安全なルーティングサービスを設定します。

    • [ドメイン名]:カスタムドメイン名。

    • [シークレット]: 必要に応じて対応するシークレットを選択します。

      Secret を作成するには、次の手順を実行します。

      1. [Secret] の右側にある [作成] をクリックします。

      2. [Secret の作成] ダイアログボックスで、Secret のカスタム [名前][証明書][キー] を入力し、[OK] をクリックします。

      3. [Secret] ドロップダウンリストから、作成した Secret を選択します。

    [+ TLS 設定の追加] をクリックして、複数の TLS 設定を構成します。

    詳細については、「暗号化通信のための HTTPS 証明書の設定」をご参照ください。

    この例では TLS は不要なため、[TLS 設定] を無効にします。

    詳細設定

    • 段階的リリース段階的リリーススイッチをオンにします。リクエストヘッダー、Cookie、および重みに基づいて段階的リリースルールを設定できます。

      説明

      リクエストヘッダー、Cookie、または重みのルールのいずれか 1 つのみを設定できます。複数のルールが同時に設定された場合、リクエストヘッダー、Cookie、重みの順で照合されます。

      • リクエストヘッダーによる:リクエストヘッダーに基づいてトラフィックを分割します。これを設定すると、alb.ingress.kubernetes.io/canary-by-header および alb.ingress.kubernetes.io/canary-by-header-value アノテーションが追加されます。

      • Cookie による:Cookie に基づいてトラフィックを分割します。これを設定すると、alb.ingress.kubernetes.io/canary-by-cookie アノテーションが追加されます。

      • 重みによる:指定されたサービスへのリクエストの割合を設定します。値は 0 から 100 までの整数でなければなりません。これを設定すると、alb.ingress.kubernetes.io/canary-weight アノテーションが追加されます。

    • プロトコルHTTPS および gRPC プロトコルを使用するバックエンドサービスをサポートします。これを設定すると、alb.ingress.kubernetes.io/backend-protocol アノテーションが追加されます。

    • パスの書き換え:クライアントリクエストのパスは、リクエストがバックエンドサービスに送信される前に書き換えられます。これを設定すると、alb.ingress.kubernetes.io/rewrite-target アノテーションが追加されます。

    この例ではこれらは不要なため、段階的リリースを無効にし、デフォルトのプロトコルとパスの書き換えを維持します。

    カスタム転送ルール

    インバウンドトラフィックのきめ細かい管理のために、カスタム転送ルールを有効にします。

    説明

    1 つの転送ルールには最大 10 個の条件エントリを含めることができます。

    • [転送条件] ドロップダウンリストから、次のいずれかを選択します。

      • [ドメイン名]

        リクエストドメイン名に一致します。複数のドメイン名が設定されている場合、それらは論理 OR で結合されます。設定すると、アノテーション alb.ingress.kubernetes.io/conditions.host-example が追加されます。

      • [パス]

        リクエストパスに一致します。複数のパスが設定されている場合、それらは論理 OR で結合されます。設定すると、アノテーション alb.ingress.kubernetes.io/conditions.path-example が追加されます。

      • [HTTP ヘッダー]

        リクエストヘッダーをキーと値のペアとして照合します。例:[キー]headername[値]headervalue1。複数のヘッダー値が設定されている場合、それらは論理 OR で結合されます。設定すると、アノテーション alb.ingress.kubernetes.io/conditions.http-header-example が追加されます。

    • [転送アクション] ドロップダウンリストから、次のいずれかを選択します。

      • [転送先]

        複数のバックエンドサーバーグループに転送します。[サービス名] でターゲットサービスを選択します。[ポート] でターゲットポート番号を選択します。次に、カスタムの重み値を設定します。

        説明

        [転送先] を選択した場合、ルールの [パスのマッピング] を設定する必要はありません。

      • [固定レスポンスを返す]

        ALB がクライアントに返す固定レスポンスを設定します。レスポンスステータスコード、ボディコンテンツ、およびコンテンツタイプを設定できます。必要に応じて、[レスポンスステータスコード][レスポンスボディタイプ (任意)]、および [レスポンスボディ (任意)] を設定します。

        レスポンスボディタイプ

        • text/plain:プレーンテキストのコンテンツタイプ。

        • text/css:CSS コンテンツ。

        • text/html:HTML コンテンツ。

        • application/javascript:JavaScript コンテンツ。

        • application/json:JSON コンテンツタイプ。

    カスタム転送ルールは、さまざまな転送条件とアクションをサポートします。ドメイン名、パス、HTTP ヘッダーに基づいて転送条件を設定し、サービスへの転送や固定レスポンスの返却などの転送アクションを設定します。「ALB Ingress のカスタム転送ルールの設定」をご参照ください。

    この例では不要なため、カスタム転送ルールを無効にします。

    アノテーション

    カスタムのアノテーション名と値を指定するか、アノテーションを選択または検索して設定できます。Ingress アノテーションの詳細については、「アノテーション」をご参照ください。

    この例ではアノテーションは不要なため、設定は必要ありません。

    ラベル

    ラベルは、Ingress に対応するタグを追加してその特性を示すために使用されます。

    この例ではラベルは不要なため、設定は必要ありません。

  4. 設定が完了したら、[Ingress の作成] ダイアログボックスの左下にある [OK] をクリックします。

  5. Ingress が作成されたことを確認します。

    1. 左側のナビゲーションウィンドウで、[ネットワーク] > [Ingress] を選択します。cafe-ingress という名前の Ingress がデプロイされていることを確認します。

    2. cafe-ingress[エンドポイント] 列で、エンドポイント情報を表示します。

kubectl

  1. Ingress を作成するために、次の内容を `cafe-ingress.yaml` という名前のファイルに作成します。

    YAML 設定のリファレンス

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: cafe-ingress 
    spec:
      ingressClassName: alb
      rules:
       - host: demo.domain.ingress.top
         http:
          paths:
          # コンテキストパスを設定
          - path: /tea
            pathType: ImplementationSpecific
            backend:
              service:
                name: tea-svc
                port:
                  number: 80
          # コンテキストパスを設定
          - path: /coffee
            pathType: ImplementationSpecific
            backend:
              service:
                name: coffee-svc
                port: 
                  number: 80

    調整可能なパラメーターは次の表のとおりです。

    パラメーター

    必須

    説明

    metadata.name

    はい

    Ingress の名前。

    説明

    Ingress の名前はクラスター内で一意である必要があります。Ingress を作成する際は、名前の競合を避けるために名前が一意であることを確認してください。

    spec.ingressClassName

    はい

    関連付けられた IngressClass の名前。

    spec.rules.host

    いいえ

    HTTP ヘッダーの `Host` フィールドからのドメイン名。これをカスタムドメイン名に設定します。

    ブラウザで「http://demo.domain.ingress.top」などのカスタムドメイン名にアクセスすると、ブラウザは自動的に「Host: demo.domain.ingress.top」ヘッダーを HTTP リクエストに追加します。これにより、サーバーはヘッダーからターゲットのホスト名を識別できます。Kubernetes では、Ingress ルールの `host` フィールドがリクエストの `Host` ヘッダーと照合されます。一致が見つかると、Ingress ルールはリクエストを対応するバックエンドサービスにルーティングします。

    説明
    • ここでカスタムドメイン名を設定する場合、そのドメイン名が ICP 登録を取得していることを確認してください。そうでない場合、ドメイン名の名前解決に失敗する可能性があります。詳細については、「ICP 登録プロセス」をご参照ください。

    • これを設定しない場合、Ingress ルールは Ingress Controller に到達するすべてのリクエストに一致します。

    spec.rules.http.paths.path

    はい

    転送パスの URL。

    spec.rules.http.paths.pathType

    はい

    URL の一致ルール。詳細については、「URL パスに基づくリクエストの転送」をご参照ください。

    spec.rules.http.paths.backend.service.name

    はい

    以前に作成した Service の名前を入力します。

    spec.rules.http.paths.backend.service.port.number

    はい

    以前に作成した Service のサービスポート番号を入力します。

    このポート番号の設定は、バックエンドサービスへのルーティング時に使用されるポートを決定するため重要です。リクエストがバックエンドサービスに適切にルーティングされ、処理されるように、ポート番号が正しく設定されていることを確認してください。

  2. 次のコマンドを実行して、coffee および tea サービスを公開するドメイン名と path を設定します。

    kubectl apply -f cafe-ingress.yaml

    期待される出力:

    ingress.networking.k8s.io/cafe-ingress created
  3. (任意) 次のコマンドを実行して、ALB インスタンスの DNS アドレスを取得します。

    kubectl get ingress

    期待される出力:

    NAME           CLASS    HOSTS                         ADDRESS                                               PORTS   AGE
    cafe-ingress   alb      demo.domain.ingress.top       alb-m551oo2zn63yov****.cn-hangzhou.alb.aliyuncs.com   80      50s

(任意) ステップ 5:ドメイン名の名前解決の設定

Ingress の作成時に spec.rules.host フィールドをカスタムドメイン名に設定した場合、ドメイン名を ALB の DNS 名に解決するための CNAME レコードを追加します。その後、カスタムドメイン名を通じてサービスにアクセスします。

  1. Container Service for Kubernetes (ACK) コンソールにログインします。

  2. クラスターの名前をクリックして、クラスター管理ページを開きます。

  3. 左側のナビゲーションウィンドウで、[ネットワーク] > [Ingress] を選択します。

  4. cafe-ingress[エンドポイント] 列で、対応する DNS 名をコピーします。

  5. 次の手順を実行して、CNAME レコードを追加します。

    1. Alibaba Cloud DNS コンソールにログインします。

    2. [ドメイン名] ページで、[ドメイン名の追加] をクリックします。

    3. [ドメイン名の追加] ダイアログボックスで、ホストドメイン名を入力し、[OK] をクリックします。

      重要

      ホストドメイン名は TXT レコードの検証に合格している必要があります。

    4. 対象のドメイン名の [操作] 列で、[設定] をクリックします。

    5. [設定] ページで、[レコードの追加] をクリックします。

    6. [レコードの追加] パネルで、次の情報を設定して CNAME 設定を完了し、[OK] をクリックします。

      設定

      説明

      タイプ

      ドロップダウンリストから [CNAME] を選択します。

      ホスト

      ドメイン名のプレフィックス。例:www

      解決リクエストソース

      デフォルトを選択します。

      ドメイン名に対応する CNAME アドレスを入力します。これは前のステップでコピーした DNS 名です。

      TTL

      Time to Live (TTL) は、DNS サーバー上の DNS レコードのキャッシュ時間です。このトピックではデフォルト値を使用します。

ステップ 6:トラフィック転送のテスト

ブラウザでテストドメイン名と URL パスを入力して、トラフィックが正しく転送されるかテストします。

説明
  • カスタムドメイン名を設定した場合、テストドメイン名はカスタムドメイン名です。

  • カスタムドメイン名を設定しなかった場合、テストドメイン名は cafe-ingress のエンドポイント DNS 名です。

この例では、テストドメイン名として demo.domain.ingress.top を使用します。

  1. ブラウザで demo.domain.ingress.top/coffee と入力します。coffee-svc に対応するバックエンドサービスのインターフェイスが返されます。image

  2. ブラウザで demo.domain.ingress.top/tea と入力します。tea-svc に対応するバックエンドサービスのインターフェイスが返されます。image

参考文献