Helm适配华为云OBS实践分享,更方便地部署、管理复杂应用

沃土云创开源开发者专项计划是华为给开源开发者提供专属激励资源 ,鼓励开发者积极参与开源 for Huawei 适配,践行"让优秀开发者支持更优秀开发者"的理念。

此前我们介绍了Beam的适配过程 ,本文我们分享一位开源开发者参与Helm适配OBS的实践经验,欢迎广大开发者对华为技术栈适配进行讨论。

1. 了解开源项目

Helm 是 Kubernetes 的包管理工具,旨在简化 Kubernetes 应用的部署和管理。通过将 Kubernetes 资源定义为可重用的包(称为"Chart"),Helm 帮助用户更方便地部署、升级和管理复杂的应用。Helm 的核心功能包括 Chart 管理、应用部署、配置管理和仓库管理,这些功能使其成为 Kubernetes 生态中的重要工具,支持通过插件扩展其功能。

Helm 广泛应用于企业级应用、云服务提供商和开源社区,随着云原生应用的普及,Helm 的市场使用范围和影响力也在不断扩大。

2. 分析开源项目

拿到一个开源项目Helm,我们首先要学习Helm的相关文档。比如学习Helm支持的功能、Helm的安装方法、插件支持情况以及插件的安装步骤这些内容。

在进一步分析Helm与华为云OBS的适配方案时,我们在华为云的一个问答区(点击链接进入专属问答区)找到了一个相关Issues《开源软件适配对象存储OBS方案》,该Issues中提到S3兼容API验证这个方案,该方案的核心是利用OBS提供的S3兼容API进行交互。

然后我们通过华为云OBS的相关文档,了解到OBS是S3兼容的,而且我们还从Helm的相关插件列表中找到helm-s3插件,该插件提供了对S3协议的支持,允许用户在S3上托管私有或公共的Helm Chart存储库。这样我们就可以先尝试利用现有的helm-s3插件来适配OBS。

在后续其他开源软件适配OBS时,若在开源软件的相关文档看到"S3 Compatible"的标识,通常可以认为该软件社区已经维护了与S3兼容的API,那么很有可能可以直接使用OBS服务,若相关文档声明仅支持 S3,则需要通过额外的测试和验证来确认是否与OBS兼容。

为了验证开源软件与华为云OBS的兼容性,确保其能够正常使用OBS作为其Chart存储库,我们需要按照以下流程进行配置:首先需要将开源软件的endpoint参数设置为OBS的endpoint(使用https协议);由于OBS仅支持S3的path-style访问方式,而不支持virtual-host style访问方式,因此需要根据开源软件的具体需求配置启用相应访问方式;还需要设置aws_access_key_id和aws_secret_access_key,为OBS服务配置访问密钥。

3. 适配OBS实践案例

Helm适配开发步骤

具体操作如下:

在华为云上购买CCE与OBS(可申请代金券进行购买,申请流程戳"阅读原文 "进入),首先在CCE上使用下图中的命令安装Helm,

安装后使用"helm plugin install https://github.com/hypnoglow/helm-s3.git"命令安装helm-s3插件。为确保Helm能够正确连接到OBS,我们需要在CCE上设置如下图中相关的环境变量,这些变量包括访问密钥、区域、OBS的endpoint等信息。

接着用"helm s3 init"命令在OBS中创建一个新的Helm Chart存储库。用"helm repo add"命令将新创建的存储库添加到Helm的仓库列表中。

我在CCE上编写了一个用作微服务管理的Java DEMO来进行适配测试,其中包含edge-service(微服务网关),authentication-server(认证服务),resource-server(资源服务),admin-service(微服务管理服务后端),admin-website(微服务管理服务前端),Zookeeper(微服务注册与发现)这几个微服务。接下来需要为此Java DEMO的每个微服务都编写一个独立的Helm Chart,这些Chart包括:Chart.yaml(定义Chart的基本信息,如名称、版本等)、values.yaml(定义Chart的默认配置)、templates/(包含Kubernetes资源定义文件,如Deployment、Service等)这些目录和文件,每个Chart的目录结构如下图所示:

