kubernetes - 在 VSTS 中取消发布(取消部署)应用程序?

标签 kubernetes azure-devops continuous-deployment azure-pipelines-release-pipeline

我有一个包含 N 个 git 存储库的项目,每个存储库代表一个静态网站(N 个不同)。对于每个 git 存储库,都存在一个构建定义,用于在 Azure 容器注册表上创建 nginx docker 镜像。这 N 个构建定义链接到将每个镜像部署到 k8s(也在 Azure 上)的 N 个发布定义。总体而言,CI/CD 运行良好,并且在首次成功发布后,我看到了一个环境列表,每个环境代表一个现已上线的网站。

environments VSTS CI/CD release pipelines

对于 VSTS CI/CD,我无法声明这些环境是如何被拆除的。在GitLab CI(我之前用过)中,存在一个stopping an environment的概念。尽管这只是 .gitlab-ci.yaml 中的一个阶段,但运行它实际上会从已部署的列表中删除环境。

在删除可自动部署的功能分支(也称为审核应用程序)时,停止环境可能很有用。就我而言,当需要删除已共享的静态网站时,我想执行此操作。

VSTS 似乎没有释放已经发布的东西的概念,我想知道最好的解决方法是什么。到目前为止我尝试了这两个选项:

  1. 创建N个新的发布定义管道,为相应的静态网站调用kubecetl delete ...。这确实让事情变得很清楚,因为一个管道中名为 k8s prod (website-42) 的环境与另一个管道中的环境不同(否则,我可以看到 web → cloudweb × cloud 最后调用):

    environment cards (multiple release definitions)

  2. 在同一发布定义中定义一个名为生产(删除)的新环境并手动触发它。

    environment cards (single release definitions)

    在这种情况下,“部署”与“取消部署”更接近,但很难弄清楚最后是什么(在上面的示例中,您可以猜测在我删除它们后重新释放了我的 k8s 资源) – 你需要查看卡片上的时间,这是一个非常糟糕的指示)。

还有什么可以用于删除/取消部署已发布的应用程序?

最佳答案

VSTS在发布管理中没有“停止环境”(自动删除环境上已部署的东西)功能。但你可以在 VSTS YAML build 中实现同样的目标.

因此,除了您分享的两种解决方法之外,您还可以通过 VSTS YAML 构建来停止环境(类似于 GitLab 中的机制)。

对于 YAML CI 构建,您只需提交以 .vsts-ci.yml 结尾的文件。在 .vsts-ci.yml 文件中,您可以指定删除已部署应用程序的任务。

关于kubernetes - 在 VSTS 中取消发布(取消部署)应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51386985/

相关文章:

Azure AKS - 此容器服务处于失败状态

azure - 如何将不同订阅的 ACR 附加到 AKS?

azure-devops - Azure DevOps Server dotnet Restore 无法访问源

Travis CI 不允许使用 SShpass

c# - 如何在 TFS 构建中获取 nuget 恢复

kubernetes - Kubernetes会在主节点上运行Docker容器吗?

centos - Kubernetes 外部访问容器中的应用程序

azure - 获取从另一个管道下载的最后一个工件的值

git - Azure devops GitVersion 任务失败

ios - 是否可以将Bamboo用于iOS CI?