基于K3s搭建GitOps环境

系列文章目录

本文是基于K3s搭建GitOps环境的系列文章总览,包含完整的组件规划和部署路线图。本系列旨在帮助您在K3s轻量级Kubernetes集群上构建完整的GitOps环境,实现从代码到部署的自动化流水线。

基础环境篇

  1. 基于K3s搭建GitOps环境1-K3s安装 - K3s集群部署与基础配置
  2. 基于K3s搭建GitOps环境2-配置Traefik - Traefik反向代理配置
  3. 基于K3s搭建GitOps环境3-配置内网域名 - CoreDNS内网域名解析
  4. 基于K3s搭建GitOps环境4-证书管理 - cert-manager证书管理

核心组件篇

  1. [[基于K3s搭建GitOps5-部署Gitea]] - 代码仓库部署
  2. [[基于K3s搭建GitOps6-部署ArgoCD]] - GitOps核心部署
  3. [[基于K3s搭建GitOps7-部署Tekton]] - CI流水线部署
  4. [[基于K3s搭建GitOps8-部署Harbor]] - 镜像仓库部署

GitOps环境架构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

┌─────────────────────────────────────────────────────────────────┐
│ GitOps 完整链路 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ① 开发者 ──push──▶ Gitea (Git仓库) │
│ │
│ ② Tekton Pipeline ──webhook触发──▶ 克隆代码 │
│ │
│ ③ Tekton Pipeline ──构建──▶ Docker镜像 │
│ │ │
│ │ docker push │
│ ▼ │
│ ④ Harbor (镜像仓库) ◀── 推送镜像 │
│ │ • 存储镜像bits │
│ │ • Trivy CVE扫描 │
│ │ • Notary镜像签名(可选) │
│ │
│ ⑤ ArgoCD Application ──监听镜像Tag变化──▶ 检测到新镜像 │
│ │ │
│ │ 更新Deployment镜像Tag │
│ ▼ │
│ ⑥ K3s集群 ──kubectl apply──▶ 新Pod以新镜像启动 │
│ │
└─────────────────────────────────────────────────────────────────┘

组件规划

开放端口

端口 用途 说明
53 CoreDNS服务 内网域名解析
443, 80 Traefik入口 HTTPS/HTTP访问入口
5432/3306 数据库服务 PostgreSQL/MySQL(二选一)
6379 Redis缓存 缓存服务
8022 SSH管理 服务器管理端口
22 Git SSH git+ssh方式代码上传

域名规划(统一使用example.io)

组件 访问地址 说明
Traefik Dashboard https://traefik.example.io 反向代理管理界面
Harbor https://harbor.example.io 私有镜像仓库,支持镜像签名与安全扫描
Gitea https://gitea.example.io 轻量级代码仓库
Tekton https://tekton.example.io 云原生CI流水线
ArgoCD https://argocd.example.io GitOps持续部署核心
Notary https://notary.example.io 镜像签名服务(Harbor集成)

部署路线图

第一阶段:基础环境搭建(1-4天)

  1. 第1天:部署K3s集群,配置存储和网络
  2. 第2天:配置Traefik反向代理,启用Dashboard
  3. 第3天:配置CoreDNS内网域名解析
  4. 第4天:部署cert-manager,配置证书管理

第二阶段:核心组件部署(5-8天)

  1. 第5天:部署Gitea代码仓库,配置数据库连接
  2. 第6天:部署ArgoCD,配置GitOps工作流
  3. 第7天:部署Tekton,配置CI流水线
  4. 第8天:部署Harbor,配置镜像仓库和安全扫描

第三阶段:集成与优化(9-10天)

  1. 第9天:组件间联动配置,打通完整流水线
  2. 第10天:生产环境优化,配置监控和告警

环境要求

硬件要求

  • 最低配置:2核CPU,4GB内存,50GB存储
  • 推荐配置:4核CPU,8GB内存,100GB存储
  • 生产环境:根据业务规模弹性扩展

软件要求

  • 操作系统:Ubuntu 20.04+ / CentOS 7+ / RHEL 8+
  • 容器运行时:Containerd(K3s默认集成)
  • 网络:内网互通,可访问外网(用于拉取镜像)

配置参考

所有组件的详细配置文件和部署脚本请参考:KubeTemplate-devops

该仓库包含:

  • K3s集群部署脚本
  • 各组件Helm Chart配置
  • 示例应用部署文件
  • 监控和日志配置
  • 生产环境优化建议

注意事项

  1. 域名配置:所有示例域名使用example.io,实际部署时请替换为您的域名
  2. 证书管理:生产环境建议使用Let’s Encrypt证书,内网环境可使用自签名证书
  3. 存储配置:K3s默认使用local-path存储类,生产环境建议配置持久化存储
  4. 安全加固:部署完成后请及时修改默认密码,配置网络策略
  5. 备份策略:定期备份数据库和持久化卷数据

常见问题

Q1: K3s与其他Kubernetes发行版有何区别?

A: K3s是轻量级Kubernetes发行版,专为边缘计算和资源受限环境设计,相比标准K8s:

  • 安装包更小(约40MB)
  • 内存占用更低
  • 默认集成Containerd、Traefik、CoreDNS等组件
  • 简化了配置和管理

Q2: GitOps与传统CI/CD有何不同?

A: GitOps的核心思想是”Git作为单一可信源”:

  • 声明式配置:所有环境配置存储在Git仓库中
  • 自动同步:集群状态自动与Git仓库中的期望状态同步
  • 可追溯性:所有变更都有Git提交记录
  • 一键回滚:通过Git版本控制实现快速回滚

Q3: 如何选择数据库?

A: 本系列支持两种数据库方案:

  • PostgreSQL:功能丰富,适合复杂应用
  • MySQL:轻量快速,适合简单场景
    您可以根据实际需求选择一种,配置方法类似。