适用场景
• 希望使用应用中心
• 由于安全合规等问题无法将应用部署模板托管在git仓库中
前置资源准备
创建Template数据源
容器服务控制台 -> 市场 -> 编排模板
创建模板appcenter-template-demo,包含deployment、service和ingress 3个资源
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
---
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
创建完毕
创建应用
应用中心 -> 应用 -> 创建应用
通用
应用名称: appcenter-template-demo
部署策略: 手动
源
类型:自定义模板
模板:appcenter-template-demo
目标集群
集群:in-cluster(https://kubernetes.default.svc)
命名空间:demo-template
点击 创建
部署应用
点击应用可以查看应用详情, 下图是示例应用的Kubernetes资源全量拓扑结构
点击右上角的部署, 默认勾选的要部署资源有deployment、service和ingress资源
这里的黄色的小标识OutOfSync代表的意思是,当前模板描述的资源和Kubernetes集群内的实际情况不一致,也就是说,目前的应用模板并没有部署到集群中,下面我们点击右上角的部署按钮,将应用部署到集群中。
点击部署完成应用部署
稍等片刻应用就会部署完毕,整个部署过程会实时的展现在用户面前,最终的部署样式如图所示。这里最下方的状态显示为Healthy 和Synced,表示当前模板已经部署到Kubernetes 集群中,且已经符合部署模板的期望状态。
除了查看整个应用的部署拓扑外,我们还可以查看应用的流量结构,点击右上角的图标就可以观察这个应用的流量拓扑情况。
更新应用
下面我们来演示一下如何更新应用, 首先需要在编排模板中更新appcenter-template-demo, 本示例中我们把Deployment资源中的image tag从blue改为red,此时您会发现appcenter-template-demo模板有了新的历史版本记录
此时回到应用中心页面,手动点击 刷新 -> 强制刷新(若部署策略为自动,则应用中心每3分钟自动检查数据源更新)
可以看到应用状态为OutOfSync, 意为当前环境中应用状态与数据源中所声明的状态不一致
点击 版本差异 可以查看本次变更的详细内容
再次点击部署,更新集群环境中的应用到最新版本
可以看到应用已经更新为image tag为red的新版本
应用回滚
历史版本/回滚 -> 选择需要回滚的历史版本 -> 回滚
回滚过程中,可以刷新查看具体的情况,回滚完毕后,可以看到镜像已经回到了blue,但是整个应用的状态是OutOfSync,这个是因为和git里面存放的部署模板不一致导致的。