Apigee ハイブリッドでは、2 種類の更新方法がサポートされます。1 つ目はインプレース アップデートです。この更新方法では、構成の変更を適用すると、ハイブリッドが Kubernetes ローリング アップデートを開始します。Kubernetes では、ローリング アップデートにより、Pod インスタンスを段階的に新しいインスタンスに更新し、Deployment の更新をダウンタイムなしで行うことができます。
Apigee ハイブリッドは、カナリア更新または AB スタイルのアップデートもサポートしています。AB アップデートでは、新しいリビジョンがデプロイされます。ただし、最初にそのリビジョンに送信されるトラフィックの割合はごくわずかです。時間の経過とともに、割合が増加し、すべてのトラフィックが新しいリビジョンに送信されるようになります。
インプレース アップデート
インプレース アップデートをトリガーするには、オーバーライド ファイル内の必要な設定を変更してクラスタに適用します。たとえば、現在の runtime メモリを 1 Gi から 5 Gi に変更する場合について考えてみましょう。
初期の構成は次のとおりです。
...
runtime:
replicaCountMin: 2
replicaCountMax: 20
resources:
requests:
cpu: 1000m
memory: 1Gi
...新しい構成では、メモリは 5Gi に変更されています。
...
runtime:
replicaCountMin: 2
replicaCountMax: 20
resources:
requests:
cpu: 1000m
memory: 5Gi
...変更を適用すると、更新された Pod が起動し、既存の Pod と置き換えられます。Kubernetes のローリング アップデート機能により、クライアントでダウンタイムが発生しません。
AB アップデートの実施方法
AB アップデートを実行するには、オーバーライド ファイルで revision タグを使用します。たとえば、現在の runtime メモリを 1 Gi から 5 Gi に変更する場合について考えてみましょう。
現在の構成では、revision が blue に設定されています。
...
revision: blue
...
runtime:
replicaCountMin: 2
replicaCountMax: 20
resources:
requests:
cpu: 1000m
memory: 1Gi
...
新しい構成で revision を green に変更すると、変更の適用時にローリング アップデートの実行を指定します。revision に設定する値は重要ではありません。前の値と異なる任意の値を使用できます。
...
revision: green
...
runtime:
replicaCountMin: 2
replicaCountMax: 20
resources:
requests:
cpu: 1000m
memory: 5Gi
...変更を適用すると、トラフィックのごく一部が新しいリビジョンに転送されます。新しいリビジョンに転送されるトラフィックの量は、100% になるまで時間の経過に伴い増加していきます。古いリビジョンは、100% に到達した時点で削除されます。
AB ロールアウトをトリガーするには、revision タグを追加するか(タグが存在しない場合)、revision タグの値を変更します(タグが存在する場合)。AB ロールアウトをトリガーするには、オーバーライド ファイルに対して他の変更を行う必要はありません。
次の表に、AB ロールアウトのスケジュールを示します。
| ステージ | トラフィックの割合 | 待機時間 |
|---|---|---|
| 1 | 5% | 60 秒 |
| 2 | 20% | 10 秒 |
| 3 | 100% | 10 秒 |
現在のリリースでは、割合と待機時間は構成できません。