我有一个Azure管道,它将2个Kubernetes部署(清单文件)部署到AKS。我没有使用HELM,而且在AKS的中间级别。
任务如下所示(由于某些原因,我在单独的任务中一次部署1个文件)
- task: Kubernetes@1
inputs:
connectionType: 'Azure Resource Manager'
azureSubscriptionEndpoint: '$(serviceConnection)'
azureResourceGroup: 'my-aks-rg'
kubernetesCluster: 'my-aks'
command: 'apply'
arguments: '-f $(Pipeline.Workspace)/drop/manifest_1.yaml --record=true'
secretType: 'dockerRegistry'
containerRegistryType: 'Azure Container Registry'
- task: Kubernetes@1
inputs:
connectionType: 'Azure Resource Manager'
azureSubscriptionEndpoint: '$(serviceConnection)'
azureResourceGroup: 'my-aks-rg'
kubernetesCluster: 'my-aks'
command: 'apply'
arguments: '-f $(Pipeline.Workspace)/drop/manifest_2.yaml --record=true'
secretType: 'dockerRegistry'
containerRegistryType: 'Azure Container Registry'
现在的问题是,假设第一个文件部署通过,第二个文件部署失败,那么我就有一个部署了一半的应用程序,如果出现任何失败,我希望将所有部署正常回滚到以前的版本。
我知道K8的回滚命令。
kubectl rollout undo deployment/app1
kubectl rollout undo deployment/app2
如果我将此命令添加为CLI任务,则我不确定如何检测此CLI任务是否仅在管道中的某些操作失败时执行,否则,如果所有步骤均通过,则应忽略并跳过cli任务。
先谢谢你了。
1条答案
按热度按时间pftdvrlh1#
如果在单独的任务中一次部署一个文件。这可以通过自定义条件来实现。指定每个阶段、作业下的条件。在此方案中,我们可以在每个阶段下保留自定义条件。在阶段2,它将验证步骤1的状态,如果任何状态失败,它将自动回滚部署。
此部分将验证stage1状态