当前位置:首页 >热点 >基于Rancher应用商店实现K8s服务一键升级的方案介绍 且纷纷移植到了K8s集群中

基于Rancher应用商店实现K8s服务一键升级的方案介绍 且纷纷移植到了K8s集群中

2024-06-30 17:48:51 [百科] 来源:避面尹邢网

基于Rancher应用商店实现K8s服务一键升级的基于方案介绍

作者:移动Labs 云计算 Rancher是一个开源的企业级多集群K8s管理平台,实现了K8s集群在混合云+本地数据中心的应用商集中部署与管理,为采用容器的店实的方团队提供了完整的软件堆栈,解决了跨任何基础设施架构管理多个K8s集群的升级绍运维和安全挑战。

作者 | 郭杨勇,案介单位:智慧家庭运营中心成都业务支持中心

Labs 导读

随着云计算逐步向云原生靠拢,基于越来越多的应用商传统企业应用进行了容器化的改造,且纷纷移植到了K8s集群中。店实的方通过云原生的升级绍 DevOps 应用开发模式,可以做到应用的案介敏捷开发,提升业务应用的基于迭代速度,高效响应用户需求。应用商不同于传统的店实的方云计算平台,云原生的升级绍应用无法直接通过ssh等方式直接对云主机进行命名行操作,与传统的案介jenkins、gitlab-ci等持续交付中间件的对接都需要进行一定的改造。

基于Rancher应用商店实现K8s服务一键升级的方案介绍 且纷纷移植到了K8s集群中

Part 01 概述

K8s是业界对Kubernetes的一般简称,是云原生基金会(CNCF)的核心拳头产品,包含了用于管理和编排云原生容器的一套开源软件系统,它提供了云原生容器化部署、规划、更新、监控和维护的全套功能,基于K8s搭建的云原生平台,能很好的做到基于项目、命名空间的账号权限和资源配置的隔离。根据CNCF的最新统计,目前全球的后端开发者已有31%,超过560万人在使用K8s,K8s已成为云原生改造的首选解决方案。

基于Rancher应用商店实现K8s服务一键升级的方案介绍 且纷纷移植到了K8s集群中

Rancher是一个开源的企业级多集群K8s管理平台,实现了K8s集群在混合云+本地数据中心的集中部署与管理,为采用容器的团队提供了完整的软件堆栈,解决了跨任何基础设施架构管理多个K8s集群的运维和安全挑战。Rancher除了提供统一的K8s集群管理页面外,还提供了非常完善的API,方便用户与持续交付平台进行对接。Rancher管理页面同K8s开源社区的另一个重要工具-Helm相结合就可以实现K8s应用的一键自动升级,Helm 是管理 Kubernetes 的应用管理工具(https://v2.helm.sh),相当于centos的yum,python中pip,node中的npm。

基于Rancher应用商店实现K8s服务一键升级的方案介绍 且纷纷移植到了K8s集群中

Part 02 实现方法

以下将以Rancher2.6.3为例,逐步介绍如何通过Rancher的API来实现K8s应用的一键升级。首先,在进行API对接前,要做好基于应用商店的初始化操作。初始化操作包括:

1、将编排好的Helm配置文件包推送到统一的Helm应用商店中,并且通过“应用商店=》添加应用商店”将Helm应用商店配置添加到Rancher的商店设置中。

图片

2、在添加了应用商店配置后,就可以通过“应用商店=》启动”,查看或刷新应用列表,并且选择需要启动的应用,在指定命名空间后进行安装。

图片

其次,需要通过Rancher管理页面查看和确认应用列表更新、应用升级、应用回滚相关的API接口URL,同时创建API接口调用所需要的认证token。详细操作包括:

1、通过Rancher的功能菜单=》API&Keys,创建API Key并指定API key的作用范围。

图片

图片

2、通过Rancher管理页面的“应用商店=》管理=》API查看=》refresh”,查看并确认应用商店列表刷新的API。

图片

图片

商店列表刷新的API相对简单,具体格式如下:

curl -H"Authorization:Bearer { API_KEY}" \
-X POST \
-k --connect-timeout 20 -m 30 --retry-delay 2 --retry 3 \
{ Rancher_Domain}/v3/projectCatalogs/{ Project_ID}:{ APP_Store}?action=refresh

可变字段中API_KEY就是第一步中创建的API key,Rancher_Domain是Rancher页面的域名,Project_ID为应用商店所作用项目的ID,APP_Store为需要刷新的应用商店的名称。

3、通过“应用商店=》应用列表=》API查看=》upgrade/rollback”,查看并确认应用相关的API接口信息。

图片

图片

应用更新的API就要复杂一点,不过也只需要修改几个重要的可变字段即可,具体格式如下:

curl -H "Authorization:Bearer { API_KEY}" \
-d "{ "externalId":"catalog://?catalog='{ APP_Store}'&template='{ APP_Name}'&version='{ APP_Version}'", "forceUpgrade":true, "valuesYaml":""}'"\
-X POST -k --connect-timeout 20 -m 30 --retry-delay 2 --retry 3 \
{ Rancher_Domain}/v3/project/local:{ Project_ID}/apps/{ Project_ID}

可变字段中API_KEY为第一步中创建的API key,Rancher_Domain是Rancher页面的域名,Project_ID为应用商店所作用项目的ID,APP_Store为需要刷新的应用商店的名称,APP_Name为需要升级的应用名称,APP_Version为升级的目标版本号。

最后,就可以根据应用相关的API URL和API Key,编写应用列表刷新、应用升级/回滚的脚本。脚本包括了:

- 应用列表刷新脚本

curl -H"Authorization:Bearer token-pggq6:zlr95srxvb88vqdtctrt8h2d5k79k94h964x2vxvmhf7zk754ltskz" \
-X POST \
-k --connect-timeout 20 -m 30 --retry-delay 2 --retry 3 \
https://rancher.5gvr.komect.com/v3/projectCatalogs/p-6rt82:vr-chartmuseum?action=refresh

- 应用升级脚本

curl -H "Authorization:Bearer token-pggq6:zlr95srxvb88vqdtctrt8h2d5k79k94h964x2vxvmhf7zk754ltskz" \
-d "{ "externalId":"catalog://?catalog='vr-chartmusem'&template='cmvr-ingress'&version='1.0.0.beta'", "forceUpgrade":true, "valuesYaml":""}'"\
-X POST -k --connect-timeout 20 -m 30 --retry-delay 2 --retry 3 \
https://rancher.5gvr.komect.com/v3/project/local:p-6rt82/apps/p-6rt82

到这里,就完成了Rancher自动刷新应用列表和应用升级所需API调用的脚本编写,只需要将相关脚本集成到Jenkins或Gitlab-ci等持续发布中间件的job中,就可以实现K8s应用的自动灰度升级,相对于传统的ssh脚本操作,要更加安全高效。

当然除了以上两个有关应用列表刷新和应用升级的API之外,有需要的时候也可以通过Rancher管理页面学习专门针对Deployment、Statefulset或者具体Pod的API接口,扩展更丰富的自动化运维功能。

参考文献

[1]Demystifying Kubernetes in less than 100 slides  https://collabnix.com/demystifying-kubernetes-in-less-than-100-slides/

[2]CNCF Landscape Guide  https://landscape.cncf.io/guide#orchestration-management--scheduling-orchestration

[3]Rancher中文文档  https://docs.rancher.cn/​

责任编辑:未丽燕 来源: 移动Labs RancherK8s集群云计算

(责任编辑:焦点)

    推荐文章
    热点阅读