jobs.deployment.strategy.canary 定義
Canary 部署策略會將變更推出至一小部分的伺服器。
canary:
increments: [ string ] # Maximum batch size for deployment.
preDeploy: # Pre deploy hook for canary deployment strategy.
steps: [ task | script | powershell | pwsh | bash | checkout | download | downloadBuild | getPackage | publish | template | reviewApp ] # A list of steps to run.
pool: string | pool # Pool where pre deploy steps will run.
deploy: # Deploy hook for canary deployment strategy.
steps: [ task | script | powershell | pwsh | bash | checkout | download | downloadBuild | getPackage | publish | template | reviewApp ] # A list of steps to run.
pool: string | pool # Pool where deploy steps will run.
routeTraffic: # Route traffic hook for canary deployment strategy.
steps: [ task | script | powershell | pwsh | bash | checkout | download | downloadBuild | getPackage | publish | template | reviewApp ] # A list of steps to run.
pool: string | pool # Pool where route traffic steps will run.
postRouteTraffic: # Post route traffic hook for canary deployment strategy.
steps: [ task | script | powershell | pwsh | bash | checkout | download | downloadBuild | getPackage | publish | template | reviewApp ] # A list of steps to run.
pool: string | pool # Pool where post route traffic steps will run.
on: # On success or failure hook for canary deployment strategy.
failure: # Runs on failure of any step.
steps: [ task | script | powershell | pwsh | bash | checkout | download | downloadBuild | getPackage | publish | template | reviewApp ] # A list of steps to run.
pool: string | pool # Pool where post on failure steps will run.
success: # Runs on success of all of the steps.
steps: [ task | script | powershell | pwsh | bash | checkout | download | downloadBuild | getPackage | publish | template | reviewApp ] # A list of steps to run.
pool: string | pool # Pool where on success steps will run.
參考此定義的定義: jobs.deployment.strategy
屬性
increments
字串清單。
部署的批次大小上限。
preDeploy
preDeployHook。
Canary 部署策略的預先部署勾點。
deploy
deployHook。
部署 Canary 部署策略的攔截。
routeTraffic
routeTrafficHook。
路由傳送 Canary 部署策略的流量攔截。
postRouteTraffic
postRouteTrafficHook。
針對 Canary 部署策略張貼路由流量攔截。
on
onSuccessOrFailureHook。
Canary 部署策略的成功或失敗勾點。
備註
Canary 部署策略是進階部署策略,可協助降低推出新版本應用程式所涉及的風險。 使用此策略,就可以先對一小部分的伺服器推出變更。 隨著您對新版本的信心增加,便能發行到基礎結構中的更多伺服器,然後將更多流量路由到該版本。
Canary 部署策略支援 preDeploy
生命週期勾點 (執行一次) ,並使用 、 routeTraffic
和 postRouteTraffic
生命週期勾點逐一查看 deploy
。 然後,它會以 success
或 failure
勾點結束。
此策略提供下列變數:
strategy.name
:策略的名稱。 例如,Canary。
strategy.action
:要于 Kubernetes 叢集上執行的動作。 例如,部署、升級或拒絕。
strategy.increment
:目前互動中使用的遞增值。 此變數僅適用于 deploy
、 routeTraffic
和 postRouteTraffic
生命週期勾點。
生命週期勾點的描述
preDeploy
:用來執行在應用程式部署開始之前初始化資源的步驟。
deploy
:用來執行部署應用程式的步驟。 下載成品工作只會自動插入 deploy
部署作業的勾點中。 若要停止下載成品,請使用 - download: none
或選擇要下載的特定成品,方法是指定 [下載管線成品] 工作。
routeTraffic
:用來執行將流量提供給更新版本的步驟。
postRouteTraffic
:用來在路由傳送流量之後執行步驟。 一般而言,這些工作會監視已更新版本的健全狀況,以取得定義的間隔。
on: failure
或 on: success
:用來執行復原動作或清除的步驟。
範例
在下列範例中,AKS 的 Canary 策略會先部署具有 10% Pod 的變更,後面接著 20%,同時在 期間監視健康情況 postRouteTraffic
。 如果一切順利,它將會提升為 100%。
jobs:
- deployment:
environment: smarthotel-dev.bookings
pool:
name: smarthotel-devPool
strategy:
canary:
increments: [10,20]
preDeploy:
steps:
- script: initialize, cleanup....
deploy:
steps:
- script: echo deploy updates...
- task: KubernetesManifest@0
inputs:
action: $(strategy.action)
namespace: 'default'
strategy: $(strategy.name)
percentage: $(strategy.increment)
manifests: 'manifest.yml'
postRouteTraffic:
pool: server
steps:
- script: echo monitor application health...
on:
failure:
steps:
- script: echo clean-up, rollback...
success:
steps:
- script: echo checks passed, notify...