1. 授权认证
  2. 获取用户个人信息
  3. 项目协同
  4. 代码托管
  5. 持续集成
  6. 制品仓库
  7. 测试管理
  1. 项目协同
  2. 代码仓库
  3. DevOps 实践之旅
  4. 一分钟开始持续集成之旅
  5. 持续部署
  6. 制品库

更新 Kubernetes Manifests

本文档将会介绍如何在 Patch(Manifest) 阶段更新 Kubernetes 资源对象。将会包含以下几个操作说明:

  • 指定更新的 manifest
  • 指定更新内容
  • (可选)在更新内容里覆盖制品
  • (可选)覆盖特定的选项

指定更新的资源

  1. 在阶段下拉列表中选择「Patch(Manifest)」。

  1. 指定更新的 Kubernetes 资源,需要配置如下字段:
  • 云账号:管理 Kubernetes 资源的云账号
  • Namespace:资源所在的命名空间
  • 资源类型(如 Deployment、Service 等)
  • 名称:资源名称

指定更新的内容

更新内容与Deploy(Manifest)类似。与部署阶段不同的是,更新阶段的内容只需填写更新的资源清单即可,不必提供所有资源的清单。根据不同需求,Patch 内容有两种提供方式:

  • 静态:直接在阶段配置中填写
  • 动态:运行时绑定制品

指定静态内容

您可以在阶段配置中直接输入 YAML 配置。例如给 manifest 添加新标签:

metadata:
  labels:
    foo: bar

动态绑定

Deploy(Manifest)类似,您可以引用外部的 manifest 作为制品,制品必须是包含 patch 内容的文本文件。

假设您在部署流程中声明了 Patch(Manifest) 阶段需要引用的制品,那么在 Patch(Manifest) 阶段可以通过如下配置引用:

覆盖制品

当对 Kubernetes 资源对象使用 strategic 或 merge strategy 方式进行 Patch 操作时, Patch(Manifest) 阶段可以像部署阶段一样配置覆盖制品。

例如,假设部署流程中有如下 manifest 内容的更新阶段:

spec:
  template:
    spec:
      containers:
        -   name: my-container
          image: lhkprod-docker.pkg.coding.net/cd-demo/release/nginx

假设您更新了 Docker 镜像 tag(my-image:2.0),并上传镜像至 Docker 仓库触发部署流程执行,Spinnaker 将会使用新版本的 Docker 镜像覆盖掉旧版本:

#...rest of manifest
containers:
  - name: my-container
    image: lhkprod-docker.pkg.coding.net/cd-demo/release/nginx:2.0

指定更新选项

  • 记录更新注解

默认是 true。此选项勾选后,Kubernetes 将会使用注解 kubernetes.io/change-cause 将更新的操作与内容记录至被更新的资源中。

  • 策略合并

strategic:默认选项。它是自定义版本的 JSON 合并更新,允许 Kubernetes 对象基于结构标签替换或者合并。当您需要在 pod spec 列表中添加注解、标签或容器而不是替换时非常有用。

json:使用标准的 RFC 6902 JSON patch 更新 manifest。

merge:使用 RFC 7386 JSON Merge Patch 更新 manifest。

上一篇人工确认
最近更新
感谢反馈有用
感谢反馈没用