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

Container Compute Service:Knative でのトラフィック分割に基づくサービスのカナリアリリースを実行する

最終更新日:Nov 09, 2025

Knative は、異なるリビジョン間でトラフィックを分散します。コンソールで各リビジョンのトラフィックの割合を設定できます。その後、トラフィックの 100% が新しいバージョンにルーティングされるまで、トラフィックの割合を継続的に調整し、サービスをモニターして、カナリアリリースを完了します。

前提条件

Knative は ACS クラスターにデプロイされています。詳細については、「Knative をデプロイする」をご参照ください。

ステップ 1: Knative サービスの作成

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

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

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

    次の表に、主要なパラメーターを示します。パラメーターの詳細については、「Knative を使用してサーバーレスアプリケーションをデプロイする」をご参照ください。

    パラメーター

    説明

    名前空間

    サービスが属する名前空間を選択します。

    サービス名

    サービスの名前を入力します。この例では、helloworld-go を使用します。

    イメージ名

    [イメージの選択] をクリックします。表示されるダイアログボックスで、イメージを選択し、[OK] をクリックします。非公開の レジストリ のアドレスを入力することもできます。アドレスは domainname/namespace/imagename:tag のフォーマットである必要があります。この例では、registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go を使用します。

    アクセスプロトコル

    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: カナリアリリースをデプロイするためのリビジョンを作成する

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

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

  3. リビジョンを作成します。

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

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

      11

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

      説明

      すべてのリビジョンのトラフィックの割合の合計は 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 サービスを自動的にスケーリングできます。詳細については、「リクエスト数に基づく自動スケーリングの構成」をご参照ください。