动手实践云原生(一)--从目标状态开始

系列文章目录

系列开篇:云原生从应用到原理



前言:到底如何快速应用?

说真,我在课堂上认真讲过“云原生从入门到精通”:
从 容器原理 到 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 服务,整个过程分两步走:

  1. 配置 Helm 仓库地址,2. 定义你要部署的 Helm 包。
    flux 基本概念

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 自动生成部署文件。
敬请期待下一篇!

如果你觉得这个思路对你有帮助,也欢迎点个赞、收藏或者转发给你团队的同事,我们一起加速云原生之路吧!☁️💪

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

佳言ZA语

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值