系列文章目录
前言:到底如何快速应用?
说真,我在课堂上认真讲过“云原生从入门到精通”:
从 容器原理 到 K8s 编排机制,再到 服务网格、Helm 包管理、云原生开发范式……讲完一半,听众只剩三分之一,再讲一节,老师我自己都快跑了 😅。
为什么?——听不懂、学不动、用不上。
所以,这一系列文章不走寻常路:
我们不讲概念,直接上手。先用起来,再回头反思为什么这么用,最后才去慢慢理解和优化。
🚀 一、GitOps 极简实践:用起来再说!
这次的主角是 FluxCD。
别急着去看官网、刷文档,照着下面的命令复制粘贴,动起来才是王道。
⚠️ 前提条件:
确保你已经有了一个可以通过 kubectl 访问的 Kubernetes 1.30+ 集群。没有也没关系,本系列后续会教你1小时起一个可用 K8s 环境!
🧰 安装 FluxCD CLI 工具
在本地能连接集群的机器上安装:
#linux推荐
curl -s https://fluxcd.io/install.sh | sudo bash
#Mac 推荐
brew install fluxcd/tap/flux
#验证安装
flux --version
📦 初始化 FluxCD 到集群里
下面这条命令是核心,把它复制粘贴下来就能跑:
#可以下载外网镜像
flux bootstrap git --url=https://xxx.git --username=user --password=pass --token-auth=true --branch=master --path=gitpath
如果你拉不动外网镜像:
可以使用转存后的私有仓库:
flux bootstrap git --url=https://xxx.git --username=user --password=pass --token-auth=true --branch=master --path=gitpath --registry=kili-docker.pkg.coding.net/ebes/ot
安装成功后,用这个命令看看 FluxCD 工作是否正常:
#检查状态
flux get all
🎉 到这里,你就相当于在集群里部署了一个自动化巡逻兵,随时盯着你的 Git 仓库,有新东西(YAML 文件)它就自动部署。
🧩 二、部署一个真正的应用!
是时候见证奇迹了!
我们先来部署一个最简单的 nginx 服务,整个过程分两步走:
- 配置 Helm 仓库地址,2. 定义你要部署的 Helm 包。
1️⃣ 传统 HTTP Helm 仓库版本:
在你的 Git 仓库里(也就是你上面设的那个 gitpath),创建一个 app/ 目录。然后:
① 新建 repo.yaml:
apiVersion: source.toolkit.fluxcd.io/v1beta2
kind: HelmRepository
metadata:
name: bitnami
namespace: default
spec:
interval: 5m0s
url: https://charts.bitnami.com/bitnami
② 新建 release.yaml:
apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
name: nginx
namespace: default
spec:
interval: 5m
releaseName: nginx
chart:
spec:
chart: nginx
version: "15.3.0"
sourceRef:
kind: HelmRepository
name: bitnami
namespace: ops-system
interval: 1m
values:
upgrade:
remediation:
remediateLastFailure: false
test:
enable: true
然后静静等上几分钟,输入:
kubectl get all
你会发现:Nginx 已上线!但别急,有个问题来了:版本太旧了!
2️⃣ OCI 版本的新 Nginx 更香!
Bitnami 后来都把 Helm 仓库迁移到了 OCI 格式,咱也得跟上节奏。
在 app/ 目录下新建一个文件:nginx-oci.yaml
kind: HelmRepository
metadata:
name: nginx-helm-oci
namespace: default
spec:
interval: 1m
type: oci
url: oci://kili-docker.pkg.coding.net/ebes/ot/nginx
---
apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
name: nginx-new
namespace: default
spec:
interval: 5m
releaseName: nginx-new
chart:
spec:
chart: nginx
version: "19.1.1"
sourceRef:
kind: HelmRepository
name: nginx-helm-oci
namespace: default
interval: 1m
values:
upgrade:
remediation:
remediateLastFailure: false
test:
enable: false
✨ 过几分钟你就会看到新版 nginx 在集群中跑起来了!
🧹 三、想删?很简单!
不需要 helm uninstall,也不需要 kubectl delete。
只需要把对应的 YAML 文件注释掉或者删掉,Git 一提交,Flux 自动帮你清理。
🧠 写在最后:再强调一遍学习顺序!
这个系列的核心原则就是四个字:先用再说!
你不需要立刻理解 Helm 的结构;
不需要完全明白 FluxCD 的控制器逻辑;
更不需要背 K8s 的对象模型。
只要你能动手复制粘贴、搭出第一个自动化部署流程,你的 GitOps 之路就已经启程了。
后面我会带你逐步理解 Helm 的模板、Flux 的事件机制、如何接入 Prometheus 进行监控,甚至如何接入 AI 自动生成部署文件。
敬请期待下一篇!
如果你觉得这个思路对你有帮助,也欢迎点个赞、收藏或者转发给你团队的同事,我们一起加速云原生之路吧!☁️💪