您可以使用触发器完成远程触发应用部署或重新部署操作。本文举例说明如何使用触发器。

背景信息

您可以使用3种不同类型数据源在应用中心创建应用。这3种数据源分别是Git Repository、Helm Repository、ACK编排模板:
  • 使用ACK编排模板类型数据源的应用,可以使用触发器远程更新ACK编排模板中的镜像信息(例如镜像版本)并拉取最新模板重新部署应用。
  • Git Repository和Helm Repository类型数据源的应用只支持拉取最新编排模板并重新部署应用,即不支持使用触发器更新数据源。

本文示例中部署的应用名为demo,包含的Kubernetes资源为一个名为demo的Deployment资源。为应用demo生成触发器地址为https://cs.console.aliyun.com/hook/trigger?token=xxxxxxxxx

Deployment资源的编排模板如下。
apiVersion: apps/v1
kind: Deployment
metadata:
  name: demo
  labels:
    app: demo
spec:
  minReadySeconds: 5
  revisionHistoryLimit: 5
  progressDeadlineSeconds: 60
  strategy:
    rollingUpdate:
      maxUnavailable: 1
    type: RollingUpdate
  selector:
    matchLabels:
      app: demo
  template:
    metadata:
      annotations:
        prometheus.io/scrape: "true"
        prometheus.io/port: "9797"
      labels:
        app: demo
    spec:
      containers:
      - name: demo
        image: registry.cn-hangzhou.aliyuncs.com/acs/rollouts-demo:blue
        imagePullPolicy: IfNotPresent
        ports:
        - name: http
          containerPort: 8080
          protocol: TCP
        readinessProbe:
          tcpSocket:
            port: 8080
          initialDelaySeconds: 5
          timeoutSeconds: 5
        resources:
          limits:
            cpu: 2000m
            memory: 512Mi
          requests:
            cpu: 100m
            memory: 64Mi

更新ACK编排模板并重新部署应用

对于ACK编排模板数据源,执行以下命令使用触发器对名为demo的Deployment进行镜像信息的更新并重新部署应用至目标集群。
curl -X POST -H 'content-type: application/json' https://cs.console.aliyun.com/hook/trigger?token=xxxxxxxxx -d '{"resource":{"deployment":{"metadata":{"name":"demo"}, "spec": {"template": {"spec": {"containers": [{"name":"demo","image":"registry.cn-hangzhou.aliyuncs.com/acs/rollouts-demo:red"}]}}}}}}'
说明

以上命令中body内容为需要更新的资源对应的JSON Patch。

Patch中提供的信息为Deployment资源的name、容器的name及其镜像的URL。
{
    "resource":{
        "deployment":{
            "metadata":{
                "name":"demo"
            },
            "spec": {
                "template": {
                    "spec": {
                        "containers": [
                            {
                                "name":"demo",
                                "image":"registry.cn-hangzhou.aliyuncs.com/acs/rollouts-demo:red"
                            }]
                    }
                }
            }
        }
    }
}
以上示例中触发器完成的任务为:
  • 更新ACK编排模板并自动生成新版本。
  • 强制刷新应用数据源(检查数据源是否更新, 若更新则拉取最新数据)。
  • 部署最新版本应用至目标集群。

重新部署Git和Helm Repository数据源类型应用

对于Git Repository和Helm Repository数据源类型的应用,触发器不支持通过body传递参数。执行以下命令使用触发器重新部署Git Repository和Helm Repository数据源类型应用。
curl -X POST https://cs.console.aliyun.com/hook/trigger?token=xxxxxxxxx
以上示例中触发器完成的任务为:
  • 强制刷新应用数据源(检查数据源是否更新, 若更新则拉取最新数据)。
  • 部署最新版本应用至目标集群。