
Flux CD是一个基于GitOps的工具,用于实现在Kubernetes上进行持续交付的自动化过程。它允许开发团队通过版本控制系统来管理应用程序的部署,并将应用程序自动同步到Kubernetes集群。使用Flux CD,您可以通过定义应用程序的声明性配置文件来管理整个交付流程,从而实现自动化的构建、测试和部署。Flux CD通过定期轮询存储库,将源代码存储库中存储的Kubernetes清单与Kubernetes集群同步,因此团队无需担心运行kubectl命令和监视环境,以查看是否部署了正确的工作负载。相反,Flux CD确保Kubernetes集群始终与源代码存储库中定义的配置保持同步。
Flux CD允许团队实现GitOps,它有以下原则:
Kubernetes的传统CI/CD部署遵循以下模式:

这个过程听起来很合理,也或多或少是行业标准。然而,也有一些限制:
Flux CD允许团队使用YAML清单声明性地指定所有必需的Kubernetes配置。

此外,如果您希望自动升级工作负载,Flux CD还允许您轮询容器注册表,并使用最新的映像更新Git存储库上的Kubernetes清单。 由于Flux CD作为Kubernetes操作符运行,因此设置简单,易于启动。 让我们看一个实际演示,以便更好地理解它。
确保您有一个正在运行的Kubernetes集群和集群管理员角色来部署Flux CD。
Flux CD提供了一个fluxctl二进制文件,帮助您在Kubernetes集群中部署和管理Flux CD。下载最新版本的fluxctl并将其移动到/usr/bin目录。
$ wget https://github.com/fluxcd/flux/releases/download/1.19.0/fluxctl_linux_amd64
$ mv fluxctl_linux_amd64 /usr/bin/fluxctl
$ sudo chmod +x /usr/bin/fluxctl对于这个示例,让我们使用GitHub作为源代码存储库。在你的GitHub帐户中Fork github.com/redhatxl/ng…
存储库包含nginx-deployment和nginx-service清单在workload目录中,web命名空间定义在namespaces目录中。
├─ namespaces
│ └─ web-ns.yaml
├─ workloads
│ ├─ nginx-deployment.yaml
│ └─ nginx-service.yaml
├─ .gitignore
├─ LICENSE
└─ README.md在GHUSER环境变量中提供你的GitHub用户名,在GHREPO环境变量中提供GitHub repo,如下所示。创建一个名为flux的新名称空间,并在Kubernetes集群中安装flux CD操作符。 fluxctl install命令根据以下选项生成所需的Kubernetes清单:
导出您的GitHub个人访问令牌和用户名:
用于flux自动创建repo
export GITHUB_TOKEN=ghp_lGozxxxxxxxxx--------SI28Gmzi
export GITHUB_USER=redhatxl通过运行以下命令检查您是否拥有运行Flux所需的一切:
flux check --pre
有关如何使用GitHub org, Gitlab和其他git提供者引导的信息,请参见安装。
flux install
执行bootstrap命令:
$ export GITHUB_TOKEN=ghp_lGozxxxxxxxxx--------SI28Gmzi
$ export GITHUB_USER=redhatxl
$ flux bootstrap github \
--owner=$GITHUB_USER \
--repository=nginx-kubernetes-fluxcd \
--branch=main \
--path=clusters/my-cluster \
--personal
可以看到已成功在github创建对应repo并在k8s集群内安装flux对应控制器

clone源码并查看内容,可以看到对应安装到集群内的flux原始资源清单

查看当前状态


在创建一个kustomization
flux create kustomization nginx \
--source=flux-system \
--path="./k8sresource" \
--prune=true \
--validation=client \
--interval=1m \
--health-check-timeout=2m \
--target-namespace=default

创建业务k8s部署资源目录,并创建资源清单文件

提交代码

查看已经开始部署

flux create source git podinfo \
--url=https://github.com/stefanprodan/podinfo \
--tag-semver=">=4.0.0" \
--interval=1m
flux create kustomization podinfo-default \
--source=podinfo \
--path="./kustomize" \
--prune=true \
--validation=client \
--interval=1m \
--health-check="Deployment/podinfo.default" \
--health-check-timeout=1m \
--target-namespace=defaultflux create source helm bitnami \
--interval=1h \
--url=https://charts.bitnami.com/bitnami
flux create helmrelease nginx \
--interval=1h \
--release-name=nginx-ingress-controller \
--target-namespace=kube-system \
--source=HelmRepository/bitnami \
--chart=nginx-ingress-controller \
--chart-version="5.x.x"flux uninstall --namespace flux-system
使用Flux CD进行持续交付可以提供许多好处,包括简化部署流程、减少人为错误、实现版本控制和可追溯性、自动化回滚等。通过引入GitOps的模式,Flux CD使得交付过程更加可靠和可重复,提高了团队的生产效率和应用程序的可靠性。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。