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

本文涉及的产品
容器镜像服务 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.



相关实践学习
巧用云服务器ECS制作节日贺卡
本场景带您体验如何在一台CentOS 7操作系统的ECS实例上,通过搭建web服务器,上传源码到web容器,制作节日贺卡网页。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
1月前
|
安全 网络安全 数据安全/隐私保护
利用Docker的网络安全功能来保护容器化应用
通过综合运用这些 Docker 网络安全功能和策略,可以有效地保护容器化应用,降低安全风险,确保应用在安全的环境中运行。同时,随着安全威胁的不断变化,还需要持续关注和研究新的网络安全技术和方法,不断完善和强化网络安全保护措施,以适应日益复杂的安全挑战。
44 5
|
1月前
|
Ubuntu 网络安全 容器
KubeSphere 是一个开源的容器平台,提供丰富的功能和便捷的操作界面,适用于企业容器化部署和管理
KubeSphere 是一个开源的容器平台,提供丰富的功能和便捷的操作界面,适用于企业容器化部署和管理。本文详细介绍了如何在 Ubuntu 22.04 上安装 KubeSphere,包括系统要求、安装依赖项、设置防火墙、下载安装脚本、选择安装选项、验证安装结果等步骤,并提供了常见问题的解决方法。希望本文能为读者提供实用的参考和帮助。
36 3
|
5月前
|
Java 数据安全/隐私保护 容器
Java详解:GUI容器组件 | 功能组件
Java详解:GUI容器组件 | 功能组件
|
7月前
|
存储 Kubernetes 监控
容器服务 Kubernetes 版 ACK功能特性
分布式云容器平台ACK One(Distributed Cloud Container Platform for Kubernetes)是阿里云面向混合云、多集群、分布式计算、容灾等场景推出的企业级云原生平台。ACK One可以连接并管理您任何地域、任何基础设施上的Kubernetes集群,并提供一致的管理和社区兼容的API,支持对计算、网络、存储、安全、监控、日志、作业、应用、流量等进行统一运维
229 1
|
6月前
|
监控 NoSQL Redis
Redis哨兵,Redis哨兵核心功能如何一个云服务器完成6个节点的搭建-docker什么是docker是否可以把六个容器,都写到同一个ym配置中,一次都启动,不就直接保证互通问题了吗?
Redis哨兵,Redis哨兵核心功能如何一个云服务器完成6个节点的搭建-docker什么是docker是否可以把六个容器,都写到同一个ym配置中,一次都启动,不就直接保证互通问题了吗?
|
容器
阿里云最新产品手册——云基础产品与基础设施——计算——弹性容器实例——产品功能
阿里云最新产品手册——云基础产品与基础设施——计算——弹性容器实例——产品功能自制脑图
143 1
|
开发框架 前端开发 Java
【Spring】Spring框架介绍,功能模块,容器知识和有关Spring的生态圈的详细讲解
【Spring】Spring框架介绍,功能模块,容器知识和有关Spring的生态圈的详细讲解
191 0
|
7月前
|
前端开发 Java 测试技术
面试题:Spring容器有哪些功能?
面试题:Spring容器有哪些功能?
42 0
|
容器
阿里云最新产品手册——阿里云核心产品——分布式云容器平台ACK One——产品功能
阿里云最新产品手册——阿里云核心产品——分布式云容器平台ACK One——产品功能自制脑图
120 2
|
XML Java 开发者
Spring-IOC容器接口设计与功能
上一篇文章中我们说到了Spring IOC提供了一个基本的JavaBean容器,通过IOC容器把获取资源的方式反转,Spring使用IOC容器管理依赖关系,将依赖注入到组件中,使依赖的管理和配置更加灵活。那么在Spring中,IOC容器具体是如何设计和实现的呢?在Spring中,IOC容器是如何体现的呢?下面我们一起学习下。
110 0

相关产品

  • 容器计算服务