GitOps实践:FluxCD [k8s]

2023-03-02 19:45:52 浏览数 (1)

为什么使用 FLUX CD?

传统的CI/CD

  • 开发人员创建代码并编写Dockerfile。他们还为应用程序创建Kubernetes manifests和Helm Charts。
  • 他们将代码推送到源代码存储库。
  • 源代码存储库使用提交后的钩子触发Jenkins构建。
  • Jenkins CI流程将构建Docker映像和Helm软件包,并将其推送到依赖仓库。
  • 然后,Jenkins CD程序部署helm charts到k8s cluster。

这个过程听起来合理,或多或少是行业标准。但是,有一些限制:

  • 您需要将Kubernetes 凭据存储在Jenkins服务器中。由于服务器是共享的,这是折中的做法。
  • 尽管您可以使用Jenkins创建和更改配置,但无法使用它删除现有资源。例如,如果您从存储库中删除清单文件,则kubectl不会将其从服务器中删除。这是自动化GitOps的最大障碍。

Flux被描述为Kubernetes的GitOps运维工具,它可以将Git仓库中的清单状态与集群中运行的内容同步。在本次评测的三个工具中,它是最简单的一个。事实上,只需几步就可以设置好一个GitOps工作流,这一点让人惊叹不已。

FluxCD(或Flux)是一个很棒的工具,它可以将Git和Kubernetes集成起来

它的主要功能是监视远程Git仓库来应用Kubernetes清单中的更改。

该工具专注于软件交付周期中的部署部分

专门针对Git仓库和容器注册表与集群中的工作负载的版本和状态同步,因此该工具易于安装和维护。

GitOps部署

作为Flux的主要功能,它会定期拉取远程Git仓库,并以真正的GitOps方式将其清单文件(如果有新更改)应用于集群。这可以用于部署应用程序,也可以维护Kubernetes清单形式的任何种类的集群配置。同步也可以通过fluxctl sync命令手动触发。

自动部署新版本容器镜像

当新版本的容器镜像可用时,Flux可以选择更新集群中的工作负载。如果启用,运行fluxctl automate或者在工作负载的部署清单中添加注释,它会轮询注册表中的镜像元数据,并且如果有指定镜像的新版本可用,它可以使用新的版本来更新部署。当这样做时,Flux会写一个提交回原始Git仓库,以更新清单中使用的镜像版本,因此Git仍然是集群中运行的内容的真实来源。

结论:我应该使用FluxCD吗?

根据设计,Flux仅专注于将清单部署到群集。因此,你仍然需要CI工具来构建和测试你的应用程序,并在最后将你的容器镜像推送到注册表。另一方面,CI工具不需要访问群集,因为Flux会从内部周期性地拉取变化,最大限度地减少了群集的暴露。

前期准备

你将需要

  • 一个Docker Hub镜像仓库,你可以将Flaskapp docker镜像上传到此处
  • 一个Git Repo并连接它,然后你可以在整个演示过程中根据需要用你的设置替换“< >”中的任何内容

具体步骤

  • 安装Kubernetes
  • 安装并配置fluxctl,Flux部署的原生安装程序
  • 配置Flux以连接到Git Repo
  • 在Git Repo中升级deployment manifest
  • 升级容器镜像并同步
  • 配置漂移(drift)并同步

参考

https://blog.csdn.net/M2l0ZgSsVc7r69eFdTj/article/details/106653936

https://www.cnblogs.com/rancherlabs/p/12450473.html

https://cloud.tencent.com/developer/article/1659450

0 人点赞