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

Server Load Balancer:ACK での ALB Ingress の使用ガイド

最終更新日:Nov 09, 2025

ALB Ingress は Alibaba Cloud Application Load Balancer (ALB) を使用して、強力なトラフィック管理機能を提供します。Nginx Ingress と互換性があり、複雑なビジネスルーティング、証明書の自動検出、HTTP、HTTPS、QUIC プロトコルをサポートしています。ALB Ingress は、高い弾力性を必要とし、大量のレイヤー 7 トラフィックを処理する必要があるクラウドネイティブアプリケーションに最適です。このトピックでは、ACK クラスターにサービスをデプロイし、ALB Ingress を介してサービスにアクセスする方法について説明します。

背景情報

以下の概念は ALB Ingress に関連しています。

  • ALB Ingress Controller: Ingress Controller は、Ingress リソースを管理する Kubernetes のコンポーネントです。クラスター内のエントリポイントとして機能し、外部トラフィックを適切なサービスにルーティングします。ALB Ingress Controller は、API サーバーから Ingress リソースの変更を取得し、AlbConfig を動的に生成し、ALB インスタンス、リスナー、転送ルール、およびバックエンドサーバーグループを作成します。

  • AlbConfig CRD: カスタムリソース定義 (CRD) は、Kubernetes API を拡張し、カスタムリソースタイプを定義できるようにする Kubernetes のメカニズムです。1 つの AlbConfig が 1 つの ALB インスタンスに対応します。

  • Ingress Class: Ingress Class は、Ingress Controller のタイプまたは識別子を定義する Kubernetes Ingress リソースの属性です。これにより、クラスター内で複数の Ingress Controller を使用し、各 Ingress リソースに特定のコントローラーを指定できます。

  • Ingress: Ingress は、外部トラフィックのルーティングとアクセスのルールを定義する Kubernetes のリソースオブジェクトです。Ingress Controller は、これらのルールに基づいてトラフィックを転送します。アノテーションを使用して ALB Ingress の転送ルールを構成できます。構成が完了すると、HTTP/HTTPS リクエストは、構成された転送ルールに基づいて対応するサービスに転送されます。

  • サービス: Kubernetes におけるサービスとは、同じ論理的な機能を持つ Pod のグループを定義し、そのグループに安定した仮想 IP アドレスとポートを提供する、抽象的なリソースオブジェクトです。

    サービスは、アプリケーションに安定したエントリーポイントを提供します。これにより、他のアプリケーションやサービスは、特定の Pod の IP アドレスとポートを知らなくても、サービスの仮想 IP アドレスとポートにアクセスすることでバックエンド Pod と通信できます。サービスは、実際のバックエンドサービスの抽象化です。1 つのサービスで、複数の同一のバックエンドサービスを表すことができます。

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

ALB Ingress

制限

  • Flannel ネットワークプラグインを使用する場合、ALB Ingress のバックエンドサービスは NodePort タイプと LoadBalancer タイプのみをサポートします。

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

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

シナリオ例

このチュートリアルでは、同じドメイン名の下で異なる URL パスにトラフィックを転送するように ALB Ingress を構成する方法の例を示します。この例では、Nginx を実行する 4 つの Pod のデプロイメントを使用します。

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

トラフィックの転送先

demo.domain.ingress.top/coffee

coffee サービス

demo.domain.ingress.top/tea

tea サービス

前提条件

ステップ 1: ALB Ingress Controller コンポーネントをインストールする

ALB Ingress を使用する前に、ALB Ingress Controller コンポーネントをインストールする必要があります。

クラスター作成時にコントローラーをインストールする

ACK マネージドクラスターまたはACK 専用クラスターを作成する際に、Ingress セクションで [ALB Ingress] を選択します。

[ゲートウェイソース][新規作成][既存]、または [なし] に設定できます。

インスタンスソース

説明

結果

(推奨) 作成

  • ネットワークタイプ: 要件に応じて、[パブリック] または [プライベート] の ALB インスタンスを作成できます。課金の詳細については、「ALB の課金ルール」をご参照ください。

  • VPC: デフォルト値はクラスターの VPC と同じです。

  • VSwitch: この VPC で Application Load Balancer (ALB) がサポートするゾーンに対応する vSwitch を表示します。異なるゾーンに 2 つの vSwitch を指定する必要があります。指定しない場合、利用可能な 2 つの vSwitch が自動的に選択されます。また、[VSwitch の作成] をクリックして新しい vSwitch を作成することもできます。

