linux - 如果在 azuredevops 中部署失败,则自动推出 kubernes 部署
问题描述
我们在 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 格式,需要通过邮件共享。
解决方案
您在一个问题中混合了多个问题,但是您需要使用 liveness probe 配置您的部署,以实现您想要的行为
推荐阅读
- python - 如何从数据框中的唯一字符串生成唯一的 int
- python - 从另一个 python 脚本循环调用 PyTorch 训练脚本时出现 CUDA 内存不足错误
- wpf-controls - 是否可以更改鼠标悬停事件引发的不是控制轮廓,而是路径?
- python - 哪个是哪个?(真阳性、真阴性、假阳性、假阴性)
- spring-boot - 拦截器和全局异常处理
- r - 仅在一个带有相应图例的多面图上添加第二个 geom_layer
- java - 每个页面加载的所有包都加载 React + Java
- authentication - 如何向 Azure 工业物联网平台验证 NestJS API?
- php - 如何创建 wordpress 详细信息页面?
- ios - 修改拉动以快速刷新