沃土云创开源开发者专项计划是华为给开源开发者提供专属激励资源,鼓励开发者积极参与开源 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

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

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

  1. 古有七步成诗,今有六步完成DevOps上华为云DevCloud实践

    引言: 在“DevOps能力之屋(Capabilities House of DevOps)”中,华为云DevCloud提出(工程方法+最佳实践+生态)×工具平台=DevOps能力.华为云DevClo ...

  2. 【华为云网络技术分享】HTTP重定向HTTPS配置指南

    [摘要] 本文介绍使用华为云弹性负载均衡配置Http重定向到Https的方法. 1. HTTP.HTTPS 头部标识 ELB 对 HTTPS 进行代理,无论是 HTTP 还是 HTTPS 请求,到了  ...

  3. 开源实践分享:Ceph bluestore部署实践

    https://blog.51cto.com/99cloud/2119884 Ceph bluestore部署 首先为大家分享Ceph bluestore具体该如何部署,使用环境如下• 单节点• Ce ...

  4. 华为云亮相QCon2020深圳站,带你体会大厂的云原生玩法与秘诀

    摘要:在QCon全球软件开发大会上,华为云开发者生态总监张全文作为"云原生应用开发实践"专题出品人,携手华为云四位资深技术专家带来精彩分享. 作为当下技术领域最火热的技术趋势之一, ...

  5. 【云享专刊】开源遇上华为云,OCP架构变身“云原生框架”

    摘要:华为云DTSE团队出品云原生改造指南,助力轻松实践OCP上云. 本文分享自华为云社区<[云享专刊]开源遇上华为云,OCP架构变身"云原生框架">,作者:华为云社区 ...

  6. 纷繁复杂见真章,华为云产品需求管理利器CodeArts Req解读

    摘要:到底什么是需求?又该如何做好需求管理? 本文分享自华为云社区<纷繁复杂见真章,华为云产品需求管理利器 CodeArts Req 解读>,作者:华为云头条 . 2022 年 8 月,某 ...

  7. 大海航行靠舵手 华为云靠什么征服K8S?

    Kubernetes 是Google开源的容器集群管理系统或者称为分布式操作系统.它构建在Docker技术之上,为容器化的应用提供资源调度.部署运行.服务发现.扩容缩容等整一套功能,本质上可看作是基于 ...

  8. 解构华为云HE2E项目中的容器技术应用

    摘要:本文从容器技术应用的角度解构了HE2E项目的代码仓库配置.镜像构建.及docker-compose的部署方式.希望通过本篇文章分享可以使更多的开发者了解容器技术和华为云. 本文分享自华为云社区& ...

  9. 华为云CodeArts Artifact,5大特性守护制品质量与安全

    摘要:2023年2月23日,华为云CodeArts Artifact制品仓库服务正式上线,目标进一步赋能企业伙伴与开发者,实现软件作业中可信制品生产与应用活动快速落地,提高软件交付效率与质量. 本文分 ...

  10. 华为云MySQL金融版正式商用,高可靠的金融级数据库来了

    摘要:全新三节点架构,基于深度优化的MGR组复制技术,提供金融级的数据一致性. 日前,华为云数据库MySQL 金融版正式商业化发布,MySQL金融版采用MGR技术,基于Paxos协议,采用一主两备三节 ...

随机推荐

  1. 通过duxapp提供的基础方法、UI组件、全局样式,快速编写项目

    使用duxapp,我是如何实现快速完成项目开发的? 像下面这个例子,这个项目有140多个页面,但是真实的开发时间,在熟练使用duxapp的情况下,不会超过两周,并且可以将它兼容APP.小程序.H5 这 ...

  2. C++处理系统相关权限问题

    1.给某个文件或文件夹赋予特定用户的特定访问权限 /* 给文件(夹)szPath设置用户名为pszAccount的可读可写可修改权限 */ bool GiveTheAccountPrivToFile( ...

  3. 2.14 Linux文件目录结构一览表

    学习 Linux,不仅限于学习各种命令,了解整个 Linux 文件系统的目录结构以及各个目录的功能同样至关重要. 使用 Linux 时,通过命令行输入 ls -l / 可以看到,在 Linux 根目录 ...

  4. C++面经(持续更新)

    一. c,c++区别<九大点> c: 面向过程 c++: 面向对象(封装,继承,多态) 对象:对数据和作用于数据的操作组成的封装实体 类:描叙了一组有相同属性和方法的对象<虚拟> ...

  5. 代码差异对比之git diff详解!

    1.测试对比文件准备 文件A:diff1(diff1文件夹下可以放n个文件) public class Diff1 { public static void main(String[] args){ ...

  6. C# 开发的环境监测上位机应用

    前言 在工业和科研领域,环境监测系统的重要性日益凸显.上位机软件作为环境监测系统的关键组成部分,负责数据采集.处理和显示,对提高监测效率和准确性起着至关重要的作用. 本文将向大家介绍一款用 C# 开发 ...

  7. Solr 的核心就是搜索

    原文  http://www.aptusource.org/2014/06/searching-is-what-its-all-about/ Solr 的主要功能就是强大的查询处理.在本文中,你将会看 ...

  8. Memcached笔记——(一)安装&常规错误&监控

    08年的时候接触过Memcached,当时还对它的客户端产品嗤之以鼻,毕竟手工代码没有各种ORM原生XML配置方便.尽管如此,Memcached现在已经成了服务器架构里不可或缺的一部分! 相关链接:  ...

  9. Select、Poll、Epoll 有什么区别?

    部分图片来源于:https://www.cnblogs.com/yanguhung/p/10145755.html I/O模型 BIO:同步阻塞IO 应用程序发起调用以后,一直阻塞,等待结果返回 2. ...

  10. 3D饼图

    1.实现思路 Echarts本身没有这类图形,可以使用其扩展echarts-gl进行绘制,echarts-gl曲面图可以完成这类需求 <script src="https://cdn. ...