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

Container Service for Kubernetes:ALB Ingress を使用して Knative のトラフィックをルーティングする

最終更新日:Nov 11, 2025

大規模な Web アプリケーション、詳細なトラフィックルーティングや自動スケーリングを必要とするアプリケーション、および HTTP/HTTPS リクエストに複雑なルーティング要件を持つアプリケーションの Knative サービスのトラフィックをルーティングするには、Application Load Balancer (ALB) Ingress を使用することをお勧めします。ALB はアプリケーション層で実行され、HTTP、HTTPS、Quick UDP Internet Connections (QUIC) などのプロトコルをサポートします。ALB は高い弾力性を備え、レイヤー 7 で大量のネットワークトラフィックを処理できます。ALB Ingress は、自動スケーリングと複数のカナリアリリースルールをサポートする、フルマネージドで O&M フリーのゲートウェイです。

前提条件

  • クラスターに Knative がデプロイされていること。詳細については、「」をご参照ください。Knative のデプロイと管理

  • ALB Ingress コントローラーがインストールされていること。詳細については、「ALB Ingress コントローラーの管理」をご参照ください。

  • Flannel ネットワークプラグインを使用するクラスターでは、Knative サービスは NodePort サービスタイプを介して公開する必要があります。この動作を有効にするには、config-network ConfigMap にパラメーター eni: false を追加します。

    1. config-network.yaml を開いて編集します。

      kubectl -n knative-serving edit configmap config-network
    2. 開いたエディターで、以下に示すように data セクションの下に eni: false 行を追加します。

      apiVersion: v1
      data:
        ...
        eni: false  # この構成を追加します。
        ...
      kind: ConfigMap
      metadata:
        name: config-network
        namespace: knative-serving
        ...

ステップ 1: ALB Ingress のデプロイ

Knative で ALB Ingress をデプロイするときに、Knative によって自動的に作成された ALB インスタンスを使用するか、既存の ALB インスタンスを指定できます。

方法 1: ALB Ingress のデプロイ時に ALB インスタンスを自動的に作成する

Knative のデプロイ中に ALB Ingress を構成できます。Knative がデプロイされている場合は、Knative の構成ファイルを変更して ALB Ingress を構成できます。

Knative のデプロイ時に ALB Ingress を構成する

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

  2. クラスター ページで、目的のクラスターを見つけてその名前をクリックします。左側のペインで、[アプリケーション] > [Knative] を選択します。

  3. [コンポーネント] タブで、[Knative のデプロイ] をクリックします。[Knative のデプロイ] ページで、[ALB] を選択し、少なくとも 2 つの vSwitch を選択します。ページ上の指示に従って Knative をデプロイします。

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

Knative の構成ファイルを変更して ALB Ingress を構成する

Knative がデプロイされている場合は、Knative の構成ファイルを変更して ALB Ingress を指定できます。Knative のデプロイ方法の詳細については、「ACK クラスターに Knative をデプロイする」および「ACK Serverless クラスターに Knative をデプロイする」をご参照ください。

  1. 次のコマンドを実行して、config-network.yaml ファイルを変更します。

    kubectl -n knative-serving edit configmap config-network
  2. 次のテンプレートを参照して、config-network.yaml ファイルを変更して保存します。

    ingress.class: alb.ingress.networking.knative.dev を変更し、vswitch-ids パラメーターを構成して、config-network ファイルを保存して終了します。ALB Ingress をサポートするリージョンとゾーンの詳細については、「リージョンとゾーン」をご参照ください。

    apiVersion: v1
    data:
      ...
      ingress.class: alb.ingress.networking.knative.dev # ALB Ingress コントローラーを指定します。
      vswitch-ids: vsw-uf6kbvc7mccqia2pi****,vsw-uf66scyuw2fncpn38**** # 異なるゾーンで作成した 2 つの vSwitch の ID に置き換えます。ALB インスタンスを作成すると、システムは自動的に vSwitch をバインドします。
      intranet: "true" # 内部 ALB インスタンスを作成します。
      ...
    kind: ConfigMap
    metadata:
      name: config-network
      namespace: knative-serving
      ...

方法 2: 既存の ALB インスタンスを使用して ALB Ingress を構成する

