【发布时间】:2020-03-07 04:17:24
【问题描述】:
我们在 AzureDevops 中有一个发布管道,用于将微服务部署到 AKS,并在微服务部署后发送该微服务的日志。 我们使用下面的命令来使用模板 kubectl 部署部署,命令为“-f /home/admin/builds/$(build.buildnumber)/Myservice_Deployment.yml --record”
在这里我们注意到,任务不是在等待现有 pod 终止并创建新 pod,而是在继续并刚刚完成工作。
我们的预期场景
1) 使用 kubectl apply -f /home/admin/builds/$(build.buildnumber)/Myservice_Deployment.yml --record 部署微服务
2) 等待现有的 Pod 终止,并确保新的 Pod 处于运行状态。
3) 一旦新的 Pod 运行状态,通过 kubectl log 命令收集 Pod 的日志并发送给团队
4) 如果 pod 不是未处于运行状态,则回滚到之前的稳定状态。
我尝试使用不同的 shell 脚本在 azuredevops 中实现这一点,但没有成功
例如:
ATTEMPTS=0
ROLLOUT_STATUS_CMD="kubectl --kubeconfig /home/admin/kubernetes/Dev-kubeconfig rollout status deployment/My-service"
until $ROLLOUT_STATUS_CMD || [ $ATTEMPTS -eq 60 ]; do
$ROLLOUT_STATUS_CMD
ATTEMPTS=$((attempts + 1))
sleep 10
done
还需要使用kubectl log命令获取微服务的日志,文件格式为Date,需要通过邮件共享..
【问题讨论】:
-
这个案子进展如何,有更新吗?
-
从脚本端而不是从 kubernetes 端寻找解决方案
标签: linux bash shell kubernetes azure-devops