本文介紹服務商如何通過容器部署物管理容器鏡像版本,建立關聯部署物的服務,向使用者提供建立和更新服務執行個體功能。
準備工作
本樣本中,將在ACK叢集中建立容器資源。因此需要提前準備一個可用的ACK叢集。關於建立ACK叢集操作,請參見建立ACK託管叢集。
本樣本中,使用Nginx鏡像模擬部署物升級流程,並將鏡像版本從nginx 1.7升級至nginx 1.8。您需要將鏡像提前下載到本地。
docker pull nginx:1.7 docker pull nginx:1.8
流程介紹

步驟一:建立和發布部署物
建立服務前,需要先完成部署物的建立和發布。
登入計算巢控制台。
在左側導覽列中,選擇服務部署物,在部署物頁簽中單擊建立部署物。

在建立部署物介面,填寫部署物資訊,然後根據頁面提示,擷取訪問憑證並推送nginx:1.7鏡像。更多資訊,請參見建立部署物。

單擊發布部署物。
可在部署物管理頁面單擊部署物名稱。進入部署物詳情介面後即可看到部署物版本1已經是可用狀態了。

步驟二:建立服務
登入計算巢控制台。
在左側導覽列中,選擇我的服務,並在我的服務頁面中選擇我建立的服務,然後單擊建立新服務。
在建立新服務介面,根據規劃配置相關參數。
此處只列舉建立服務需要特別配置的參數,其他參數配置,請參見建立私人部署服務。
在錄入模板地區的模板內容,填寫使用自訂鏡像建立單ECS執行個體的服務範本。模板內容,請參見模板樣本。
在部署物關聯處,設定容器鏡像關聯。
關聯已建立的容器鏡像部署物,並選擇部署物的版本為版本1。

單擊儲存服務。
測試服務。
服務儲存後,您需要對建立的服務進行測試,保證其正常可用。更多資訊,請參見測試服務。
發布服務。
服務測試通過後,再提交審核,審核通過後即可發布上線。更多資訊,請參見上線服務。
步驟三:建立和查看服務執行個體
建立服務執行個體。
更多資訊,請參見建立私人部署服務執行個體。
查看服務執行個體的版本資訊。
在計算巢控制台,找到您建立的服務執行個體,然後單擊服務執行個體ID進入服務執行個體詳情頁,查看服務執行個體的版本資訊。

在ACKContainer Service控制台查看容器鏡像資訊。

步驟四:更新部署物
登入計算巢控制台。
在左側導覽列,單擊服務部署物,進入部署物管理頁面。
找到已建立的部署物,單擊建立新版本,進入建立新版本頁面,擷取訪問憑證,推送nginx:1.8鏡像。

單擊發布部署物。
步驟五:更新服務
登入計算巢控制台。
到需要更新的服務,單擊建立新版本,進入建立新版本介面,更新參數。
此處只列舉更新鏡像需要特別配置的參數,其他參數配置,請參見更新服務。
在部署物關聯的設定容器鏡像關聯處,將關聯鏡像修改為部署物更新後的鏡像版本。

在升級配置地區的升級資訊處,配置升級資訊。
配置項
配置樣本值
是否支援升級
支援使用者升級服務執行個體
是否支援復原
支援使用者復原服務執行個體
升級描述
nginx1.8版本
支援升級版本
全部版本
升級服務元件
服務配置
單擊提交審核。
步驟六:升級服務執行個體
登入計算巢控制台。
在左側導覽列中選擇服務執行個體。
單擊服務執行個體ID,進入服務執行個體詳情頁面。單擊右上方的升級服務執行個體。進入升級服務執行個體彈窗。
選擇升級版本,然後單擊開始升級。

步驟七:查看升級後的服務執行個體版本和鏡像資訊
登入計算巢控制台。
在左側導覽列中,單擊服務執行個體。
找到您建立的服務執行個體,單擊服務執行個體ID,進入服務執行個體詳情頁,查看服務執行個體版本是否更新。在Container Service控制台查看Nginx鏡像是否已經更新。

模板樣本
ROSTemplateFormatVersion: '2015-09-01'
Description:
en: A simple demo that deploys a MySQL and a container-base app into ack.
zh-cn: 在ACK中部署容器應用和MySQL。
Parameters:
ClusterId:
Type: String
Description:
en: >-
The ID of Kubernetes ClusterId in which application deployed.
zh-cn: >-
部署應用程式的K8s叢集ID
AllowedPattern: '[0-9a-z]+$'
Label:
en: Kubernetes ClusterId
zh-cn: K8s叢集ID
ConstraintDescription:
en: >-
must be lowercase letters or numbers
zh-cn: '叢集ID必須由小寫字母或者數字組成'
Resources:
ClusterApplication:
Type: ALIYUN::CS::ClusterApplication
Properties:
ClusterId:
Ref: ClusterId
DefaultNamespace:
Ref: ALIYUN::StackName
YamlContent: |
apiVersion: v1
data:
.dockerconfigjson: {{ computenest::acr::dockerconfigjson }}
kind: Secret
metadata:
name: computenest
type: kubernetes.io/dockerconfigjson
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: {{ computenest::acrimage::nginx }}
ports:
- containerPort: 80
imagePullSecrets:
- name: computenest
---
apiVersion: v1
kind: Service
metadata:
labels:
app: nginx
name: nginx-svc
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer
Metadata:
ALIYUN::ROS::Interface:
ParameterGroups:
- Parameters:
- ClusterId
Label:
en: ACK Configuration
zh-cn: ACK參數配置