问题描述
我正在使用Azure DevOps(管道->管道)创建CD管道以发布到生产环境。我了解使用管道发行版(管道->发行版)可以选择并重新部署以前的发行版。我想知道是否可以在Azure管道中使用kubectl
任务rollout undo
命令来执行此操作,以及如何执行此操作。如果您以前曾遇到过此问题,是否可以分享您的知识,我将不胜感激。
以下是我的Azure管道中的kubectl
任务代码:
- task: Kubernetes@1
inputs:
connectionType: 'Azure Resource Manager'
azureSubscriptionEndpoint: 'Azure subscription 1(xxxxxxx-xxx-xxxxx-xxxxxxx)'
azureResourceGroup: 'rg'
kubernetesCluster: 'kc'
command: 'apply'
useConfigurationFile: true
configuration: '$(Pipeline.Workspace)/manifests/'
secretType: 'dockerRegistry'
containerRegistryType: 'Azure Container Registry'
- task: Kubernetes@1
name: rollout_status
inputs:
connectionType: 'Azure Resource Manager'
azureSubscriptionEndpoint: 'Azure subscription 1(xxxxxxx-xxx-xxxxx-xxxxxxx)'
azureResourceGroup: 'rg'
kubernetesCluster: 'kc'
command: 'rollout'
arguments: 'status deployment/deployment-name'
secretType: 'dockerRegistry'
containerRegistryType: 'Azure Container Registry'
- task: Kubernetes@1
name: rollout_undo
condition: Failed()
inputs:
connectionType: 'Azure Resource Manager'
azureSubscriptionEndpoint: 'Azure subscription 1(xxxxxxx-xxx-xxxxx-xxxxxxx)'
azureResourceGroup: 'rg'
kubernetesCluster: 'kc'
command: 'rollout'
arguments: 'undo deployment/deployment-name'
secretType: 'dockerRegistry'
containerRegistryType: 'Azure Container Registry'
解决方法
从Yaml示例中,如果rollout_status
步骤失败,它应该能够回滚。
要回滚到某个版本,您可以尝试使用以下命令:
kubectl rollout undo deployment/deployment-name --to-revision=2
请参阅this Blog:
默认情况下,Kubernetes存储最后10个副本集并让您回滚到其中任何一个。
因此,您可以将参数(--to-revision = x)添加到参数中以指定版本。