使用 flux2+kustomize+helm+github 进行多集群 GitOps 云原生渐进式交付

对于此示例,我们假设有两个集群的场景:暂存(staging)和生产(production)。
最终目标是利用 FluxKustomize 来管理两个集群,同时最大限度地减少重复声明。

我们将配置 Flux 以使用 HelmRepositoryHelmRelease
自定义资源安装、测试和升级演示应用程序。Flux 将监控 Helm 存储库,并根据 semver 范围自动将 Helm 版本升级到最新的 chart 版本。

准备工作

flux2-kustomize-helm-example

您将需要 Kubernetes 集群版本 1.16 或更新版本以及 kubectl 版本 1.18 或更新。
对于快速的本地测试,您可以使用Kubernetes kind。不过,任何其他 Kubernetes 设置也可以正常工作。

为了遵循本指南,您需要一个 GitHub 帐户和一个可以创建存储库的personal access token(检查 repo 下的所有权限)。

使用 HomebrewMacOSLinux 上安装 Flux CLI

brew install fluxcd/tap/flux

或者通过使用 Bash 脚本下载预编译的二进制文件来安装 CLI:

curl -s https://fluxcd.io/install.sh | sudo bash

项目结构

Git 存储库包含以下顶级目录:

  • apps 目录包含每个集群具有自定义配置的 Helm 版本
  • infrastructure 目录包含常见的基础设施工具,例如 NGINX ingress controller 和 Helm 存储库定义
  • clusters 目录包含每个集群的 Flux 配置
├── apps
│   ├── base
│   ├── production 
│   └── staging
├── infrastructure
│   ├── nginx
│   ├── redis
│   └── sources
└── clusters
    ├── production
    └── staging

apps 配置结构为:

  • apps/base/ 目录包含命名空间和 Helm 发布定义(release definitions)
  • apps/production/ 目录包含生产 Helm 发布值(release values)
  • apps/staging/ 目录包含 staging values
./apps/
├── base
│   └── podinfo
│       ├── kustomization.yaml
│       ├── namespace.yaml
│       └── release.yaml
├── production
│   ├── kustomization.yaml
│   └── podinfo-patch.yaml
└── staging
    ├── kustomization.yaml
    └── podinfo-patch.yaml

apps/base/podinfo/ 目录中,我们有一个 HelmRelease,两个集群都有共同的值:

apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
  name: podinfo
  name
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值