镜像触发器

最近更新时间:2019-09-11 14:27:42

仓库镜像管理提供镜像触发功能。

前提条件

对仓库具有 write 权限的团队用户,才可以新建和编辑镜像的触发器功能。
镜像仓库触发器帮助用户在镜像构建完毕后,自动执行自定义工作流。通过触发器可以和镜像构建结合实现持续部署。

触发器

镜像仓库触发器包含如下四个属性:

  • 触发器名称:创建的触发器的名称。
  • 镜像仓库:指定触发器绑定的镜像仓库,一个镜像仓库目前最多支持 10 个触发器。
  • 触发条件:通过该属性可设置只有符合特定 Tag(镜像版本)格式的镜像被提交时,才执行触发动作。
  • 触发动作:执行选择的工作流。

触发记录

仓库触发器每次执行触发动作时,都会产生触发记录。触发记录中包含触发器名称、触发条件、触发动作、触发结果、触发时间等信息。

触发器工作流

镜像触发器执行时, 将调用触发器选配置的工作流,并将镜像地址作为环境变量 IMAGE 传入给工作流。在触发器工作流中, 通常是去更新镜像相关的服务。 腾讯云官方提供了多种可用于更新容器集群服务的组件, 常用的 2 个组件: TKE 服务更新组件Kubectl 命令行组件。用户可以在触发器工作流中按需选用, 当然用户也可以通过调用别的组件制作工作流。

TKE服务更新组件

组件hub.tencentyun.com/tencenthub/update_tke_service通过调用 TKE api 实现更新容器镜像服务, 该组件输入参数如下:

入参对应的环境变量名 必要/可选 含义
TENCENTCLOUD_SECRET_ID 必要 在 云API密钥 上申请的标识身份的 SecretId,一个 SecretId 对应唯一的 SecretKey
TENCENTCLOUD_SECRET_KEY 必要 SecretId 对应的唯一 SecretKey
REGION 必要 区域参数,用来标识希望操作哪个区域的实例
CLUSTER_ID 必要 服务所在的TKE 集群ID
SERVICE_NAME 必要 TKE 服务名
NAMESPACE 可选 TKE 服务 namespace, 默认为 default
IMAGE 可选 新镜像,如果服务中一个实例下只有一个容器可以传此参数 ( image 和 containers 二者必填一个)
CONTAINERS 可选 新镜像,如果服务中一个实例下有多个容器需要传入此参数,需要一个合法的json字符串, 格式例如{"containerName1": "image1", "containerName2": "image2"}

Kubectl 命令行组件

组件hub.tencentyun.com/tencenthub/kubectl_cmd通过在预装了 kubectl 的组件中执行 kubectl 自定义命令, 可以实现更新任何有权限的 kubernetes 容器服务, 该组件的输入参数如下:

入参对应的环境变量名 必要/可选 含义
USERNAME 必要 kubernetes 用户名
PASSWORD 必要 kubernetes 用户密码
CERTIFICATE 必要 kubernetes 证书内容
SERVER 必要 kubernetes 服务器地址
CMD 必要 用户自定义 shell 命令, 支持多行, 使用/bin/sh -c执行

除以上固定入参外, 该组件还支持自定义多个环境变量, 这些环境变量在CMD中可以直接使用.

腾讯云 kubernetes 容器集群用户, 可通过以下方式获取集群账号密码以及证书信息:

  • 登录 容器服务控制台 > 集群,单击需要连接的集群 ID/名称,查看集群详情。
  • 在集群信息页,单击【显示凭证】,查看用户名、密码和证书信息。
  • 复制或下载证书文件到本地

触发器操作实践

  1. 在目标镜像所在的仓库下,新建一个或者多个工作流。工作流中使用环境变量${IMAGE}。
  2. 进入镜像管理>触发器页面,单击添加触发器,填写触发器名称和规则, 并选择该仓库下的工作流, 单击添加完成触发器工作流绑定。
  3. 推送目标镜像,将自动触发绑定的工作流执行。