本文介绍服务商如何通过容器部署物管理容器镜像版本,创建关联部署物的服务,向用户提供创建和更新服务实例功能。
准备工作
本示例中,将在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进入服务实例详情页,查看服务实例的版本信息。
在ACK容器服务控制台查看容器镜像信息。
步骤四:更新部署物
登录计算巢控制台。
在左侧导航栏,单击服务部署物,进入部署物管理页面。
找到已创建的部署物,单击创建新版本,进入创建新版本页面,获取访问凭证,推送nginx:1.8镜像。
单击发布部署物。
步骤五:更新服务
登录计算巢控制台。
到需要更新的服务,单击创建新版本,进入创建新版本界面,更新参数。
此处只列举更新镜像需要特别配置的参数,其他参数配置,请参见更新服务。
在部署物关联的设置容器镜像关联处,将关联镜像修改为部署物更新后的镜像版本。
在升级配置区域的升级信息处,配置升级信息。
配置项
配置示例值
是否支持升级
支持用户升级服务实例
是否支持回滚
支持用户回滚服务实例
升级描述
nginx1.8版本
支持升级版本
全部版本
升级服务组件
服务配置
单击提交审核。
步骤六:升级服务实例
登录计算巢控制台。
在左侧导航栏中选择服务实例。
单击服务实例ID,进入服务实例详情页面。单击右上角的升级服务实例。进入升级服务实例弹窗。
选择升级版本,然后单击开始升级。
步骤七:查看升级后的服务实例版本和镜像信息
登录计算巢控制台。
在左侧导航栏中,单击服务实例。
找到您创建的服务实例,单击服务实例ID,进入服务实例详情页,查看服务实例版本是否更新。在容器服务控制台查看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参数配置