建立容器服务的分批发布功能

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 容器服务实现完整分批发布。

1. 现状:

     当前容器服务已经支持支持分批发布,详细参考帮助文档:https://help.aliyun.com/document_detail/87370.html?spm=5176.10695662.1996646101.searchclickresult.2929602fIhXjHv

但是控制台功能有限,目前有以下局限:

  1. 控制台分批发布不能修改分批的批次数目,只能2批;
  2. 控制台分批发布不能设置拉取私有镜像的 imagePullSecret,目前的设置不能保存;
  3. 控制台分批发布不能设置关联服务到已有的服务,对于从 deployment 迁移到分批发布功能不能满足需求。
  4. 一个分批发布任务只支持一个服务,不能支持多个服务
以上问题可以通过 使用控制台结合kubectl 命令方式实现。
前提: 你已经安装 kubectl 并链接到容器服务集群。

2. 分批发布设置:

     2.1 控制台建立分批发布任务:

      使用阿里云容器服务建立分批发布任务,详细建立过程参考阿里云文档:
设置服务,如果想使用已有服务,因为控制台强制要求必须关联新建服务,可以建立一个内部访问的集群服务先,事后删除。

2.2 自定义设置分批批次:

命令操作如下:

## 查看指定命名空间的分批发布任务,不写 -n参数表示 default
kubectl get BatchRelease -n namespace
## 这时可以看到上一步建立的分批任务

## 修改分批批次数目
kubectl edit BatchRelease app-alpha-default-yunxiao

# vi 操作编辑以下内容
apiVersion: alicloud.com/v1beta1
kind: BatchRelease
metadata:
  annotations:
    aliyun.batchnum: "2"  ###修改批次数目
  name: app-alpha-default-yunxiao
  namespace: namespace
#修改完成 !wq 保存退出即可

2.3 设置ImagePullSecret

  • 方法1:
设置 StatefulSet secret (不推荐)
【有状态副本集】: 查看 yaml修改 yaml,增加 

imagePullSecrets:
        - name: *********-*** 
此种方法在批量发布更新时,该 secret设置会被覆盖丢失。

  • 方法2:
设置 ServiceAccount的 ImagePullSecret:

# 查看 ServiceAccount集合
kubectl get serviceaccount
##修改 ServiceAccount值:
kubectl edit serviceaccount default
##增加 imagePullSecret设置:
imagePullSecrets:
        - name: *********-*** 

2.4 定义分批发布指向已有服务


# 将已有服务的 yaml使用 base64加密字符串
kubectl get services sso-web-443 -o=yaml |base64
# 系统生成 base64加密字符串
# 获取加密串,编写 secret的 yaml
vi sso-web-secret.yaml
apiVersion: v1
kind: Secret
type: Opaque
metadata:
  name: batchrelease-web-sso-443-svc.secret
data:
  yaml: YXBpVmVyc2lvbjogdjEKa2luZDogU2Vy
## 长加密字符串有换行注意去掉换行:
# 生成 secret:
kubectl create -f sso-web-secret.yaml
# 设置分批发布服务指向生成 secret的服务: ## 查看分批任务 kubectl get BatchRelease NAME AGE app-alpha-default-yunxiao 10d #​# 修改分批任务的 service指向上一步生成的 service secret kubectl edit BatchRelease app-alpha-default-yunxiao apiVersion: alicloud.com/v1beta1 kind: BatchRelease metadata: annotations: aliyun.batchnum: "3" creationTimestamp: 2018-09-30T02:18:08Z generation: 1 name: app-alpha-default-yunxiao namespace: default resourceVersion: "13884105" selfLink: /apis/alicloud.com/v1beta1/namespaces/default/batchreleases/wukong-alphago-default-aone uid: 12a06d8d-c457-11e8-b4bc-00163e0104d1 spec: serviceSecretName: batchrelease-web-sso-443-svc.secret statefulSetSecretName: batchrelease-web-sso-default-yunxiao.88916.secret status: control: {} release: progress: finished status: Success resources: Service: name: sso-web-443 ## 修改指向已有服务 namespace: default status: Success StatefulSet: name: batchrelease-sso-web-default-aone namespace: default status: Success # 设置原有服务指向新的分批发布的 app: ## 查看服务列表: kubectl get services ## 编辑原有服务的 app: kubectl edit services web-sso-443 ## 修改selector:-->app:指向新的分批发布 app apiVersion: v1 kind: Service metadata: creationTimestamp: 2018-08-16T03:53:47Z name: web-sso-443 namespace: default resourceVersion: "13881629" selfLink: /api/v1/namespaces/default/services/web-sso-443 uid: fa77c1b2-a107-11e8-8978-00163e010d3c spec: clusterIP: 172.27.4.19 externalTrafficPolicy: Cluster ports: - nodePort: 30576 port: 443 protocol: TCP targetPort: 9090 selector: aliyun.version: "8" app: web-sso-default-aone sessionAffinity: None type: LoadBalancer status: loadBalancer: ingress: - ip: 39.107.21.32

