文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-12-01 19:38

关注

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

来源:移动Labs内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