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

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

作者:移动Labs 2022-07-04 11:28:14

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

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

Labs 导读

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

Part 01 概述

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

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/​

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/229372.html<

(0)
管理的头像管理
上一篇2025-04-18 17:57
下一篇 2025-04-18 17:58

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注