在编写完Chart后,需要在CCE上使用"helm package"命令将它们打包,打包完成后,会生成一系列.tgz文件,例如admin-service-0.1.0.tgz。后续使用"helm s3 push"命令将打包好的Chart推送到OBS。然后使用"helm pull"命令从OBS中拉取Chart到CCE中,以验证Chart的存储和读取功能。通过以上测试,我们验证了Helm可以从华为云CCE推送Chart包至OBS,同时也能够从OBS中拉取该Chart包至华为云CCE上。验证完成后我们将下载的Chart包上传到CCE,并使用"helm install"命令在CCE上使用这些Chart包安装和部署此Java DEMO的微服务。至此,我们在CCE上成功部署了此Java DEMO的微服务。

在此Java DEMO成功在CCE上部署后,进入"http://localhost:9090/ui/admin/" 网址,在微服务管理界面输入微服务名称,可以查询到对应的微服务,例如resource-server微服务:

所以从OBS上下载下来的Chart包在CCE上部署此Java DEMO能正常进行微服务管理。

至此充分验证了无论是直接在CCE上通过Chart包部署,还是通过OBS中转后部署,该Java DEMO均能稳定运行和访问,充分验证了Helm能够适配华为云OBS。

4. 如何提交开源贡献

当你完成了开源项目适配工作,并且新增的代码已经经过严格测试确认无误后,你可以通过提交一个Pull Request(PR)来请求官方社区将你的功能代码合并到项目中。在此之前,请务必仔细阅读项目的贡献指南和代码编写规范,以确保你的代码能够顺利地被项目接纳并合并。由于Helm适配OBS的工作属于验证性质,而非功能开发,因此无需向Helm官方社区提交Pull Request(PR)。

诚邀各位技术达人加入到使用OBS序列的Helm社区,您有何疑问,都可在此推文评论区留言,或前往开源开发者专属的问答板块提问,热切希望能与您深入交流,共同探讨。

开源开发者的专属问答区链接:

https://gitcode.com/HuaweiCloudDeveloper/OpenSourceForHuaweiWiki/blob/main/zh_CN/docs/open-source-work-flow.md

点击关注,第一时间了解华为云新鲜技术~

相关推荐
小马9263 分钟前
把稀疏注意力做对:HiLS-Attention 如何在数学上同时打破效率与效果的天花板
开源·aigc
TunerT_TQ12 分钟前
GitHub深度工程评测:Cline 源码级工程评测|65k Star 开源AI编程助手的工程全景
typescript·开源·github·vs code·ai编程助手·开源供应链安全·静态源码审计
沉迷学习 日益消瘦14 分钟前
17-Custom Resource 入门
docker·容器·kubernetes
m4Rk_24 分钟前
【论文阅读】Agent 记忆机制(26):Infini Memory——将长期记忆维护成可读写的主题文档
论文阅读·人工智能·学习·开源·github
沉迷学习 日益消瘦1 小时前
14-Pod 安全上下文
安全·kubernetes
腾飞开源3 小时前
01_K8s干货笔记之认识K8s
运维·笔记·云原生·容器·kubernetes·k8s·容器化部署
张忠琳13 小时前
【NPU】Ascend Docker Runtime v26.0.1 之二 runtime/process/process.go — 超深度逐行分析
云原生·容器·架构·kubernetes·npu·docker-runtime
冬奇Lab13 小时前
开源项目第172期:agentOS — 以库的形式给 AI Agent 一个操作系统,冷启动 92x 更快、内存 47x 更少
人工智能·开源·agent
雨辰AI19 小时前
K8s人大金仓主从高可用搭建|容器化集群自动同步+故障切换(生产完整版)
云原生·容器·kubernetes
haishikeji696_19 小时前
多部门协同无人机管理系统架构设计|飞控管理平台、无人机巡检平台标准化开发方案
开源·无人机·低空经济·无人机管理系统·无人机飞控平台·一网统飞