写点什么

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

  • 2025-01-03
    广东
  • 本文字数:2286 字

    阅读完需:约 8 分钟

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


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

用户头像

提供全面深入的云计算技术干货 2020-07-14 加入

生于云,长于云,让开发者成为决定性力量

评论

发布
暂无评论
Helm适配华为云OBS实践分享,更方便地部署、管理复杂应用_开源_华为云开发者联盟_InfoQ写作社区