灵雀云开源Helm v3 Controller组件 Captain,完善云原生应用管理功能

CodeAdventurer
• 阅读 2425

近日,灵雀云宣布发布Helm v3 Controller组件“Captain”,并正式将其在Github上开源。Captain是Helm官方社区发布的Helm v3 proposal的第一个Controller实现示例,帮助用户简化Helm资源描述,更便捷、高效地实现K8s应用的管理和控制,推进Helm项目向原生 K8s迈进的步伐。

目前Captain项目代码已经在Github 上开源,项目地址为:https://github.com/alauda/cap...。欢迎更多技术开发者和爱好者前去试用。

关于Helm v3 的设计实现

灵雀云开源Helm v3 Controller组件 Captain,完善云原生应用管理功能

虽然Helm是社区以及线下生产公认的Kubernetes通用包管理器,但从便捷性的角度来说,老版本Helm v2仍然存在诸多问题,如资源已存在导致的资源冲突安装频繁失败,CRD的管理问题,Tiller Server带来的各种问题等。

在已经发布的 Helm V3 Design Proposal 中,有以下部分设计:

移除Tiller Server,以CRD 形式扩展:

在Helm v2 中用于在 Kubernetes 集群中管理应用发布版本的Tiller,在 Helm v3 中移除了, 版本相关的数据可以通过直接与Kubernetes交互获取,集群权限的管理更加简单清晰。同时解决了在不同namespaces中Release名称冲突的问题。

与此同时,Helm v3 引入Helm request和Release两个CRD,分别代替Helm v2中的用命令行的参数来自定义的Chart和用ConfigMaps和Secret定义的Release,来记录历史版本信息。

加入Controller组件:

灵雀云开源Helm v3 Controller组件 Captain,完善云原生应用管理功能

在使用Helm v2时,用户想要通过命令行的参数来自定义一个Chart,安装一次后不管成功与否,安装动作就结束了,更新也是。而kubernetes controller的架构可以实现自动重试的逻辑,只要用户在HelmRequest里描述好期望状态,controller 会尽量保证达到最终状态。

