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

Container Service for Kubernetes:Knative のトラフィック分割に基づくサービスの段階的リリースを実行する

最終更新日:Dec 03, 2025

Knative は、異なる Revision 間のトラフィック分散を管理します。コンソールを使用して各 Revision のトラフィックの割合を定義し、サービスのトラフィックの 100% が新しいバージョンにルーティングされるまで、観察に基づいて割合を微調整できます。このプロセスにより、段階的リリースが完了します。

前提条件

ステップ 1: Knative サービスを作成する

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

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

  3. [Knative] ページの [サービス管理] タブで、[名前空間]default に設定します。[サービスの作成] をクリックします。次に、[作成] をクリックして、helloworld-go という名前のサービスをデプロイします。

    次の表に、主要な設定項目を示します。設定項目の詳細については、「Knative サービスをデプロイする」をご参照ください。

    設定項目

    説明

    サービス名

    サービスのカスタム名。この例では、サービス名は helloworld-go です。

    イメージ名

    [イメージの選択] をクリックします。表示されるダイアログボックスで、必要なイメージとそのバージョンを選択し、[OK] をクリックします。

    非公開の レジストリ を入力することもできます。フォーマットは domainname/namespace/imagename:tag です。例: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:73fbdd56

    アクセスプロトコル

    HTTPgRPC がサポートされています。

    説明

    gRPC は、HTTP/2 プロトコル標準と Protocol Buffers (protobuf) シリアル化プロトコルに基づいて開発されており、さまざまなプログラミング言語をサポートしています。HTTP と比較して、HTTP/2 はデータの送受信においてよりコンパクトで効率的です。

    コンテナーポート

    公開するコンテナーポート。ポート番号は 1 から 65535 の範囲である必要があります。

    対象サービスの [ステータス] 列に [成功] と表示された場合、サービスはデプロイされています。

  4. [サービス] ページで、[デフォルトドメイン] 列で helloworld-go サービスのドメイン名を、[ゲートウェイ] 列でゲートウェイ IP アドレスを見つけます。

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

    curl -H "Host: <default domain name>" http://<access gateway IP> # <default domain name> と <access gateway IP> を実際の値に置き換えます。

    期待される出力:

    Hello World!

    この出力は、サービスが作成され、アクセス可能であることを示します。

ステップ 2: Revision を作成して段階的リリースを実行する

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

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

  3. Revision を作成します。

    1. [サービス管理] タブで、対象サービスの [アクション] 列にある [詳細] をクリックします。

    2. [Revision の作成] をクリックします。[基本情報] ページで、[詳細設定] をクリックします。新しい Revision の環境変数を TARGET=Knative に設定し、[次へ] をクリックします。

      11

    3. [トラフィック分割設定] ウィザードで、最新の Revision の [トラフィックの割合] を 0 に設定し、[作成] をクリックします。

      説明

      すべての Revision のトラフィックの割合の合計は 100 になる必要があります。

    4. サービスの作成後、[サービス] タブを選択して、新しいサービスバージョンの詳細を表示します。

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

      curl -H "Host: <default domain name>" http://<access gateway IP> # <default domain name> と <access gateway IP> を実際の値に置き換えます。

      期待される出力:

      Hello World!

      この出力は、サービスが作成され、アクセス可能であることを示します。新しいバージョンの [トラフィックの割合] が 0 であるため、helloworld-go サービスへのリクエストは引き続き古いバージョンにルーティングされます。

  4. トラフィックの比率を変更して、段階的リリースを実行します。

    1. [サービス管理] ページで、対象サービスの [アクション] 列にある [詳細] をクリックします。

    2. [トラフィックの分割] をクリックします。[トラフィックの分割] ダイアログボックスで、新旧両方のバージョンの [トラフィックの比率] を 50% に設定し、[OK] をクリックします。

    3. サービスの [トラフィックの割合] を設定した後、[サービス管理] タブをクリックして、新旧のサービスバージョンの詳細を表示します。

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

      while true; do curl -H "Host: <default domain name>" http://<access gateway IP>; sleep 1; done # <default domain name> と <access gateway IP> を実際の値に置き換えます。
      説明

      このコマンドは、手動で終了するまで永続的に実行されます。Ctrl+C を押してコマンドを終了できます。

      期待される出力:

      Hello World!
      Hello Knative!
      Hello World!
      Hello Knative!
      Hello World!
      Hello Knative!
      ...

      新旧両方のバージョンの [トラフィックの比率] が 50% に設定されているため、helloworld-go サービスへのトラフィックは両者間で均等に分割されます。

      [トラフィックの比率] を調整することで、サービスの段階的リリースを続行できます。新しいバージョンの [トラフィックの比率] が 100% に達すると、段階的リリースは完了です。このプロセス中に、新しいバージョンで問題が発生した場合は、[トラフィックの比率] を調整することでいつでもロールバックできます。

参考

トラフィックリクエスト数に基づいて Knative サービスの自動スケーリングを実装できます。詳細については、「トラフィックリクエスト数に基づくサービスの自動スケーリングの実装」をご参照ください。