コンテンツへスキップ

Revisionへのトラフィックの段階的ロールアウトの設定

トラフィック設定がRevisionターゲットではなくConfigurationターゲットを指している場合、新しいRevisionが作成され準備完了になると、ターゲットからのトラフィックの100%がすぐに新しいRevisionにシフトされます。

これにより、QPまたはアクティベータでリクエストキューが長くなりすぎ、リクエストが期限切れになったり、QPによって拒否されたりする可能性があります。

Knativeは、最新のRevisionへのトラフィックを段階的にシフトし、リクエストがキューイングまたは拒否されるのを防ぐために使用できるrollout-durationパラメータを提供します。影響を受けるConfigurationターゲットは、最初にトラフィックの1%にロールアウトされ、その後、割り当てられたトラフィックの残りの部分について、等間隔の増分ステップでロールアウトされます。

注記

rollout-durationは時間ベースであり、自動スケーリングサブシステムとは相互作用しません。

この機能は、Knativeサービスまたはサービスのないルートのいずれかに設定された、タグ付きとタグなしの両方のトラフィックターゲットで使用できます。

手順

アノテーションを使用して、Knativeサービスまたはルートごとにrollout-durationパラメータを設定できます。

ヒント

ロールアウト期間のグローバルなConfigMap設定については、管理者ガイドを参照してください。

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: helloworld-go
  namespace: default
  annotations:
    serving.knative.dev/rollout-duration: "380s"

ルートステータスの更新

ロールアウト中は、システムがルートとKnativeサービスのステータス条件を更新します。trafficconditionsの両方のステータスパラメータが影響を受けます。

たとえば、次のトラフィック設定の場合

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
...
spec:
...
  traffic:
  - percent: 55
    configurationName: config # Pinned to latest ready Revision
  - percent: 45
    revisionName: config-00005 # Pinned to a specific Revision.

最初は、トラフィックの1%がRevisionにロールアウトされます。

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
...
spec:
...
  traffic:
  - percent: 54
    revisionName: config-00008
  - percent: 1
    revisionName: config-00009
  - percent: 45
    revisionName: config-00005 # Pinned to a specific Revision.

その後、残りのトラフィックが18%の増分でロールアウトされます。

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
...
spec:
...
  traffic:
  - percent: 36
    revisionName: config-00008
  - percent: 19
    revisionName: config-00009
  - percent: 45
    revisionName: config-00005 # Pinned to a specific Revision.

ターゲットトラフィック設定に到達するまで、ロールアウトが継続されます。

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
...
spec:
...
  traffic:
  - percent: 55
    revisionName: config-00009
  - percent: 45
    revisionName: config-00005 # Pinned to a specific Revision.

ロールアウト中は、ルートとKnativeサービスのステータス条件は次のようになります。

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
...
spec:
...
status:
  conditions:
  ...
  - lastTransitionTime: "..."
    message: A gradual rollout of the latest revision(s) is in progress.
    reason: RolloutInProgress
    status: Unknown
    type: Ready

複数のロールアウト

ロールアウト中に新しいRevisionが作成された場合、システムは最新のRevisionへのトラフィックのシフトを開始し、最新のRevisionから古いRevisionへと未完了のロールアウトを終了させます。

サイトトラフィックを理解するために、分析とCookieを使用しています。サイトのご利用に関する情報は、その目的でGoogleと共有されます。詳細はこちら。