沃土云创开源开发者专项计划是华为给开源开发者提供专属激励资源,鼓励开发者积极参与开源 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. 【2024】所有人都能看懂的 Win 11 安装/重装教程,跟着我一遍包成功

    无论你因为系统坏掉想重装一下 Windows,或者只是想升级一下 Windows 都可以.虽然标题写的是 Win 11,不过实际上对于任何 Windows 系统都适用,不过现在 Win 11 已经相当 ...

  2. numpy库(python)

    文章目录 1.numpy简介 2.安装numpy 3.ndarry : numpy库的心脏 3.1 创建数组 3.2数据类型 3.3dtype NumPy是用Python.进行科学计算,尤其是数据分析 ...

  3. 快速激活JRebel的方法

    当谈到 JRebel 的激活时,有几种方法可以让您在 IntelliJ IDEA 中使用它.以下是一些选项: 在线激活(推荐): 安装 JRebel 插件后,点击 Jrebel Activation  ...

  4. Redis学习笔记整理

    一.Redis概述 1.redis简介 Redis(REmote DIctionary Server 远程字典服务器)是一款开源的,用ANSI C编写.支持网络.基于内存.亦可持久化的日志型.Key- ...

  5. tcp全连接满了怎么处理

    cat /proc/sys/net/ipv4/tcp_max_syn_backlog #syn队列最大长度 netstat -ntl | grep SYN_RECV | wc -l #syn队列当前长 ...

  6. Impala源代码分析(3)-backend查询执行过程

    4 Replies 这篇文章主要介绍impala-backend是怎么执行一个SQL Query的. 在Impala中SQL Query的入口函数是: void ImpalaServer::query ...

  7. java——棋牌类游戏斗地主(webddz1.0)之二

    package com.ddz; import java.io.ObjectInputStream; import java.net.DatagramSocket; /**************** ...

  8. Nodejs调试之Chrome Devtools

    转载: https://mp.weixin.qq.com/s/tqGWizPUFnuVWRcXcxyv2g 俗话说:"工欲善其事,必先利其器",调试是每一个开发人员都要遇到的问题, ...

  9. Winform解决跨线程更新UI的问题

    最近又拿起了Winform的程序,由于要起socket server,所以需要起线程,这里就遇到了经典的跨线程UI调用的问题. 如果什么都不写,直接由线程更新UI,会报错:线程间操作无效. 这里的解决 ...

  10. OSG开发笔记(三十五): OsgUtil::Optimizer:优化场景策略,提升显示性能和渲染效率

    前言   在OSG中,osgUtil::Optimizer是一个非常重要的工具类,它提供了一系列优化场景图的方法,以提高渲染性能和效率.   Demo      在笔者的pc上,优化前优化后渲染交互没 ...