基础设施 (infrastructure)

infrastructure 是组件数量最多的一类,囊括了让整个 yldm 集群得以运行的所有支撑性服务:GitOps 编排、密钥与证书管理、CI/CD runner、策略准入、集群级 DNS/存储/备份。每个组件都是 applications/infrastructure/<service>/ 下的一个 kustomize 目录,由 ArgoCD app-of-apps 根应用自动发现并同步。

调度约定

worker3 是配置最高的 worker,承载数据库 StatefulSet(PV 钉在本地盘)与全部 infrastructure 组件。这也意味着 worker3 是集群里影响面最大的单点——它宕机时哪些组件能随 Pod 漂移、哪些需要人工恢复,参见仓库的 infra 节点宕机应急 runbook。

GitOps 与编排

这组组件负责把仓库变成运行中的集群,并把镜像更新反向回写到仓库。

  • Name
    argocd
    Description
    GitOps 控制器,从 k8s-config 仓库 main 分支持续同步整个集群。镜像 quay.io/argoproj/argocd:v3.4.3,application-controller 为 StatefulSet,server/repo-server/applicationset-controller/notifications-controller 为独立 Deployment,配 redis(redis:8-alpine)。Web UI 经 ingress argocd.yldm.tech 暴露。详见 ArgoCDGitOps 工作流
  • Name
    argocd-image-updater
    Description
    镜像 quay.io/argoprojlabs/argocd-image-updater:v1.2.1,按 semver 策略检测新镜像 tag 并 git commit 回写到各 app 的 kustomization(即仓库里 build: automatic update of … 这类提交)。每个 app 的更新规则在 imageupdaters/<app>.yaml
  • Name
    argo-workflows
    Description
    基于 Argo Workflows(quay.io/argoproj/workflow-controller:v4.0.6 + argocli:v4.0.6)的工作流引擎,namespace argo-workflows,Web UI 经 ingress argo-workflows.yldm.tech 暴露,含 cronworkflows、clustertemplates 等。
  • Name
    reloader
    Description
    ghcr.io/stakater/reloader:v1.4.17,监听 ConfigMap/Secret 变更并自动滚动重启引用它们的工作负载。

密钥与证书

集群里没有明文 Secret——全部由 external-secrets 从 Vault 拉取,TLS 证书由 cert-manager 签发。

  • Name
    vault
    Description
    单副本、storage "file"、Shamir 封印的 HashiCorp Vault(hashicorp/vault:2.0.2),是所有密钥的源头。Pod 重启时 postStart 钩子自动 unseal。经 ingress vault.yldm.tech 暴露。详见 Vault
  • Name
    external-secrets
    Description
    External Secrets Operator(oci.external-secrets.io/external-secrets/external-secrets:v0.20.4),含 controller、webhook、cert-controller。通过 ClusterSecretStore vault-backend 把各 app 的 ExternalSecret 解析成集群里的 Secret。详见 External Secrets
  • Name
    cert-manager
    Description
    证书签发与续期(quay.io/jetstack/cert-manager-*:v1.20.2,含 controller/cainjector/webhook)。配 Let's Encrypt prod ClusterIssuer,DNS-01 校验走 Cloudflare API token(由 ExternalSecret 注入)。
  • Name
    dex
    Description
    OIDC 身份代理(ghcr.io/dexidp/dex:v2.45.1),namespace dex,经 ingress dex.yldm.tech 暴露,上游对接 Google OAuth,为集群内服务提供统一登录。

CI/CD 与 Runner

自托管 CI 由 Gitea(自建 Git 服务)和多套 GitHub Actions / Gitea Actions runner 组成。

  • Name
    gitea
    Description
    自托管 Git 服务(gitea/gitea:1.26.2-rootless),单副本 StatefulSet,后端 postgres:18-alpine,经 ingress gitea.yldm.tech 暴露,另有 SSH Service,配 ServiceMonitor。
  • Name
    github-runner
    Description
    ARC v2(gha-runner-scale-set)自托管 GitHub Actions runner,自建运行器镜像 ghcr.io/yldm-tech/actions-runner-with-gh,scale-set 名 yldm-backend-runners。一个共享的 ARC 控制器在 arc-systems 管理所有 scale-set。
  • Name
    actions-runner-system
    Description
    ARC 的系统 namespace(actions-runner-system)资源配额/限额定义所在,承载共享的 gha-runner-scale-set-controller。
  • Name
    kamify-runner
    Description
    另一套 ARC v2 gha-runner-scale-set 安装,与 github-runner 共用 arc-systems 控制器。
  • Name
    everyapi-runner
    Description
    第三套 ARC v2 gha-runner-scale-set 安装,同样由共享控制器管理。
  • Name
    gitea-runner
    Description
    Gitea Actions 的 act_runner(gitea/runner:1.0.8-dind),单副本 StatefulSet,含 dind sidecar,供 Gitea 仓库的流水线使用。

策略与配置

  • Name
    kyverno
    Description
    策略引擎(reg.kyverno.io/kyverno/*:v1.18.1,含 admission/background/cleanup/reports 四个 controller)。当前策略含 protect-core-infrastructureprotect-kubernetes-service 两条 ClusterPolicy,保护核心基础设施资源不被误删/误改。

集群基础组件

每节点都需要的 DaemonSet 级基础能力——本地 DNS 缓存与 NFS 客户端。

  • Name
    nodelocaldns
    Description
    NodeLocal DNSCache(registry.k8s.io/dns/k8s-dns-node-cache:1.26.8),每节点一个 DaemonSet,监听本地 169.254.20.10:53,上游指向集群 kube-dns Service 10.43.0.10,减少跨节点 DNS 查询延迟。
  • Name
    node-nfs-client
    Description
    每节点的 NFS 客户端初始化 DaemonSet(debian:13-slim),确保各节点具备挂载 nfs-client 存储类所需的 NFS 客户端环境。

备份与告警

etcd 快照、卷备份、异地拉取与心跳告警,构成集群的灾备与监控兜底。

  • Name
    velero
    Description
    集群备份/恢复(velero/velero:v1.18.1 + velero-plugin-for-aws:v1.14.1),namespace velero,含 node-agent DaemonSet,按 namespace 配置 backupStorageLocation 与定时备份计划,备份落在集群内 MinIO。
  • Name
    k3s-etcd-backup
    Description
    K3s 嵌入式 etcd 快照备份(alpine:3.24),每 6 小时(0 */6 * * *)一次,并把 master1 的快照上传到 MinIO;GPG passphrase 经 ExternalSecret 注入。
  • Name
    oracle-backup
    Description
    异地备份同步(alpine:3.24):oracle-backup-pull 每日 04:30 UTC 从 Oracle 主机拉取,nas-backup-sync 每日 05:30 UTC 同步到 NAS,凭据走 Secret 挂载。
  • Name
    deadman-switch
    Description
    死人开关心跳(curlimages/curl:8.20.0),每分钟(* * * * *)向集群外 Oracle 主机上的 Uptime Kuma push URL 发送心跳;心跳停止即触发告警。固定调度到 worker3。

评论