FluxCD 多集群应用的设计与实现
前言
FluxCD 是 CNCF 的孵化项目,可以让我们以 GitOps 的方式轻松地交付应用。和另一个同类的 CNCF 孵化项目 ArgoCD 不同,FluxCD 是许多 toolkit 的集合,天然松耦合并且有良好的扩展性,用户可按需取用。我们希望通过集成 FluxCD 这样一个优秀的 GitOps 项目来为用户提供更多的选择。
我们综合考虑了以下三大要素:
- 为还没有接触过 GitOps 的用户提供易上手的体验;
- 为使用过 FluxCD 的用户提供无缝切换的体验;
- 为已经使用过 KubeSphere GitOps 功能的用户提供熟悉感的同时突出 FluxCD 的优势和特性。
多次重新设计了前端界面和后端实现,最终完成了一个还算比较满意的版本。
ks-devops
设计
- 模板复用:FluxCD 提供了 HelmChart 类型的 CRD,但是 HelmRelease 无法直接引用 HelmChart,我们希望添加模板的功能,这样许多配置就可以复用。
- 多集群:我们希望 FluxApplication 是一个多集群应用,这样我们就可以用一套模板配置然后添加不同的配置去部署到多个集群中。
CRD
现有的 gitops.kubesphere.io/applications CRD 已经包含了 ArgoApplication。为了集成 FluxCD,我们将 FluxCD 中的 HelmRelease
和 Kustomization
组合抽象成一个 FluxApplication
的概念放入 Application
里并且 kind
来标识用户启用了哪种 GitOps Engine。
一个完整的 GitOps 应用可以拆分成三大部分:
- 源:存放制品的仓库,制品包括是 Kubernetes Manifests、Kustomize 和 Helm,仓库的类型有 GitRepository、HelmRepository 以及 Bucket 等。
- 应用配置:对 Kustomize 可以是 path 和 patches,对 Helm 可以是 valuesFrom 和 values。
- 部署目标:制品的部署位置,是集群和相应名称空间的组合。
所以 FluxApplication
的具体实现如下,包含了 Source
和 Config
,由于 FluxCD 是一个多集群应用,一个部署目标对应一个应用配置,所以部署目标被包含在应用配置中。
type FluxApplicationSpec struct { // Source represents the ground truth of the FluxCD Application Source *FluxApplicationSource `json:"source,omitempty"` // Config represents the Config of the FluxCD Application Config *FluxApplicationConfig `json:"config"` }
Controller
application-controller
和 status-controller
是管理 FluxCD 多集群应用的具体实现。以下是 FluxCD Helm 应用的示意图:
application-controller
负责 reconcile 自定义的多集群应用,解析自定义的 CR 然后转换成底层 FluxCD 的 CR 去驱动 FluxCD 的kustomize-controller
或helm-controller
去应用的部署。- 可以为同一个
HelmTemplate
添加不同的应用配置和部署配置然后部署到多个集群中,还可以使用 FluxCD 的pause
和resume
功能,单独控制某个集群内应用的启停。 status-controller
使底层 FluxCD 应用状态透出到上层 gitops.kubesphere.io/application CR 中。
可视化界面
应用创建
为了使体验过 KubeSphere GitOps 功能的用户感到熟悉,我们在基础信息配置标签中选择和 ArgoCD 保持一致。虽然在应用配置和部署配置中 FluxCD 和 ArgoCD 存在相似之处,但是为了可维护性并且突出 FluxCD 的特点,我们重新设计了部署设置标签页,并且正在迭代之中。
- 在类型这一栏中,可以选择 HelmRelease 或者 Kustomization。在以后模板 API 全部开发完成之后,用户可以在此处选择模板类型,然后就可以选择保存的模板并将该模板部署到任意集群。
- 在配置这一栏里可以配置 Chart 和 ValuesFiles,现阶段如果需要配置 ValuesFiles 要使用分号将路径隔开,如:
./helm-chart/values.yaml;./helm-chart/aliyun-values.yaml
;并且可以选择是否将此配置保存为模板。 - 在部署这一栏中,用户可以为每一个部署位置配置不同的 Values、ValuesFrom 以及高级设置。Values 可以是任意 json 类型,是
helm install xxx --set
后面加的参数,例如:ports.traefik.expose=true
;而 ValuesFrom 是 FluxCD 特有的内容,是一个类型为 ConfigMap 或 Secret 的数组,可以让用户更灵活的注入参数,用户可以单击标签选择类型:
- 为了满足高级用户的需求并且照顾到刚接触 GitOps 的用户,我们提供了高级设置。现阶段的高级设置包括:同步间隔、ReleaseName、StorageNamespace 以及原生的 Helm 操作参数。和 Helm 的原生操作类似,例如经常使用的安装命令
helm install xxx --create-namespace
中的--create-namespace
的 flag 就可以通过设置安装参数createNamespace=True
来达到相同的效果,如果你熟悉 Helm,你一定能够在这里找到熟悉的感觉,因为 FluxCD 的 helm-controller 内部就是使用了原生的 helm 库来完成对应的操作。
应用管理
在创建好一个 FluxCD 应用之后,在持续部署的主页可以看到创建的应用的概要预览,其中包括应用的类型(HelmRelease|Kustomization)、源(GitRepository|HelmRepository|Bucket)、版本以及就绪个数,就绪个数的意思是,当选择将应用部署至多个位置时应用的就绪情况,例如将应用部署至三个集群内,其中两个集群中的应用已经处于 Ready
状态,另外一个集群内的应用还处于 Reconciling
的状态时,就绪个数为 2/3
。用户还可以对该应用进行信息编辑,Yaml 编辑以及删除等操作。
点击应用名称可以进入应用详情页,在应用详情页可以看到应用的状态、部署位置、以及消息等内容,该部分会持续完善。
Demo
demo 视频的前端采用 kubesphere/console PR-3761;后端采用 kubesphere/ks-devops master branch。 Demo Video 本文由博客一文多发平台 OpenWrite 发布!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
宝德计算加入 openKylin,助力开源桌面操作系统产业升级发展
近日,宝德计算机系统股份有限公司(以下简称“宝德计算”)签署了openKylin社区 CLA(Contributor License Agreement 贡献者许可协议),正式加入openKylin开源社区。 宝德计算成立于2003年,是以服务器和PC整机的研发、生产、销售及提供相关的综合解决方案为主营业务的国家级高新技术企业和国家专精特新“小巨人”企业,致力于成为中国领先的IT产品和解决方案提供商,为政府、互联网、教育、金融、电力、交通、医疗、运营商、安平等行业客户持续提供先进的算力产品、解决方案和全栈服务。 宝德计算坚持以客户需求为驱动力,注重研发创新,拥有敏锐的市场洞察力和雄厚的技术实力,曾多次填补国内服务器技术空白,引领服务器先进技术发展方向。 在加入openKylin社区后,宝德计算将积极参与社区活动,分享优秀案例,并积极参与社区贡献,促进社区成员之间的沟通与深入协作,增强企业之间的资源互补,促进国产化的发展,共同推动openKylin社区的生态和发展。 社区会员持续招募中 目前,openKylin社区会员招募正在火热进行中,欢迎更多企业伙伴加入,携手共建,打造桌面操作系...
- 下一篇
案例解读华为隐私计算产品TICS如何实现城市跨部门数据隐私计算
摘要:本文介绍华为可信智能计算服务TICs是如何助力城市跨部门数据实现隐私计算的。 本文分享自华为云社区《基于华为隐私计算产品TICS实现城市跨部门数据隐私计算,助力实现普惠金融》,作者: dayu_dls。 华为云可信智能计算服务TICS,旨在打破组织内部、行业内部、跨行业之间的数据孤岛,基于可信执行环境、安全多方计算、同态加密、区块链等技术,实现在数据隐私保护下的多方数据联合SQL分析和联邦学习,协同伙伴和客户,推动数据要素的可信流通和开发利用。本案例以普惠金融为背景,介绍下华为可信智能计算服务TICs是如何助力城市跨部门数据实现隐私计算的。 TICS官网链接 1、普惠金融的背景 2005年联合国首次提出了普惠金融的概念,并将其定义为:一个能有效、全面地为社会所有阶层(特别是贫穷的、低收入的群体)提供服务的金融体系。通俗点讲就是:让所有的老百姓们都享受到更多的金融服务。截止目前,我们国家相继出台了多篇普惠金融政策文件,可见国家对于普惠金融的扶持力度之大。在普惠金融发展过程中也遇到一些问题,其中之一就是社会信用体系建设滞后。我国因为没有完善的个体信用信息,银行判断风险难度大,小微企业...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2配置默认Tomcat设置,开启更多高级功能