沃土云创开源开发者专项计划是华为给开源开发者提供专属激励资源,鼓励开发者积极参与开源 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. Web渗透03_扫描技术

    前言 在获取目标主机的各类信息时,有一些综合工具可以一键扫描完成,大大方便了测试效率.但扫描结果并非100%的正确,需要我们的判断. namp NMAP(Network Mapper)是一款开放源代码 ...

  2. JS 转盘抽奖效果

    阅读原文,微信扫描二维码, 手机关注公共号酒酒酒酒,搜索 JS 转盘抽奖效果 效果图 前置条件: 开发环境:windows 开发框架:js 编辑器:HbuilderX 正文开始 <!DOCTYP ...

  3. 从零开始学逆向CTF比赛,免费参加,欢迎来玩!

    大家好,我是轩辕. 告诉大家一个好消息:我准备了一次逆向CTF比赛,面向所有人开放,无需购买课程,优秀的小伙伴还有奖励,参赛方式在文末会介绍,欢迎大家一起来玩. 举办这次CTF比赛,是为了检验大家从零 ...

  4. 在使用asm包进行动态类加载的时候的打包问题

    如图所示,开发时使用的jdk包下面的asm包,在进行打包时提示asm包不存在,打包方式使用如下: 目前提供两种解决方案: 1:修改打包方式,将jdk的包也打进去: <plugin> < ...

  5. 在嵌入式设备中实现webrtc的第三种方式②

    先贴上效果图以及操作路径. 操作路径为:启动信令服务器,配置浏览器关闭mDNS,双端登录,浏览器端邀请.最终连接成功建立,我们通过datachannel成功通信 (关闭mDNS是因为谷歌浏览器隐藏了局 ...

  6. NOIP2024模拟赛10:热烈张扬

    NOIP2024模拟赛10:热烈张扬 T1 一句话题意:给定一颗树和两个玩家的起点 \(a,b\) 和各自的移动速度 \(da,db\).问:如果二人均以最优策略移动,问最后谁是赢家(先走到对方当前位 ...

  7. 常见return错误

    常见return错误 3221225477 (0xC0000005): 访问越界,一般是读或写了野指针指向的内存. 3221225725 (0xC00000FD): 堆栈溢出,一般是无穷递归造成的. ...

  8. 一些很好用的SVN功能

    1.checkout 1.1 只checkout部分目录和文件 目的:有时候项目的文件很多,但是只会关心其中的某几个文件,就可以只checkout这几个文件,可以缩短checkout时间且减少其他文件 ...

  9. 微信小程序目录结构

    一.小程序框架 微信开放平台--小程序框架介绍 小程序的目录结构很清晰,主要由描述整体内容的app和描述具体页面的page组成.一般来说,习惯对小程序的目录结构进行更加清晰的规划,例如将程序种会用到的 ...

  10. 关于linux 终端的小命令

    Ubuntu 为例 ctrl alt t   新开一个终端(默认工作目录) ctrl shift t 在当前终端开一个tab (工作目录和当前tab一致 当你进入一个很深的目录的时候需要新开一个命令行 ...