FluxCD 项目使用指南
1. 项目的目录结构及介绍
FluxCD 项目的目录结构如下:
flux2-kustomize-helm-example/
├── apps
│ ├── base
│ │ ├── kustomization.yaml
│ │ ├── podinfo-helmrelease.yaml
│ │ └── redis-helmrelease.yaml
│ ├── production
│ │ ├── kustomization.yaml
│ │ └── patch-helmrelease.yaml
│ └── staging
│ ├── kustomization.yaml
│ └── patch-helmrelease.yaml
├── clusters
│ ├── production
│ │ ├── apps.yaml
│ │ └── infrastructure.yaml
│ └── staging
│ ├── apps.yaml
│ └── infrastructure.yaml
├── infrastructure
│ ├── base
│ │ ├── kustomization.yaml
│ │ ├── nginx-helmrelease.yaml
│ │ └── sealed-secrets-helmrelease.yaml
│ ├── production
│ │ ├── kustomization.yaml
│ │ └── patch-helmrelease.yaml
│ └── staging
│ ├── kustomization.yaml
│ └── patch-helmrelease.yaml
└── scripts
└── bootstrap.sh
目录结构介绍
-
apps/
: 包含应用程序的配置文件,分为base
、production
和staging
三个子目录。base/
: 基础配置文件。production/
: 生产环境的配置文件。staging/
: 测试环境的配置文件。
-
clusters/
: 包含集群的配置文件,分为production
和staging
两个子目录。production/
: 生产环境的集群配置文件。staging/
: 测试环境的集群配置文件。
-
infrastructure/
: 包含基础设施的配置文件,分为base
、production
和staging
三个子目录。base/
: 基础配置文件。production/
: 生产环境的基础设施配置文件。staging/
: 测试环境的基础设施配置文件。
-
scripts/
: 包含启动脚本。
2. 项目的启动文件介绍
项目的启动文件主要是 scripts/bootstrap.sh
。
bootstrap.sh
该脚本用于引导 FluxCD 的安装和配置。主要步骤包括:
- 设置 GitHub 仓库信息。
- 验证集群是否满足 FluxCD 的安装要求。
- 使用
flux bootstrap
命令在集群中安装 FluxCD。
#!/bin/bash
# 设置 GitHub 仓库信息
export GITHUB_TOKEN=<your-token>
export GITHUB_USER=<your-username>
export GITHUB_REPO=<repository-name>
# 验证集群是否满足 FluxCD 的安装要求
flux check --pre
# 设置 kubectl 上下文为 staging 集群
kubectl config use-context staging
# 引导 FluxCD 安装
flux bootstrap github \
--context=staging \
--owner=$GITHUB_USER \
--repository=$GITHUB_REPO \
--branch=main \
--personal \
--path=clusters/staging
3. 项目的配置文件介绍
项目的配置文件主要分布在 apps/
、clusters/
和 infrastructure/
目录中。
apps/ 目录
base/kustomization.yaml
: 定义基础配置的资源。production/kustomization.yaml
: 定义生产环境的配置覆盖。staging/kustomization.yaml
: 定义测试环境的配置覆盖。
clusters/ 目录
production/apps.yaml
: 定义生产环境的应用程序配置。production/infrastructure.yaml
: 定义生产环境的基础设施配置。staging/apps.yaml
: 定义测试环境的应用程序配置。staging/infrastructure.yaml
: 定义测试环境的基础设施配置。
infrastructure/ 目录
base/kustomization.yaml
: 定义基础配置的资源。production/kustomization.yaml
: 定义生产环境的配置覆盖。staging/kustomization.yaml
: 定义测试环境的配置覆盖。
这些配置文件通过 Kustomize