HiHuo
首页
博客
手册
工具
关于
首页
博客
手册
工具
关于
  • 概览

    • K8s 实战学习实验室
    • 服务访问清单
    • K8s-Lab 学习总纲、仓库评估与专家路线图
  • 课程正文

    • 环境验证与第一课:认识你的真实集群
    • 第二课:kubectl apply 之后,到底发生了什么
    • 第三课:调度器如何选节点,为什么 Pod 会 Pending
    • 第四课:Kubernetes 网络、协议分层、VXLAN/IPIP/WireGuard 原理与排障
    • 第五课:NetworkPolicy、零信任网络与流量边界
    • 第六课:身份、认证、授权、准入与 ServiceAccount / RBAC 原理
    • 第七课:ConfigMap 与 Secret 注入模型、更新机制与安全边界
    • 第八课:存储持久化、PV / PVC / StorageClass 与 NFS 原理
    • 第九课:StatefulSet、Headless Service、稳定身份与存储原理
    • 第十课:探针、滚动更新、优雅终止与 PDB 原理
    • 第十一课:requests / limits、QoS、OOM 与驱逐原理
    • 第十二课:HPA、自动扩缩容、指标链路与副本伸缩原理
    • 第十三课:Service、EndpointSlice、kube-proxy、CoreDNS 与服务发现原理
    • 第十四课:Ingress-nginx、反向代理、Host / Path、NodePort 与北南向流量原理
    • 第十五课:HTTPS、TLS、SNI、证书信任与 Ingress 终止原理
    • 第十六课:cert-manager、Ingress 自动签发、证书生命周期与 ACME 工作流原理
    • 第十七课:ACME、Let's Encrypt、HTTP-01 / DNS-01、Orders / Challenges 与生产限制原理
    • 第十八课:大模型全生态,从数据到训练到部署到治理原理
    • 第十九课:大模型数据集、清洗、标注、切分、版本管理与质量治理原理
    • 第二十课:大模型训练、SFT、LoRA、Checkpoint、Adapter 与模型产物原理
    • 第二十一课:大模型推理、量化、KV Cache、vLLM、吞吐/延迟与部署发布链路原理
  • 实验操作记录

    • 本次仓库审查操作记录与命令原理
    • 本轮操作记录:环境验证、集群基线盘点与故障样本采集
    • 本轮操作记录:kubectl apply 主链路实验
    • 本轮操作记录:调度实验与 Pending 排查
    • 本轮操作记录:Kubernetes 网络原理、协议对比与调试实验
    • 本轮操作记录:NetworkPolicy 与零信任网络实验
    • 本轮操作记录:身份、认证、授权、准入实验
    • 本轮操作记录:ConfigMap 与 Secret 注入、更新与安全边界实验
    • 本轮操作记录:存储持久化、PV / PVC / StorageClass 与 NFS 实验
    • 本轮操作记录:StatefulSet、Headless Service 与稳定身份实验
    • 本轮操作记录:探针、滚动更新、优雅终止与 PDB 实验
    • 本轮操作记录:资源模型、QoS、OOM 与 CPU 节流实验
    • 本轮操作记录:HPA 自动扩缩容实验
    • 本轮操作记录:Service、EndpointSlice、CoreDNS 与服务发现排障实验
    • 本轮操作记录:Ingress-nginx、NodePort 与北南向流量实验
    • 本轮操作记录:HTTPS、TLS、自签证书与 Ingress 实验
    • 本轮操作记录:cert-manager 安装、CA 签发与 Ingress 自动证书实验
    • 本轮操作记录:ACME staging、HTTP-01 失败样本与排障实验
    • 本轮操作记录:大模型全生态与基础原理科普文撰写
    • 本轮操作记录:大模型数据集样本与治理文档编写
    • 本轮操作记录:大模型训练与模型产物概念文撰写
    • 本轮操作记录:大模型推理与服务发布概念文撰写

ArgoCD 与 GitOps — 声明式持续部署

GitOps 是什么?

传统 CI/CD:CI 构建完直接 kubectl apply 部署到集群。问题:

  • 谁部署的?什么时候?不好追踪
  • 集群状态和代码仓库不一致(手动改了集群但没改 Git)
  • 回滚困难

GitOps 的核心原则:

  1. Git 是唯一真相源 — 集群的期望状态全部存在 Git 仓库中
  2. 声明式 — Git 中存的是"我要什么状态",不是"执行什么操作"
  3. 自动同步 — 工具持续比对 Git 和集群,发现差异自动修复
  4. 可审计 — 每次变更都是 Git commit,谁改了什么一目了然

ArgoCD 架构

Git 仓库 (Gitea)
    │
    │ ArgoCD 每 3 分钟 poll
    │
┌───▼────────────┐
│ ArgoCD Server   │ ← Web UI + API
│                 │
│ Repo Server     │ ← 克隆 Git 仓库,渲染 manifests
│                 │
│ Application     │ ← 比对 Git vs 集群,执行同步
│ Controller      │
└────────────────┘
         │
         ▼
    K8s API Server → 实际部署

核心概念

概念说明
Application一个 Git 仓库路径 → 一个 K8s namespace 的映射
Sync让集群状态匹配 Git 中的定义
Drift集群状态与 Git 不一致(有人手动改了集群)
Self-Heal自动修复 drift(有人手动删了 Pod,ArgoCD 自动重建)

访问信息

项目值
URLhttp://107.148.176.193:30880
用户名admin
密码oJAKbz26bMzRCfTN

Gitea — 自托管 Git

项目值
Web URLhttp://107.148.176.193:30500
SSHssh://git@107.148.176.193:30022
用户名admin
密码Gitea12345

GitOps 工作流实践

完整流程

1. 在 Gitea 创建仓库,放入 K8s manifests
2. 在 ArgoCD 创建 Application,指向 Gitea 仓库
3. ArgoCD 自动同步 manifests 到集群
4. 修改 Git 中的 manifests(如改 image tag)
5. ArgoCD 检测到变更,自动同步
6. 需要回滚?git revert → ArgoCD 自动同步旧版本

手动创建 Application (CLI)

# 安装 argocd CLI
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d

argocd login 107.148.176.193:30880 --username admin --password <password> --insecure

argocd app create my-app \
  --repo http://gitea-http.gitea:3000/admin/my-app.git \
  --path manifests \
  --dest-server https://kubernetes.default.svc \
  --dest-namespace dev \
  --sync-policy automated \
  --self-heal

Sync Policy 选项

策略含义
Manual需要手动点 Sync
AutomatedGit 变更自动同步
Self-Heal有人手动改集群自动修复
Auto-PruneGit 中删了的资源自动从集群删除

面试题

Q: ArgoCD vs Flux 怎么选?

ArgoCDFlux
UI强大的 Web UI无 UI(CLI + Grafana dashboard)
多集群内置支持需要额外配置
Helm 支持内置通过 HelmRelease CRD
学习曲线较低较高
CNCF 级别GraduatedGraduated

Q: GitOps 中如何管理 Secret?

Secret 不能明文存 Git。解决方案:

  1. Sealed Secrets — 用公钥加密后存 Git,集群内用私钥解密
  2. External Secrets Operator — 从 Vault/AWS Secrets Manager 同步
  3. SOPS — Mozilla 的加密工具,支持 age/PGP/KMS 加密 YAML 中的 values
  4. Vault Agent Injector — HashiCorp Vault 通过 sidecar 注入 Secret

→ 03-security-hpa-crd.md