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

Container Compute Service:Knative でのトラフィックルーティングに ALB Ingress を使用する

最終更新日:Dec 28, 2024

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

前提条件

ステップ 1: ALB Ingress をデプロイする

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

ALB Ingress のデプロイ時に ALB インスタンスが自動的に作成される

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

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

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

  2. クラスタ ページで、管理するクラスタを見つけて、その ID をクリックします。クラスタ詳細ページの左側のナビゲーションペインで、アプリケーション > Knative を選択します。

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

    vSwitch の作成方法の詳細については、vSwitch を作成および管理する を参照してください。

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

Knative がデプロイされている場合は、Knative の構成ファイルを変更して ALB Ingress を指定できます。Knative の使用方法の詳細については、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 構成を適用します。 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 をバインドします。
      ...
    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.dev を変更し、albconfig を既存の ALB に設定します。この場合、vswitch-ids を構成する必要はありません。

    apiVersion: v1
    data:
      ...
      ingress.class: alb.ingress.networking.knative.dev # ALB Ingress コントローラーを指定します。
      albconfig: alb-dev-albconfig # 既存の AlbConfig の名前を指定します。既存の ALB Ingress を使用する場合は、このパラメーターを指定する必要があります。
      ...
    kind: ConfigMap
    metadata:
      name: config-network
      namespace: knative-serving
      ...

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

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

  2. クラスタ ページで、管理するクラスタを見つけ、その ID をクリックします。クラスタ詳細ページの左側のナビゲーションペインで、アプリケーション > 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 ダッシュボードの詳細については、Knative ダッシュボードの表示を参照してください。

image.png

参照資料