最后删除不再使用的原有 deployment,服务等,完成分批发布.

2.5. 设置多个服务到同一个分批任务

容器服务中增加服务,指向新建立的 app,或者使用类似步骤4的操作,修改老的服务指向该 app.


相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
3月前
|
前端开发 Java 测试技术
面试题:Spring容器有哪些功能?
面试题:Spring容器有哪些功能?
21 0
|
8月前
|
容器
阿里云最新产品手册——云基础产品与基础设施——计算——弹性容器实例——产品功能
阿里云最新产品手册——云基础产品与基础设施——计算——弹性容器实例——产品功能自制脑图
115 1
|
10月前
|
开发框架 前端开发 Java
【Spring】Spring框架介绍,功能模块,容器知识和有关Spring的生态圈的详细讲解
【Spring】Spring框架介绍,功能模块,容器知识和有关Spring的生态圈的详细讲解
98 0
|
10月前
|
容器
阿里云最新产品手册——阿里云核心产品——分布式云容器平台ACK One——产品功能
阿里云最新产品手册——阿里云核心产品——分布式云容器平台ACK One——产品功能自制脑图
73 2
|
10月前
|
XML Java 开发者
Spring-IOC容器接口设计与功能
上一篇文章中我们说到了Spring IOC提供了一个基本的JavaBean容器,通过IOC容器把获取资源的方式反转,Spring使用IOC容器管理依赖关系,将依赖注入到组件中,使依赖的管理和配置更加灵活。那么在Spring中,IOC容器具体是如何设计和实现的呢?在Spring中,IOC容器是如何体现的呢?下面我们一起学习下。
|
消息中间件 监控 Cloud Native
基于SpringCloud体系实现的一套支持云原生的分布式微服务架构,提供OAuth2/JWT权限认证、分布式事务、灰度、限流、链路追踪等功能,支持Docker容器化部署、镜像交付、K8S容器编排
lion是基于Spring Cloud体系实现的一套支持云原生的分布式微服务架构,为了让中小型公司解决当下技术瓶颈,快速将现有应用服务架构拆分改造为分布式微服务架构,进入 All-in-Cloud 时代,只需在本架构上进行相关业务开发即可,大大减少了分布式微服务架构的门槛,仅在本框架上做"减法"的目的,使架构师及开发人员不必过多的关注架构本身,只需专注于业务开发
基于SpringCloud体系实现的一套支持云原生的分布式微服务架构,提供OAuth2/JWT权限认证、分布式事务、灰度、限流、链路追踪等功能,支持Docker容器化部署、镜像交付、K8S容器编排
|
Java 容器 Spring
springboot之容器功能
springboot之容器功能
|
C++ 容器
【C++操作手册】利用C++内置STL容器实现单链表各种功能定义
【C++操作手册】利用C++内置STL容器实现单链表各种功能定义
163 0
【C++操作手册】利用C++内置STL容器实现单链表各种功能定义
|
XML 设计模式 开发框架
【Spring技术实战】带你正视一下Spring祖容器之BeanFactory的原理与功能分析
【Spring技术实战】带你正视一下Spring祖容器之BeanFactory的原理与功能分析
237 0
【Spring技术实战】带你正视一下Spring祖容器之BeanFactory的原理与功能分析
|
Java 数据库 容器
SpringBoot从0到实战4:容器功能
在Spring中,如果要引入组件,需要写以下bean.xml配置文件。
SpringBoot从0到实战4:容器功能

相关产品

  • 容器计算服务