前面也有给大家讲解过云原生gitops工具-argocd(介绍篇/部署管理篇/应用篇),今天再给大家介绍另外一种gitops工具的明星产品-flux。
对于这两款工具,主要还是看个人使用习惯和上手程度,argocd在web端更便于研发/运维快速使用,同时强大的对多集群管理和项目管理、角色限制、多环境管理等都有不错的体验,但同时也就带来了一些操作的复杂性。相反对于flux而言,如果不想要那么多的高级功能,仅仅是对底层基础组件的维护,flux也是一个不错的选择,而且服务的轻量级也更低的消耗资源。总之这两款工具还是不错的,推荐大家使用哈。
本篇目录链接
flux介绍
Flux是一个在git中可以自动明确集群状态和匹配配置的工具。它可以用在操作Kubernetes集群中来触发deployment,这就意味着你不再需要单独的CD工具。在此基础上(以及可配置的策略)它可以监控仓库、检测镜像、触发deployment以及更新所需的运行配置。
好处就是你不需要授予集群的CI访问权,每一个更改都是原子的和事务性的,git已经有了审计日志。每个事务要么失败,要么成功。你完全以代码为中心,不需要新的基础设施。
flux可以做什么?
Flux在用作连续交付管道末端的部署工具时最有用,并确保将新的容器镜像和配置变更更新到集群中。
从helm开始用flux
前置条件:
- Kubernetes >= v1.11
- helm v3(https://github.com/helm/helm/tags)
- flux-project( https://github.com/fluxcd/flux-get-started)
- Flux CLI 客户端工具(https://fluxcd.io/docs/installation/#install-the-flux-cli)
部署flux
step1:添加repo源
helm repo add fluxcd https://charts.fluxcd.io
step2:创建flux运行的命令空间
kubectl create namespace flux
step3:在集群中创建flux访问repo的deploy key
ssh-keygen -q -N "" -f ~/.ssh/gitlab.com
kubectl -n flux create secret generic flux-ssh --from-file=~/.ssh/gitlab.com
rm ~/.ssh/gitlab.com # 也可以不删除
step4:开始安装
由于我这里使用的是自己定义的deploy key ,所以运行以下命令
helm upgrade -i flux fluxcd/flux
--set git.url=git@gitlab.com:xxx/gwave-dev/tomcat
--set git.branch=master
--namespace flux
可以发现,在部署好flux服务后,会对出现一个flux-git-deploy的secrets,这个是flux服务本身生成的一堆密钥对,代码库就需要此公钥来和flux进行通信
step5:执行如下命令将publickey粘贴到deploy key中
kubectl -n flux logs deployment/flux | grep identity.pub | cut -d '"' -f2
或者
fluxctl identity --k8s-fwd-ns flux
将上述命令回去到的public key复制并粘贴到代码库中的Deploy Keys中,如下图所示:
step6:连通性测试
fluxctl sync --k8s-fwd-ns flux
到此已经部署ok,接下来所有的操作只需要对代码库进行增删改即可,同时提交后即可完成服务的部署。
代码库结构如下:
说明:
如果通过helm部署的时候没有–git-path参数,默认只会对namespaces和workloads目录生效,若想对其他目录生效,只需在helm upgrade中添加–git-path 即可。
将代码库中的nginx的副本扩容到5个。
说明:
如果通过helm部署的时候没有–git-path参数,默认只会对namespaces和workloads目录生效,若想对其他目录生效,只需在helm upgrade中添加–git-path 即可。
将代码库中的nginx的副本扩容到5个。