コントローラーは、alb という名前の AlbConfig と対応する IngressClass リソースを自動的に作成します。デフォルトでは、AlbConfig はポート 80 の HTTP リスナーで構成されています。リスナー拡張の詳細については、「HTTPS リスナーの作成」をご参照ください。

(推奨) 既存のものを使用

ドロップダウンリストから既存の ALB インスタンスを選択できます。Basic ALB インスタンスはサポートされていません。詳細については、「既存の ALB インスタンスを再利用する」をご参照ください。

(オプション) 今は作成しない

ALB Ingress Controller のみをインストールします。ALB インスタンスは作成されません。

重要

コントローラーは関連リソースを作成しません。手動で AlbConfig を作成し、IngressClass を作成する必要があります。

既存のクラスターにコントローラーをインストールする

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

  2. クラスター ページで、管理するクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、[アドオン] をクリックします。

  3. [アドオン] ページで、[ネットワーキング] タブをクリックします。ネットワーク セクションの [ALB Ingress Controller] カードで、右下隅にある インストール をクリックします。

  4. [ALB Ingress Controller のインストール] ダイアログボックスで、[ALB クラウドネイティブゲートウェイソース][新規作成][既存を使用]、または [作成しない] を選択し、[確認] をクリックします。

    インスタンスソース

    説明

    結果

    (推奨) 作成

    • ネットワークタイプ: 要件に応じて、[パブリック] または [プライベート] の ALB インスタンスを作成できます。課金の詳細については、「ALB の課金ルール」をご参照ください。

    • VPC: デフォルト値はクラスターの VPC と同じです。

    • VSwitch: この VPC で Application Load Balancer (ALB) がサポートするゾーンに対応する vSwitch を表示します。異なるゾーンに 2 つの vSwitch を指定する必要があります。指定しない場合、利用可能な 2 つの vSwitch が自動的に選択されます。また、[VSwitch の作成] をクリックして新しい vSwitch を作成することもできます。

    コントローラーは、alb という名前の AlbConfig と対応する IngressClass リソースを自動的に作成します。デフォルトでは、AlbConfig はポート 80 の HTTP リスナーで構成されています。リスナー拡張の詳細については、「HTTPS リスナーの作成」をご参照ください。

    (推奨) 既存のものを使用

    ドロップダウンリストから既存の ALB インスタンスを選択できます。Basic ALB インスタンスはサポートされていません。詳細については、「既存の ALB インスタンスを再利用する」をご参照ください。

    (オプション) 今は作成しない

    ALB Ingress Controller のみをインストールします。ALB インスタンスは作成されません。

    重要

    コントローラーは関連リソースを作成しません。手動で AlbConfig を作成し、IngressClass を作成する必要があります。

説明

ACK 専用クラスターで ALB Ingress を介してサービスにアクセスする場合は、サービスをデプロイする前に ALB Ingress Controller に権限を付与する必要があります。詳細については、「ACK 専用クラスターで ALB Ingress Controller にアクセス権限を付与する」をご参照ください。

ステップ 2: バックエンドサービスをデプロイする

コンソール

  1. ACK コンソールにログインします。

  2. クラスター ページで、管理するクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、ワークロード > 展開 を選択します。

  3. [YAML から作成] をクリックします。

    1. [サンプルテンプレート][カスタム] に設定します。

    2. [テンプレート] フィールドに、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: NodePort
      ---
      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: NodePort

  4. 構成が完了したら、[作成] をクリックします。リソースのステータスが [作成済み] であることを示すメッセージが表示されます。

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

    1. 左側のナビゲーションウィンドウで、[ワークロード] > [デプロイメント] を選択します。coffee と tea のデプロイメントが表示されます。

    2. 左側のナビゲーションウィンドウで、[ネットワーク] > [サービス] を選択します。coffee-svc と tea-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: NodePort
    ---
    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: NodePort
  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                           1/2     2            1           2m26s
      tea                              1/1     1            1           2m26s
    2. 次のコマンドを実行して、サービスのステータスを確認します。

      kubectl get svc

      予想される出力:

      NAME                          TYPE           CLUSTER-IP       EXTERNAL-IP           PORT(S)                 AGE
      coffee-svc                    NodePort       172.16.XX.XX     <none>                80:32056/TCP            9m38s
      tea-svc                       NodePort       172.16.XX.XX     <none>                80:31696/TCP            9m38s

