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

Container Service for Kubernetes:Knative サービスのカナリアリリース

最終更新日:Sep 20, 2026

Knative を使用すると、リビジョン間でトラフィックを分割できます。コンソールで各リビジョンのトラフィックの割合を設定し、サービスを監視しながら徐々に割合を調整できます。すべてのトラフィック (100%) が新しいリビジョンにルーティングされると、カナリアリリースは完了です。

前提条件

開始する前に、以下を確認してください。

クラスターに Knative がデプロイされていること。詳細については、「クイックスタート:Knative サービスのデプロイ」をご参照ください。

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

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

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

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

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

    パラメーター

    説明

    [サービス名]

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

    [イメージ名]

    イメージの選択 をクリックします。表示されたダイアログボックスで、目的のイメージとバージョンを選択し、OK をクリックします。

    プライベート[レジストリ]を指定することもできます。domainname/namespace/imagename:tag 形式を使用します。この例では、registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:73fbdd56 を使用します。

    [アクセスプロトコル]

    [HTTP] および [gRPC] アクセスプロトコルをサポートします。

    説明

    gRPC は HTTP/2 プロトコルと Protocol Buffers (protobuf) シリアライゼーションプロトコルを使用し、幅広いプログラミング言語をサポートします。HTTP と比較して、HTTP/2 はデータの送受信においてよりコンパクトで効率的です。

    [コンテナーポート]

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

    作成済 列に [ステータス] が表示されている場合、サービスはデプロイされています。

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

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

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

    期待される出力:

    Hello World!

    この出力は、サービスが実行中であり、アクセス可能であることを示しています。

ステップ2:カナリアリリース用のリビジョンの作成

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

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

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

    1. サービス管理 タブをクリックします。対象のサービスを見つけ、詳細 列の アクション をクリックします。

    2. Revision の作成 をクリックします。設定ウィザードの 基本情報 ステップで 高度 をクリックし、新しいリビジョンの環境変数を TARGET=Knative に設定してから、次へ をクリックします。

      11

    3. トラフィック分割設定 ステップで、新しいリビジョンの [割合] を 0 に設定し、作成する をクリックします。

      説明

      すべてのリビジョンのトラフィックの割合の合計は 100% にする必要があります。

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

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

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

      期待される出力:

      Hello World!

      この出力は、サービスが実行中であり、アクセス可能であることを示しています。新しいリビジョンの [割合] が 0 であるため、helloworld-go サービスへのリクエストは、引き続き古いリビジョンに送信されます。

  4. トラフィックの割合を変更して、カナリアリリースを実行します。

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

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

    3. [割合] を設定したら、サービス管理 タブをクリックして、新しいリビジョンと古いリビジョンの詳細を表示します。

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

      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!
      ...

      新しいリビジョンと古いリビジョンの [割合] がそれぞれ 50% であるため、Knative は helloworld-go サービスへのリクエストを 2 つのリビジョン間でほぼ均等に分割します。

      [割合] を調整してサービスのカナリアリリースを続行し、新しいバージョンの [割合] が 100% に達するとリリースが完了します。このプロセス中に新しいバージョンで問題が見つかった場合は、[割合] を調整することでいつでもロールバックできます。

関連ドキュメント

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