flux + kubernetes + gitops + Kustomization

1. 安装依赖

yum install -y git

2. 设置代理(根据你的环境)

export http_proxy=http://192.168.3.77:20171

export https_proxy=http://192.168.3.77:20171

export NO_PROXY=*.baidu.com,10.0.0.0/8,.cluster.local,192.168.3.0/24

3. 安装 flux CLI

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

source ~/.bashrc

4. 初始化 Git 仓库

mkdir -p /root/gitops-repo

cd /root/gitops-repo/

git init

git config --global user.name "user"

git config --global user.email "user@example.com"

5. 安装 Flux 到 Kubernetes

flux install

6. 创建目录结构

mkdir -p base overlays/dev

7. 编写 base 资源

cat > base/deployment.yaml << EOF

apiVersion: apps/v1

kind: Deployment

metadata:

name: myapp

spec:

replicas: 1

selector:

matchLabels:

app: myapp

template:

metadata:

labels:

app: myapp

spec:

containers:

  • name: myapp

image: nginx:alpine

ports:

  • containerPort: 80

EOF

cat > base/service.yaml << EOF

apiVersion: v1

kind: Service

metadata:

name: myapp

spec:

type: ClusterIP

ports:

  • port: 80

selector:

app: myapp

EOF

cat > base/kustomization.yaml << EOF

apiVersion: kustomize.config.k8s.io/v1beta1

kind: Kustomization

resources: //这里必须写resources "./overlays/dev" 不用写是应为他是监听主目录是唯一的例外

  • deployment.yaml

  • service.yaml

EOF

8. 编写 overlays/dev

cat > overlays/dev/kustomization.yaml << EOF

apiVersion: kustomize.config.k8s.io/v1beta1

kind: Kustomization

resources:

  • ../../base

replicas: //只会修改被resources引入的yaml

  • name: myapp

count: 2

images:

  • name: nginx

newTag: 1.25-alpine

EOF

9. 提交到 Git

git add .

git commit -m "init gitops"

10. 配置 SSH 密钥(本地Git认证)

ssh-keygen -t rsa -N "" -f /root/.ssh/id_rsa

cat /root/.ssh/id_rsa.pub > /root/.ssh/authorized_keys

chmod 600 /root/.ssh/authorized_keys

ssh -o StrictHostKeyChecking=no root@192.168.3.243 "echo OK"

11. 创建 Git 源(Flux 拉取 Git)

flux create source git gitops-repo \

--url=ssh://root@192.168.3.243/root/gitops-repo \

--branch=master \

--interval=30s \

--private-key-file=/root/.ssh/id_rsa

12. 授予 Flux 集群权限

kubectl create clusterrolebinding flux-cluster-admin \

--clusterrole=cluster-admin \

--serviceaccount=flux-system:flux-system

13. 加入测试资源(带 namespace)

cat > overlays/dev/nginx-test.yaml << EOF

apiVersion: v1

kind: Pod

metadata:

namespace: default

name: nginx-test

spec:

containers:

  • name: nginx

image: nginx:alpine

EOF

git add .

git commit -m "fix: add namespace"

14. 创建 Kustomization(自动部署)

flux create kustomization gitops-dev \

--source=gitops-repo \

--path="./overlays/dev" \

--prune=true \

--interval=30s \

--target-namespace=default

15. 查看最终状态

flux get all

kubectl get po

相关推荐
IT策士5 小时前
Docker从0到1再到 Kubernetes 实战:第15篇Compose 中的服务依赖、健康检查与启动顺序
docker·容器·kubernetes
Waay5 小时前
K8s Deployment 滚动更新与回滚深度详解(含踩坑实录+生产选型原理)
云原生·容器·kubernetes
IT策士10 小时前
Docker 从 0 到 1 再到 Kubernetes 实战:第18篇 从 Docker Compose 到 Kubernetes 的思考
docker·容器·kubernetes
qq_3564086610 小时前
Kubernetes Rook-Ceph 高可用存储部署文档
ceph·容器·kubernetes
Cat_Rocky11 小时前
Jenkins通过kubernetes连接K8s集群
运维·kubernetes·jenkins
Devin~Y11 小时前
大厂Java面试实录:Spring Boot/Cloud、Kafka、Redis、K8s 可观测性 + RAG/Agent(小Y翻车版)
java·spring boot·redis·spring cloud·kafka·kubernetes·mybatis
IT策士12 小时前
Docker 从 0 到 1 再到 Kubernetes 实战:第13篇 Compose 环境变量与配置管理
docker·容器·kubernetes
木雷坞12 小时前
Docker / K8s 镜像拉取失败排查:专属加速域名与白名单配置思路
docker·容器·kubernetes
lwx91485212 小时前
离线安装k8s 1.22.12版本
云原生·容器·kubernetes
涛声依旧-底层原理研究所12 小时前
Docker+K8s:云原生应用基石
docker·kubernetes