阿裡雲鏡像服務為每個倉庫提供了觸發器的功能,幫助使用者在鏡像建構成功後進行消息的推送,實作持續內建的後續流程。本文将示範如何在鏡像建構成功後,自動觸發容器服務上應用中心拉取新的鏡像,并進行重新部署。
本示例的示範内容如下所示:
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