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

Container Compute Service:Knative でのトラフィック分割によるカナリアリリース

最終更新日:Oct 24, 2026

Knative は、異なるリビジョン間のトラフィック分散を管理します。コンソールで各リビジョンのトラフィックの割合を設定し、パフォーマンスをモニタリングしながら、新しいリビジョンに徐々にトラフィックを移行できます。新しいリビジョンがトラフィックの 100% を処理するようになると、カナリアリリースは完了です。

前提条件

ACS クラスターにKnative をデプロイしていること。

ステップ1:Knative Serviceの作成

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

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

  3. [Knative] ページで、サービス管理 タブをクリックし、名前空間 ドロップダウンリストから [default] を選択し、サービスの作成 をクリックします。設定ページで、helloworld-go という名前の Service をデプロイし、作成 をクリックします。

    次の表に、主要なパラメーターを示します。パラメーターの詳細については、「Knative Service のクイックデプロイ」をご参照ください。

    パラメーター

    説明

    [名前空間]

    Service が属する名前空間を選択します。

    [サービス名]

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

    [イメージ名]

    イメージの選択 をクリックします。表示されたダイアログボックスで、目的のイメージを選択し、OK をクリックします。プライベートレジストリからイメージのパスを入力することもできます。形式は domainname/namespace/imagename:tag です。この例では、パスは registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go です。

    [アクセスプロトコル]

    HTTP と gRPC のアクセスプロトコルをサポートしています。

    説明

    gRPC は、効率的な HTTP/2 標準に基づいて構築されており、Protocol Buffers (Protobuf) シリアル化プロトコルを使用し、多くのプログラミング言語をサポートしています。

    [コンテナーポート]

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

    対象 Service の ステータス 列に 作成済 と表示されている場合、Service は正常にデプロイされています。

  4. サービス管理 ページで、helloworld-go Service の デフォルトドメイン 列と ゲートウェイ 列から、それぞれドメイン名とゲートウェイアドレスを取得します。

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

    curl -H "Host: <default_domain>" http://<gateway_ip> # <default_domain> と <gateway_ip> を実際の値に置き換えてください。

    期待される出力:

    Hello World!

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

ステップ2:カナリアリリースの実行

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

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

  3. Revision を作成します。

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

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

      11

    3. トラフィック分割設定 ページで、新しい Revision の [パーセント] を 0 に設定し、作成する をクリックします。

      説明

      すべての Revision のトラフィックのパーセンテージの合計は 100% にする必要があります。

    4. Revision が作成されたら、サービス管理 タブをクリックして、新しく作成された Revision の詳細を表示します。

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

      curl -H "Host: <default_domain>" http://<gateway_ip> # <default_domain> と <gateway_ip> を実際の値に置き換えてください。

      期待される出力:

      Hello World!

      期待どおり、新しい Revision の [パーセント] が 0 であるため、helloworld-go Service へのリクエストは、引き続き古い Revision にルーティングされます。

  4. トラフィックのパーセンテージを変更して、カナリアリリースを実行します。

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

    2. [トラフィックパーセンテージの設定] をクリックします。トラフィックの分割 ダイアログボックスで、新しい Revision と古い Revision 両方の [パーセント] を 50% に設定し、OK をクリックします。

    3. Service の [パーセント] が設定されたら、サービス管理 タブをクリックして、新しい Revision と古い Revision の詳細を表示します。

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

      while true; do curl -H "Host: <default_domain>" http://<gateway_ip>; sleep 1; done # <default_domain> と <gateway_ip> を実際の値に置き換えてください。
      説明

      このコマンドは、手動で停止するまで継続的に実行されます。短時間だけ出力を確認したい場合は、Ctrl + C を押してコマンドを停止してください。

      期待される出力:

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

      新しい Revision と古い Revision の [パーセント] が 50% に設定されているため、helloworld-go Service へのリクエストは現在、2 つの Revision 間でほぼ均等に分割されます。

      新しい Revision の [パーセント] が 100% に達するまで [パーセント] を調整し続けることで、Service のカナリアリリースを続行できます。これでカナリアリリースは完了です。このプロセス中に新しい Revision で問題が発見された場合は、いつでも [パーセント] を調整してロールバックを実行できます。

関連トピック

同時リクエスト数に基づいて、Knative Service のオートスケーリングを設定できます。詳細については、「リクエストベースのServiceのオートスケーリング設定」をご参照ください。