Function Compute で関数を更新すると、新しいコードと構成が直ちに LATEST バージョンを上書きし、それ以降のすべての呼び出しがこの更新されたバージョンに対して実行されます。本番環境ですべてのトラフィックに変更を直接リリースすることは、リスクを伴います。
コミュニティが提供する @serverless-cd/fc-canary プラグインを使用すると、新しいバージョンを完全に昇格させる前に、指定した割合のトラフィックのみを新しいバージョンにルーティングすることで、カナリアリリースを実行できます。
仕組み
Function Compute は、エイリアスを使用してデプロイメントとリリースを分離します。本番環境では、エイリアスを特定の公開済みバージョンに指定します。新しいコードをデプロイすると LATEST バージョンは更新されますが、エイリアスは以前の安定バージョンを指したままです。エイリアスを明示的に更新するまで、トラフィックは古いバージョンに流れ続けます。
fc-canary プラグインは、このプロセスを自動化します:
現在の
LATESTのコードと構成に基づいて新しいバージョンを公開します。エイリアスを更新して、以前の安定バージョンと新しく公開されたバージョンとの間でトラフィックを分割します。エイリアスがまだ存在しない場合、プラグインはそれを自動的に作成します。
指定した割合の呼び出しのみを新しいバージョンに送ることで、ロールアウトを完了する前にエラーやパフォーマンスの低下をモニターできます。
前提条件
Serverless Devs をインストールし、Alibaba Cloud 認証情報を設定済みであること。
Function Compute に関数をデプロイ済みであること。
パイプライン構成に
@serverless-cd/fc-canaryプラグインをインストール済みであること。
パラメーター
次の表に、fc-canary プラグインでサポートされているパラメーターを示します。
| パラメーター | タイプ | 必須 | 説明 |
|---|---|---|---|
serviceName | String | はい (FC 2.0) | ターゲット関数を含む Function Compute 2.0 サービスの名前。 |
functionName | String | はい (FC 3.0) | 関数の名前。サービスレベルのグルーピングが廃止された Function Compute 3.0 で使用されます。 |
aliasName | String | はい | 作成または更新するエイリアスの名前。例:prod。 |
regionId | String | はい | 関数がデプロイされているリージョンの ID。例:cn-hangzhou。 |
canaryPercent | Number | はい | 新しいバージョンにルーティングするトラフィックの割合。有効な値:0~100。 |
使用方法
Function Compute 2.0
Function Compute 2.0 では、エイリアスはサービスレベルで構成されます。次の例では、サービスのエイリアスを更新し、トラフィックの 50% を新しいバージョンにルーティングします:
- plugin: @serverless-cd/fc-canary
inputs:
serviceName: web-framework-kzbp
aliasName: prod
regionId: cn-hangzhou
canaryPercent: 50Function Compute 3.0
Function Compute 3.0 では、サービスレベルのグルーピングが廃止されています。functionName パラメーターを serviceName の代わりに使用します:
- plugin: @serverless-cd/fc-canary
inputs:
functionName: my-function
aliasName: prod
regionId: cn-hangzhou
canaryPercent: 10リリースの完了
新しいバージョンが期待どおりに動作することを確認した後、canaryPercent を 100 に更新するか、エイリアスを完全に新しいバージョンに指定してリリースを完了します。