Kubernetes 部署編排
本文主要介紹云效 AppStack 應(yīng)用 Kubernetes 部署編排操作方法。
創(chuàng)建 Kubernetes 部署編排
基于K8s集群的容器化部署方式,使用YAML定義應(yīng)用部署架構(gòu),支持多種K8s資源類型。
在
,單擊 從模板開始 。選擇應(yīng)用編排模板應(yīng)用編排模板 )或者云效示例模板。
(詳見全局設(shè)置單擊 確定 后,所選模板實(shí)例化為當(dāng)前應(yīng)用的編排內(nèi)容(模板僅用于初始化,修改模板不會影響已有應(yīng)用),進(jìn)入編排編輯頁面。
在應(yīng)用編排編輯頁面,您可以對編排內(nèi)容進(jìn)行以下修改:
修改 編排組件 名稱或描述。
修改組件 YAML 具體內(nèi)容。
添加/刪除組件。
修改 鏡像與占位符。
使用占位符和變量
云效 AppStack 應(yīng)用編排支持使用占位符 {{ }}
和變量實(shí)現(xiàn)一套編排多環(huán)境差異化部署,實(shí)現(xiàn)變量部署時動態(tài)注入。
制品占位符
支持定義制品占位符{{ .AppStack.image.xxx}}
與{{ .AppStack.artifact.xxx }}
,在部署單時動態(tài)輸入鏡像/制品包,或者在流水線部署階段自動注入上游構(gòu)建階段產(chǎn)出的制品。
自定義占位符
以添加 port 自定義占位符實(shí)現(xiàn)多環(huán)境不同端口啟動服務(wù)為例:
修改YAML內(nèi)容,在 YAML 編輯區(qū)域敲擊
{{ .Values.port }}
,定義占位符。單擊 提取占位符。
占位符列表中將出現(xiàn)新增的 port 占位符。
在開發(fā)和測試環(huán)境變量組里分別添加 port 變量,取值為 8080 和 8081。
在占位符列表中,將 port 占位符的取值來源設(shè)置為變量,并選擇 port。
單擊 保存,編排校驗通過后,即完成了 K8s 編排在不同環(huán)境不同端口啟動服務(wù)的配置。開發(fā)環(huán)境部署時,將 8080 賦值給 containerPort;測試環(huán)境部署時,將 8081 賦值給 containerPor。
預(yù)置占位符
AppStack 提供預(yù)置占位符,簡化應(yīng)用編排配置。
占位符命名空間 | 名稱 | 數(shù)據(jù)類型 | 類型 | 預(yù)填值 | 使用說明 |
AppStack | appName | 字符串 | 變量 | ${APPSTACK_APP_NAME} | AppStack 預(yù)置占位符,值為當(dāng)前應(yīng)用名 |
AppStack | envName | 字符串 | 變量 | ${APPSTACK_ENV_NAME} | AppStack 預(yù)置占位符,值為當(dāng)前環(huán)境名稱 |
AppStack | image | 對象 | 常量 | -- | AppStack 預(yù)置占位符,用于定義鏡像, 如 |
AppStack | artifact | 對象 | 變量 | -- | AppStack 預(yù)置占位符,用于定義制品, 如 |
應(yīng)用編排示例場景
使用Go template語法靈活編排
云效AppStack應(yīng)用編排支持Go template語法,使用Go template語法可以靈活編排你的應(yīng)用,以下為兩個常用場景示例。
使用 if 差異化配置 YAML 區(qū)塊,
if
關(guān)鍵字為生產(chǎn)環(huán)境增加附加標(biāo)識。...... template: metadata: labels: run: app-demo # 使用 if 差異化配置 {{- if eq .AppStack.envName "production" }} msePilotAutoEnable: "on" msePilotCreateAppName: "app-demo" {{- end}} spec: containers: ......
使用 range 遍歷對象循環(huán)配置,
range
關(guān)鍵字遍歷對象,循環(huán)配置。metadata: name: spring-boot-{{ .AppStack.envName }} labels: run: spring-boot-{{ .AppStack.envName }} # 使用 range 遍歷標(biāo)簽對象配置 labels {{ range $key,$value := .Values.labels }} {{ $key }}: {{ $value }} {{ end }} namespace: {{ .Values.namespace }}
labels 變量取值如
{"key1":"value1","key2":"value2"}
,環(huán)境部署時,最終渲染 YAML 如下。
編輯應(yīng)用編排
添加組件
Kubernetes應(yīng)用編排通常對應(yīng)一到多個組件,可以按需添加多個不同類型的資源服務(wù)組件。
在編排組件區(qū)域,單擊
。填寫組件名稱(組件唯一標(biāo)識)和描述。
選擇組件模板,云效 AppStack 提供使用的Kubernetes資源組件類型的YAML模板如下:
組件模板
描述
Deployment
Deployment (無狀態(tài)應(yīng)用)。
ConfigMap
ConfigMap (非機(jī)密配置數(shù)據(jù))。
Service
Service (服務(wù)訪問策略)。
Secret
Secret(機(jī)密配置數(shù)據(jù)) 。
Ingress
Ingress(從集群外部到集群內(nèi)服務(wù)的HTTP/HTTPS路由規(guī)則)。
PVC
PVC(持久卷存儲聲明)。
空模板
支持任意kubernetes內(nèi)置資源類型,也支持CRD。
您也可以選擇空模板,自定義編排內(nèi)容。
設(shè)置組件部署順序
Kubernetes應(yīng)用編排支持通過拖拉拽自定義調(diào)整組件部署順序。部署順序決定了應(yīng)用環(huán)境部署、回滾時的組件資源下發(fā)順序,支持串行和并行部署。環(huán)境刪除時將按部署逆序刪除組件資源。
刪除組件
選中組件tab,單擊叉號并保存即可刪除組件。
編輯組件
選中組件tab,單擊設(shè)置組件圖標(biāo),打開彈窗修改組件名稱和描述。
暫存/保存編排
AppStack每隔數(shù)秒會自動暫存編排的修改,您也可以單擊暫存按鈕手動暫存,暫存只是記錄一個編排修訂版本,不會立即生效。
單擊保存按鈕記錄編排修訂版本,注意?:編排文件的更新需要在下一次部署后才會生效。