ステップ 3: AlbConfig を作成する

説明

ステップ 1: ALB Ingress Controller コンポーネントをインストールする」で [ALB クラウドネイティブゲートウェイインスタンスソース] パラメーターに [作成] または [既存を使用] を選択した場合、コントローラーは AlbConfig リソースと "alb" という名前の IngressClass リソースを自動的に作成します。このステップはスキップできます。

コンソール

  1. ACK コンソールにログインします。

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

  3. [カスタムリソース] ページで、[CustomResourceDefinition] タブをクリックし、[YAML から作成] をクリックします。

    1. [サンプルテンプレート][カスタム] に設定します。

    2. [テンプレート] フィールドに YAML 構成コードを入力します。

      YAML 設定のサンプル

      apiVersion: alibabacloud.com/v1
      kind: AlbConfig
      metadata:
        name: alb
      spec:
        config:
          name: alb-test
          addressType: Internet
          zoneMappings:
          - vSwitchId: vsw-uf6ccg2a9g71hx8go****
          - vSwitchId: vsw-uf6nun9tql5t8nh15****
        listeners:
          - port: 80
            protocol: HTTP

      次の表に、構成可能なパラメーターを示します。

      パラメーター

      必須

      説明

      metadata.name

      はい

      AlbConfig の名前。

      説明

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

      spec.config.name

      いいえ

      ALB インスタンスの名前。

      spec.config.addressType

      いいえ

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

      • Internet (デフォルト): ALB インスタンスはインターネットに接続され、インターネット経由でサービスを提供します。

        説明

        インターネットに接続された ALB インスタンスは、EIP (Elastic IP Address) に関連付けられることでサービスを提供します。インターネットに接続された ALB インスタンスを使用する場合、EIP のインスタンス料金と帯域幅またはデータ転送の料金が請求されます。詳細については、「従量課金」をご参照ください。

      • Intranet: ALB インスタンスは内部向けで、VPC 内でサービスを提供します。インターネットからはアクセスできません。

      spec.config.zoneMappings

      はい

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

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

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

      spec.listeners

      いいえ

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

      リスナーは、トラフィックがロードバランサーにどのように入るかを定義します。この構成を維持することをお勧めします。そうしないと、ALB Ingress を使用するためにリスナーを別途作成する必要があります。

  4. 構成が完了したら、[作成] をクリックします。[作成済み] メッセージが表示されます。

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

    1. ALB コンソールにログインします。

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

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

kubectl

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

    YAML 設定のサンプル

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb
    spec:
      config:
        name: alb-test
        addressType: Internet
        zoneMappings:
        - vSwitchId: vsw-uf6ccg2a9g71hx8go****
        - vSwitchId: vsw-uf6nun9tql5t8nh15****
      listeners:
        - port: 80
          protocol: HTTP

    次の表に、構成可能なパラメーターを示します。

    パラメーター

    必須

    説明

    metadata.name

    はい

    AlbConfig の名前。

    説明

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

    spec.config.name

    いいえ

    ALB インスタンスの名前。

    spec.config.addressType

    いいえ

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

    • Internet (デフォルト): ALB インスタンスはインターネットに接続され、インターネット経由でサービスを提供します。

      説明

      インターネットに接続された ALB インスタンスは、EIP に関連付けられることでサービスを提供します。インターネットに接続された ALB インスタンスを使用する場合、EIP のインスタンス料金と帯域幅またはデータ転送の料金が請求されます。詳細については、「従量課金」をご参照ください。

    • Intranet: ALB インスタンスは内部向けで、VPC 内でサービスを提供します。インターネットからはアクセスできません。

    spec.config.zoneMappings

    はい

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

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

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

    spec.listeners

    いいえ

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

    リスナーは、トラフィックがロードバランサーにどのように入るかを定義します。この構成を維持することをお勧めします。そうしないと、ALB Ingress を使用するためにリスナーを別途作成する必要があります。

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

    kubectl apply -f alb-test.yaml

    予想される出力:

    albconfig.alibabacloud.com/alb-demo created

