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

简介: 容器服务实现完整分批发布。

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.



相关实践学习
使用ACS算力快速搭建生成式会话应用
阿里云容器计算服务 ACS(Container Compute Service)以Kubernetes为使用界面,采用Serverless形态提供弹性的算力资源,使您轻松高效运行容器应用。本文将指导您如何通过ACS控制台及ACS集群证书在ACS集群中快速部署并公开一个容器化生成式AI会话应用,并监控应用的运行情况。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
7月前
|
XML Java 应用服务中间件
【SpringBoot(一)】Spring的认知、容器功能讲解与自动装配原理的入门,带你熟悉Springboot中基本的注解使用
SpringBoot专栏开篇第一章,讲述认识SpringBoot、Bean容器功能的讲解、自动装配原理的入门,还有其他常用的Springboot注解!如果想要了解SpringBoot,那么就进来看看吧!
725 2
|
容器
阿里云最新产品手册——云基础产品与基础设施——计算——弹性容器实例——产品功能
阿里云最新产品手册——云基础产品与基础设施——计算——弹性容器实例——产品功能自制脑图
480 1
|
开发框架 前端开发 Java
【Spring】Spring框架介绍,功能模块,容器知识和有关Spring的生态圈的详细讲解
【Spring】Spring框架介绍,功能模块,容器知识和有关Spring的生态圈的详细讲解
742 0
|
Ubuntu 网络安全 容器
KubeSphere 是一个开源的容器平台,提供丰富的功能和便捷的操作界面,适用于企业容器化部署和管理
KubeSphere 是一个开源的容器平台,提供丰富的功能和便捷的操作界面,适用于企业容器化部署和管理。本文详细介绍了如何在 Ubuntu 22.04 上安装 KubeSphere,包括系统要求、安装依赖项、设置防火墙、下载安装脚本、选择安装选项、验证安装结果等步骤,并提供了常见问题的解决方法。希望本文能为读者提供实用的参考和帮助。
437 3
|
Java 数据安全/隐私保护 容器
Java详解:GUI容器组件 | 功能组件
Java详解:GUI容器组件 | 功能组件
491 0
|
存储 Kubernetes 监控
容器服务 Kubernetes 版 ACK功能特性
分布式云容器平台ACK One(Distributed Cloud Container Platform for Kubernetes)是阿里云面向混合云、多集群、分布式计算、容灾等场景推出的企业级云原生平台。ACK One可以连接并管理您任何地域、任何基础设施上的Kubernetes集群,并提供一致的管理和社区兼容的API,支持对计算、网络、存储、安全、监控、日志、作业、应用、流量等进行统一运维
465 1
|
监控 NoSQL Redis
Redis哨兵,Redis哨兵核心功能如何一个云服务器完成6个节点的搭建-docker什么是docker是否可以把六个容器,都写到同一个ym配置中,一次都启动,不就直接保证互通问题了吗?
Redis哨兵,Redis哨兵核心功能如何一个云服务器完成6个节点的搭建-docker什么是docker是否可以把六个容器,都写到同一个ym配置中,一次都启动,不就直接保证互通问题了吗?
|
前端开发 Java 测试技术
面试题:Spring容器有哪些功能?
面试题:Spring容器有哪些功能?
196 0
|
XML 设计模式 开发框架
【Spring技术实战】带你正视一下Spring祖容器之BeanFactory的原理与功能分析
【Spring技术实战】带你正视一下Spring祖容器之BeanFactory的原理与功能分析
658 0
【Spring技术实战】带你正视一下Spring祖容器之BeanFactory的原理与功能分析

相关产品

  • 容器计算服务
  • 容器服务Kubernetes版