Knative の構成ファイルを変更して、既存の ALB インスタンスを使用して ALB Ingress を構成できます。

  1. 次のコマンドを実行して、config-network.yaml ファイルを変更します。

    kubectl -n knative-serving edit configmap config-network
  2. 次のテンプレートに基づいて、config-network.yaml ファイルを変更して保存します。

    構成ファイルで ingress.class: alb.ingress.networking.knative.dev を変更し、albconfig を既存の ALB Ingress に設定します。vswitch-ids パラメーターを構成する必要はありません。

    apiVersion: v1
    data:
      ...
      ingress.class: alb.ingress.networking.knative.dev # ALB Ingress コントローラーを指定します。
      albconfig: alb-dev-albconfig # 再利用する既存のパブリック向け ALB インスタンスの名前を指定します。
      ...
    kind: ConfigMap
    metadata:
      name: config-network
      namespace: knative-serving
      ...

ステップ 2: ALB Ingress を使用してサービスにアクセスする

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

  2. クラスター ページで、目的のクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、[アプリケーション] > [Knative] を選択します。

  3. [Knative] ページの [サービス] タブで、[名前空間] ドロップダウンリストから default を選択し、[テンプレートから作成] をクリックし、次の YAML コンテンツをコードエディターにコピーしてから、[作成] をクリックします

    このテンプレートは、helloworld-go という名前のサービスを作成します。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: helloworld-go
    spec:
      template:
        spec:
          containers:
          - image: registry-vpc.cn-beijing.aliyuncs.com/knative-sample/helloworld-go:73fbdd56 # サンプルリージョンを実際のリージョンに置き換えます。
            env:
            - name: TARGET
              value: "Knative"
  4. [サービス] ページで、helloworld-go サービスのドメイン名とゲートウェイ IP アドレスを、それぞれ [デフォルトドメイン] 列と [ゲートウェイ] 列に記録します。

  5. 次のコマンドを実行して、helloworld-go という名前のサービスにアクセスします。

    curl -H "Host: helloworld-go.default.example.com" http://alb-******.cn-beijing.alb.aliyuncs.com	 # IP アドレスとドメイン名を実際の値に置き換えます。

    期待される出力:

    Hello Knative!

(オプション) ステップ 3: Knative モニタリングダッシュボードの表示

Knative は、すぐに使用できるモニタリング機能を提供します。[Knative] ページで、[モニタリングダッシュボード] タブをクリックして、指定したサービスのモニタリングデータを表示します。Knative モニタリングダッシュボードを有効にする方法の詳細については、「Knative モニタリングダッシュボードの表示」をご参照ください。

関連ステップ

HTTPS 経由のアクセスを構成する

Transport Layer Security (TLS) を使用して Knative サービスを保護するには、ALBConfig で証明書を指定します。TLS アクセスは、注釈 knative.k8s.alibabacloud/tls: "true" を使用して Knative サービスで有効にできます。例:

説明

証明書を Secret として管理する方法の詳細については、「ステップ 2: Secret として管理される証明書を作成する」をご参照ください。。

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: helloworld
  namespace: default
  annotations:
    knative.k8s.alibabacloud/tls: "true"
spec:
  template:
    spec:
      containers:
      - image: registry-vpc.cn-shenzhen.aliyuncs.com/knative-sample/helloworld-go:73fbdd56 # サンプルリージョンを実際のリージョンに置き換えます。
        env:
        - name: TARGET
          value: "Knative"

次のコマンドを実行して HTTPS サービスにアクセスします。

curl -H "Host: helloworld.default.knative.top" https://alb-ppcate4ox6ge9m1wik.cn-shenzhen.alb.aliyuncs.com -k

期待される出力:

Hello Knative!

HTTP リクエストを HTTPS ポート 443 にリダイレクトする

注釈 networking.knative.dev/http-protocol を使用して、Knative サービスで HTTP リクエストを HTTPS ポート 443 にリダイレクトできます。例:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: helloworld-go annotations: networking.knative.dev/http-protocol: redirected spec: template: spec: containers: - image: registry-vpc.cn-beijing.aliyuncs.com/knative-sample/helloworld-go:73fbdd56 # サンプルリージョンを実際のリージョンに置き換えます。 env: - name: TARGET value: "Knative"

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: helloworld-go
  annotations:
    networking.knative.dev/http-protocol: redirected
spec:
  template:
    spec:
      containers:
      - image: registry-vpc.cn-beijing.aliyuncs.com/knative-sample/helloworld-go:73fbdd56 # サンプルリージョンを実際のリージョンに置き換えてください。
        env:
        - name: TARGET
          value: "Knative"

CNAME レコードの追加

ネットワークリソースへのアクセスを容易にするために、CNAME レコードを使用してカスタムドメイン名を ALB インスタンスのドメイン名にマッピングできます。詳細については、「ALB インスタンスに CNAME レコードを追加する」をご参照ください。

リファレンス