(更多Helm v3信息请关注:https://github.com/helm/helm/...

Captain的功能与特性

在Helm v3社区设计之外,Captain还具有以下特性:

支持多集群:Helm v3的设计中并没有支持多集群的功能。Captain组件基于 cluster-registry项目实现了对多集群的支持。用户可以将HelmRequest安装到当前集群,指定集群,甚至是所有集群。这在企业场景下是非常有用的。

依赖检查:Helm本身具备依赖概念,功能也比较复杂。Captain在Helm v3的基础上加了新的依赖检查。如果HelmRequest A 依赖于 HelmRequest B, 在声明好依赖之后。Captain 在同步HelmRequest A 时,会首先检查 HelmRequest B是否已经同步。只有在所有依赖都同步成功之后,当前的HelmRequest才会开始同步。

集中式配置valuesFrom:在Helm v2中部署Chart 时,可以通过在命令行添加参数或者使用 values.yaml 文件来对 chart 部署添加一些自定义变量。在Captain中,除了对这种传统的方式进行进行支持外,也充分利用了kubernetes 中 ConfigMap 以及 Secret 作为独立配置的功能。用户可以在HelmRequest 的定义中通过 valuesFrom的来自外部的ConfigMap 或者Secret 作为 values 来源。在微服务场景下,用户通常需要用多个 HelmRequest 来描述不同chart 的安装需求,而这些 chart 之间通常又经常有很多需要共同的配置, valuesFrom 能很好地解决这个问题。

灵雀云开源Helm v3 Controller组件 Captain,完善云原生应用管理功能

资源冲突的处理: 用户在使用 helm v2 的时候,经常会碰到很多使用上的不便之处。因为资源已存在导致的安装失败,因为卸载不彻底进一步导致下一步安装失败,这其中就包含了经典的CRD管理的问题(因为要等带crd的api生效,引入了crd-install hook, 加了hook的CRD在删除 release时不会删除)。Captain 为了解决了这个问题,引入了类似于 kubectl apply的逻辑。当发现资源已存在的时候,会执行更新操作,一些无法更新的资源会进行删除重建操作。这样的策略能够极大地解决用户使用时遇到的各种不便之处

Captain开发计划

建立Helm Chart仓库的CRD,方便用户添加和删除仓库列表

支持仓库的PROXY,方便国内用户使用
Helm v2 到 Helm v3数据迁移工具:方便用户将Helm2的Rlease 数据转化为Helm3的Rlease CRD.

灵雀云是开源技术和开源精神的受益者,也是CNCF/CDF等开源社区的早期倡导者和贡献者。取之开源回馈开源,据悉,灵雀云计划将陆续开源多个K8s发行版及组件级产品,涉及集群管理,容器网络以及应用发布的平台全生命周期,敬请期待!

点赞
收藏
评论区
推荐文章
Stella981 Stella981
3年前
OpenKruise:阿里巴巴 双11 全链路应用的云原生部署基座
简介:Kruise是Cruise的谐音,'K'forKubernetes,寓意Kubernetes上应用的航行和自动巡行,它满载着阿里巴巴多年在大规模应用部署、发布与管理最佳实践,以及阿里云Kubernetes服务数千客户的需求沉淀。来源|阿里巴巴云原生公众号(https://www.oschina.net/acti
Wesley13 Wesley13
3年前
2018云原生技术实践峰会CNBPS 重新定义云原生
!(https://oscimg.oschina.net/oscnet/ae5825ad14864f01837f7fe38f4e45f0.jpg)9月20日,2018云原生技术实践峰会(CloudNativeBestPracticesSummit)在北京悠唐皇冠假日酒店成功落幕。本次大会是云原生技术实践联盟(CNBPA)和灵雀云联合主办
腾讯发布 K8s 多集群管理开源项目 Clusternet
11月4日,在腾讯数字生态大会上,腾讯宣布了云原生领域一项重磅开源进展——K8s多集群管理项目Clusternet正式开源。Clusternet由腾讯联合多点生活、QQ音乐、富途证券、微众银行、酷狗音乐、三七互娱等共同发起,专注K8s多集群管理和应用治理方向,希望让管理多集群就像上网一样简单。作为未来分布式云的技术基石,Clusternet通
Wesley13 Wesley13
3年前
2019 年 CNCF 中国云原生调查报告
!头图.jpg(https://ucc.alicdn.com/pic/developerecology/6db0c465111b4d9a96eb1ffe85c00e7a.jpg)中国72%的受访者生产中使用Kubernetes在CNCF,为更好地了解开源和云原生技术的使用,我们定期调查社区。这是第三次中国云原生调查,以中文进行
Stella981 Stella981
3年前
K8S环境的Jenkin性能问题处理
环境信息在K8S环境通过helm部署了Jenkins(namespace为helmjenkins),用于日常Java项目构建:1.kubernetes:1.152.jenkins:2.190.23.helm版本:2.16.1如果您想了解helm部署Jenkins的详情,请参考《》问题描述在Jenkins任
Stella981 Stella981
3年前
K8S helm
Helm致力于成为Kubernetes的包管理工具,可以方便地发现、共享和构建Kubernetes应用,它包含几个基本概念:Chart:一个Helm包,其中包含了运行一个应用所需要的镜像、依赖和资源定义等,还可能包含Kubernetes集群中的服务定义,类似Homebrew中的formula,APT的dpkg或者Y
Stella981 Stella981
3年前
Helm 架构
在实践之前,我们先来看看Helm的架构。Helm有两个重要的概念:chart和release。chart是创建一个应用的信息集合,包括各种Kubernetes对象的配置模板、参数定义、依赖关系、文档说明等。chart是应用部署的自包含逻辑单元。可以将chart想象成apt、yum中的软件安装包。release是cha
Stella981 Stella981
3年前
Kubernetes 时代的安全软件供应链
作者汤志敏 阿里云容器服务高级技术专家汪圣平 阿里云云平台安全高级安全专家导读:从Dockerimage到Helm,从企业内部部署到全球应用分发,作为开发者的我们如何来保障应用的交付安全。本文会从软件供应链的攻击场景开始,介绍云原生时代的应用交付标准演进和阿里云上的最佳实践。“没有集装箱,就不会有全球化”。在软件行业里,
Stella981 Stella981
3年前
KubeSphere 正式入驻 AWS Quick Start,服务全球用户云原生落地
日前,面向云原生应用的容器平台KubeSphere宣布正式入驻AmazonWebServices(AWS)QuickStart,基于AmazonElasticKubernetesService(AmazonEKS)深度集成,为全球用户提供多集群管理、微服务治理、应用管理等功能,以极简的部署与管理,帮助企业快速落地
Stella981 Stella981
3年前
CODING DevOps + Nginx
作者:王炜,CODINGDevOps后端开发工程师,拥有多年研发经验,云原生、DevOps、Kubernetes资深爱好者,Servicemesher服务网格中文社区成员。获得KubernetesCKA、CKAD认证。前言在Kubernetes上的应用实现灰度发布,最简单的方案是引入官方的Nginxingress
Stella981 Stella981
3年前
CODING DevOps + Nginx
作者:王炜,CODINGDevOps后端开发工程师,拥有多年研发经验,云原生、DevOps、Kubernetes资深爱好者,Servicemesher服务网格中文社区成员。获得KubernetesCKA、CKAD认证。前言在Kubernetes上的应用实现灰度发布,最简单的方案是引入官方的Nginxingress