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

Container Service for Kubernetes:Knative で ALB ゲートウェイを使用してトラフィックをルーティングする

最終更新日:Nov 27, 2025

大規模な Web アプリケーション、きめ細かなトラフィックルーティングや自動的な弾性スケーリングを必要とするアプリケーション、HTTP/HTTPS リクエストのルーティング要件が複雑なアプリケーションでは、Application Load Balancer (ALB) ゲートウェイを使用して Knative サービスのトラフィックをルーティングできます。ALB は、HTTP、HTTPS、QUIC などのアプリケーション層プロトコル向けに設計されたロードバランシングサービスです。ALB は高い弾力性を提供し、大量のレイヤー 7 トラフィックを処理できます。ALB ゲートウェイは完全マネージド型のゲートウェイであり、O&M は不要です。自動的な弾性スケーリングを提供し、複数のカナリアリリース ポリシーをサポートします。

前提条件

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

  • クラスターで Flannel ネットワークプラグインを使用している場合は、Knative の Kubernetes サービスを NodePort サービスとして設定する必要があります。そのためには、config-network ConfigMap に eni: false パラメーターを追加します。

    1. config-network.yaml ファイルを編集します。

      kubectl -n knative-serving edit configmap config-network
    2. ファイルを以下のように変更し、変更を保存します。

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

ステップ 1:ALB ゲートウェイのデプロイ

Knative で ALB ゲートウェイをデプロイする際、Knative によって自動的に作成される ALB インスタンスを使用するか、既存の ALB インスタンスを指定することができます。

方法 1:ALB ゲートウェイのデプロイ時に ALB インスタンスを自動的に作成する

Knative をデプロイする際に ALB ゲートウェイを設定できます。すでに Knative をデプロイしている場合は、Knative 設定ファイルを変更することで ALB ゲートウェイを設定できます。

Knative のデプロイ時に ALB ゲートウェイを設定する

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

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

  3. [コンポーネント管理] タブで、[ワンクリックで Knative をデプロイ] をクリックします。[Knative のデプロイ] ページで、[ALB] サービスゲートウェイと少なくとも 2 つの vSwitch を選択し、画面の指示に従って Knative をデプロイします。

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

Knative 設定ファイルを変更して ALB ゲートウェイをデプロイする

既存の Knative デプロイメントの場合、Knative 設定ファイルを変更することで ALB ゲートウェイを設定できます。詳細については、「ACK クラスターでの Knative のデプロイ」または「Serverless Kubernetes (ASK) クラスターでの Knative のデプロイ」をご参照ください。

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

    kubectl -n knative-serving edit configmap config-network
  2. config-network.yaml ファイルを以下のように変更し、変更を保存します。

    ALB ゲートウェイを設定するには、config-network ファイルで ingress.class: alb.ingress.networking.knative.dev を変更し、vswitch-ids を設定してから、保存して終了します。ALB がサポートするリージョンとゾーンの詳細については、「ALB がサポートするリージョンとゾーン」をご参照ください。

    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 インスタンスを使用する

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

  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 インスタンスに設定します。vswitch-ids を構成する必要はありません。

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

ステップ 2:ALB ゲートウェイ経由でデプロイされたサービスへのアクセス

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

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

  3. [Knative] ページの [サービス管理] タブで、[名前空間][default] に設定し、[テンプレートから作成] をクリックし、次の YAML の例をテンプレートに貼り付けて、[作成] をクリックします。

    次の YAML の例では、helloworld-go という名前の Knative サービスを作成します。

    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 サービスを見つけ、[デフォルトドメイン] 列からドメイン名を取得し、[ゲートウェイ] 列からゲートウェイアドレスを取得します。

  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 モニタリングダッシュボードの表示」をご参照ください。

関連操作

HTTPS アクセスの設定

ALBConfig で証明書を指定し、knative.k8s.alibabacloud/tls: "true" アノテーションを使用して Knative サービスの Transport Layer Security (TLS) アクセスを有効にすることができます。次のコードに例を示します。

説明

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"

CNAME レコードの追加

ALB は、カスタムドメイン名を ALB インスタンスのパブリックサービスドメイン名にマッピングするための CNAME 解決をサポートしています。これにより、さまざまなネットワークリソースにアクセスできます。詳細については、「ALB の CNAME 解決の設定」をご参照ください。

参考資料