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

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

最終更新日:Dec 14, 2024

大規模なwebアプリケーション、きめ細かいトラフィックルーティングまたは自動スケーリングを必要とするアプリケーション、およびHTTP/HTTPS要求に対して複雑なルーティング要件を持つアプリケーションのKnativeサービスのトラフィックをルーティングするには、Application Load Balancer (ALB) Ingressを使用することを推奨します。 ALBはアプリケーション層で実行され、HTTP、HTTPS、クイックUDPインターネット接続 (QUIC) などのプロトコルをサポートします。 ALBは高い弾力性を提供し、レイヤー7で大量のネットワークトラフィックを処理できます。 ALB Ingressは、自動スケーリングと複数のカナリアリリースルールをサポートする、完全マネージド型でO&Mフリーのゲートウェイです。

前提条件

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

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

ALB Ingressをデプロイすると、ALBインスタンスが自動的に作成されます

Knativeのデプロイ中にALB Ingressを設定できます。 Knativeがデプロイされている場合、ALB Ingressを設定するためにKnativeの設定ファイルを変更できます。

KnativeをデプロイするときのALB Ingressの設定

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

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、[アプリケーション] > [ネイティブ] を選択します。

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

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

ALB Ingressを設定するためにKnativeの設定ファイルを変更する

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

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

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

    ingress.class: alb.ingress.networking.knative.de vを変更し、vswitch-idsパラメーターを設定し、config-networkファイルを保存して終了します。 ALB Ingressをサポートするリージョンとゾーンの詳細については、ALBが利用可能なリージョンとゾーン.

    apiVersion: v1
    data:
      ...
      ingress.class: alb.ingress.networking.knative.dev # Specify the ALB Ingress controller. 
      vswitch-ids: vsw-uf6kbvc7mccqia2pi****,vsw-uf66scyuw2fncpn38**** # Replace with the IDs of the two vSwitches that you created in different zones. The system automatically binds the vSwitches when you create an ALB instance. 
      ...
    kind: ConfigMap
    metadata:
      name: config-network
      namespace: knative-serving
      ...

既存の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.de vを変更し、albconfigを既存のALB Ingressに設定します。 vswitch-idsパラメーターを設定する必要はありません。

    apiVersion: v1
    data:
      ...
      ingress.class: alb.ingress.networking.knative.dev # Specify the ALB Ingress controller. 
      albconfig: alb-dev-albconfig # Specify the name of an existing AlbConfig. You must specify this parameter if you use an existing ALB Ingress. 
      ...
    kind: ConfigMap
    metadata:
      name: config-network
      namespace: knative-serving
      ...

手順2: ALB Ingressを使用してサービスにアクセスする

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

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、[アプリケーション] > [ネイティブ] を選択します。

  3. Knativeページの [サービス] タブで、[名前空間] ドロップダウンリストから [デフォルト] を選択し、[テンプレートから作成] をクリックし、次の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	 # Replace the IP address and domain name with the actual values.

    期待される出力:

    Hello Knative!

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

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

関連ドキュメント