阿里云镜像服务为每个仓库提供了触发器的功能,帮助用户在镜像构建成功后进行消息的推送,实现持续集成的后续流程。本文将演示如何在镜像构建成功后,自动触发容器服务上应用中心拉取新的镜像,并进行重新部署。
本示例的演示内容如下所示:
1)创建编排模板,模板中应用容器镜像版本为liusheng-registry.cn-beijing.cr.aliyuncs.com/liusheng/rollouts-demo:blue
2)使用应用中心创建应用并将其部署至容器集群,访问当前应用
3)在应用中心中创建触发器并记录触发器URL
4)在容器镜像服务中配置触发器
5)向容器镜像服务推送新版本容器镜像,liusheng-registry.cn-beijing.cr.aliyuncs.com/liusheng/rollouts-demo:red
6)查看容器集群中应用版本是否已经自动更新为liusheng-registry.cn-beijing.cr.aliyuncs.com/liusheng/rollouts-demo:red
1)创建编排模板

apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: demo
name: demo
spec:
minReadySeconds: 5
progressDeadlineSeconds: 60
revisionHistoryLimit: 5
selector:
matchLabels:
app: demo
strategy:
rollingUpdate:
maxUnavailable: 1
type: RollingUpdate
template:
metadata:
annotations:
prometheus.io/port: "9797"
prometheus.io/scrape: "true"
creationTimestamp: null
labels:
app: demo
spec:
containers:
- image: liusheng-registry.cn-beijing.cr.aliyuncs.com/liusheng/rollouts-demo:blue
imagePullPolicy: IfNotPresent
name: demo
ports:
- containerPort: 8080
name: http
protocol: TCP
readinessProbe:
initialDelaySeconds: 5
tcpSocket:
port: 8080
timeoutSeconds: 5
resources:
limits:
cpu: "2"
memory: 512Mi
requests:
cpu: 100m
memory: 64Mi
status: {}
---
apiVersion: v1
kind: Service
metadata:
name: demo-svc
spec:
selector:
app: demo
ports:
- protocol: TCP
port: 80
targetPort: 8080
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: demo
labels:
app: demo
spec:
rules:
- host: app.demo.example.com
http:
paths:
- backend:
serviceName: demo-svc
servicePort: 80
---
2) 创建示例应用
应用中心(公测)-> 创建应用:
应用来源选择YAML模板,点击下一步:
输入应用名称,选择步骤1)中创建的模板并点击下一步:
选择需要发布应用到哪个目标集群和命名空间,点击开始发布:
发布确认:
应用发布完毕后,在应用详情页面可以看到应用资源拓扑图和子资源运行状态,如下所示:
通过Ingress资源访问应用如下如所示,应用版本为blue:
3)应用中心内未应用生成触发器
进入应用详情页面->点击触发器按钮->点击创建生成触发器
复制并保存触发器地址,请妥善保管触发器URL,以免泄露。
4)liusheng-registry.cn-beijing.cr.aliyuncs.com/liusheng/rollouts-demo:blue镜像所在的镜像仓库中创建触发器,本示例中触发器名称为appcenter_trigger_demo,触发器URL为步骤3)中生成的触发器地址,触发方式为全部触发,容器镜像服务触发器的使用说明参见
https://help.aliyun.com/document_detail/60949.html5) 向liusheng-registry.cn-beijing.cr.aliyuncs.com/liusheng/rollouts-demo:blue所在镜像仓库推送一个新镜像 liusheng-registry.cn-beijing.cr.aliyuncs.com/liusheng/rollouts-demo:green
docker pull registry.cn-hangzhou.aliyuncs.com/acs/rollouts-demo:green
docker tag registry.cn-hangzhou.aliyuncs.com/acs/rollouts-demo:green liusheng-registry.cn-beijing.cr.aliyuncs.com/liusheng/rollouts-demo:green
docker push liusheng-registry.cn-beijing.cr.aliyuncs.com/liusheng/rollouts-demo:green
6) 查看容器镜像服务触发器的访问记录,触发器执行如有异常,可以在详情信息Response Body中查看具体原因:
7)查看编排模板版本是否更新且应用镜像是否更新为liusheng-registry.cn-beijing.cr.aliyuncs.com/liusheng/rollouts-demo:green
8)验证运行于实际环境中的应用版本是否已更新为green