ステップ 4: IngressClass を作成する

IngressClass と AlbConfig の間に 1 対 1 のマッピングを作成することをお勧めします。

説明

ステップ 1: ALB Ingress Controller コンポーネントをインストールする」で [ALB クラウドネイティブゲートウェイインスタンスソース] パラメーターに [作成] または [既存を使用] を選択した場合、コントローラーは AlbConfig リソースと "alb" という名前の IngressClass リソースを自動的に作成します。このステップはスキップできます。

コンソール

  1. ACK コンソールにログインします。

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

  3. [カスタムリソース] ページで、[CustomResourceDefinition] タブをクリックし、[YAML から作成] をクリックします。

    1. [サンプルテンプレート][カスタム] に設定します。

    2. [テンプレート] フィールドに、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

      次の表に、構成可能なパラメーターを示します。

      パラメーター

      必須

      説明

      metadata.name

      はい

      IngressClass の名前。

      説明

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

      spec.parameters.name

      はい

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

  4. 構成が完了したら、[作成] をクリックします。リソースのステータスが [作成済み] であることを確認するメッセージが表示されます。

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

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

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

    3. [API グループ] 検索ボックスに [IngressClass] と入力します。検索結果で、対応する IngressClass が作成されたことが確認されます。

kubectl

  1. alb.yaml という名前のファイルを作成し、次の内容をファイルにコピーして IngressClass を作成します。

    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

    次の表に、構成可能なパラメーターを示します。

    パラメーター

    必須

    説明

    metadata.name

    はい

    IngressClass の名前。

    説明

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

    spec.parameters.name

    はい

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

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

      kubectl apply -f alb.yaml

    予想される出力:

    ingressclass.networking.k8s.io/alb created

ステップ 5: Ingress を作成する

コンソール

  1. ACK コンソールにログインします。

  2. クラスター ページで、目的のクラスターを見つけてその名前をクリックします。左側のペインで、[ネットワーク] > [Ingress] を選択します。

  3. [YAML から作成] をクリックします。

    1. [サンプルテンプレート][カスタム] に設定します。

    2. [テンプレート] フィールドに、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

      はい

      前に作成したサービスの名前を入力します。

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

      はい

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

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

  4. 構成が完了したら、[作成] をクリックします。リソースが [作成済み] であることを確認するメッセージが表示されます。

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

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

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

kubectl

  1. cafe-ingress.yaml という名前のファイルを作成し、次の内容をファイルにコピーして Ingress を作成します。

    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

    はい

    前に作成したサービスの名前を入力します。

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

    はい

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

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

  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

ステップ 6: ドメイン名の名前解決を構成する

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

  1. ACK コンソールにログインします。

  2. クラスターの名前をクリックして、クラスターの詳細ページに移動します。

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

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

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

    説明

    ドメイン名が Alibaba Cloud に登録されていない場合は、DNS レコードを追加する前に、まずドメイン名を Alibaba Cloud DNS コンソールに追加する必要があります。詳細については、「ドメイン名の管理」をご参照ください。ドメイン名が Alibaba Cloud に登録されている場合は、次の手順を実行できます。

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

    2. [権威ドメイン名] ページで、対象のドメイン名を見つけ、[操作] 列の [DNS 設定] をクリックします。

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

    4. [レコードの追加] パネルで、次のパラメーターを設定して CNAME レコードを追加し、[OK] をクリックします。

      構成

      説明

      レコードタイプ

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

      ホスト

      ドメイン名のプレフィックス。このトピックでは、@ と入力します。

      説明

      ルートドメインをマッピングするには、ホストを @ に設定します。

      リクエストソース

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

      レコード値

      CNAME アドレスを入力します。これは、コピーした ALB インスタンスの DNS 名です。

      TTL

      Time to Live (TTL) は、DNS レコードが DNS サーバにキャッシュされる期間を指定します。このトピックでは、デフォルト値が使用されます。

ステップ 7: トラフィック転送をテストする

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

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

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

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

参考