一台 non-prod Jenkins 上几十个作业共用一把长期 AWS key。改成每次构建由 Jenkins 签 OIDC token、经 STS 换最长 1 小时的角色凭据后,Jenkins 里不再存 AWS 密钥,但签名私钥仍在控制器上。
从 Vault Agent 迁移到 ESO:TLS 加固、权限收敛与业务平滑切换
微服务集群从 Vault Agent 切换到 ESO,核心在于平滑过渡与权限收敛。通过 Raft 热升级结合内置 PKI 开启 TLS、以 CEL 策略防范配置越权,配合双轨比对与分批灰度,安全完成数十个服务的 Sidecar 替换。
Argo CD 从 label 换成 annotation 跟踪资源:复制资源被 prune、63 字节上限,以及切换后要显式同步
Argo CD 3.0 起默认用 annotation 跟踪资源。kind 上的对比显示:label 方式会 prune 掉带同名 label 的副本,应用名超过 63 字节同步失败;切换后每个应用都要显式同步一次,否则会留下孤儿资源。
AWS EKS 从 VPC CNI 迁移到 Cilium eBPF 独立 ENI 模式
在 AWS EKS 集群上将默认 VPC CNI 迁移至 Cilium Standalone ENI 模式并开启 kubeProxyReplacement。梳理双 CNI 调度门禁、Nitro AL2023 网卡探测、节点单台滚动置换与出站策略加固等关键步骤。
K8s 网络策略与出站控制:云原生 CNI、Calico、出网代理和 Cilium 怎么选
标准 Kubernetes NetworkPolicy 能拦住 Pod 访问私网网段与云主机元数据,但管不了动态 IP 的外部域名和跨云策略统一。对比云厂商原生 CNI、Calico、出网代理与 Cilium 的优缺点后,按场景给出各自的适用边界与落地方式。
Vault Agent Injector 的 admission webhook 机制
Vault Agent Injector 是一个 mutating admission webhook,只在 pod 创建时改写定义。改了默认资源要重启 pod,injector 不可用时 pod 照常创建却没有密钥,都出自这一点。
用 Trivy Operator 持续扫描 homelab 集群的镜像
两个 K3s 集群里大多是第三方镜像,镜像不动也会冒出新 CVE。Trivy Operator 每天重扫并接进 Prometheus 告警,日常要按 CVE ID 分诊,能升级就升级,升不了带证据豁免,并用报告数对工作负载数确认扫描没有静默失败。
K8s 应用从 Vault 取密钥:Agent sidecar、init-only、VSO、ESO 和 CSI 怎么选
Vault Agent 的 init 和 sidecar 默认各申请 250m CPU,在一个非生产集群里占了一半以上的 CPU requests,实际几乎不用。按 DevSecOps 的要求比较五种接法后,先只保留 init,再换成和生产共用接口的 ESO。
环境分支换成主干开发:制品晋级、feature flag、预览环境和分阶段迁移
qa、staging、main 各对应一个环境时,修复要在分支间来回 cherry-pick,各环境跑的也不是同一个镜像。DORA 2022 年的报告把主干开发的收益和门禁、自动回滚这类配套规则绑在一起,迁移因此从立门禁开始,分三个阶段停掉环境分支。
homelab 的 Terraform state 从本地迁到 Cloudflare R2
8 个 Terraform root 的 state 原先只存在一台笔记本上,换台机器就没法接着跑。迁到 R2 的私有桶后用 use_lockfile 加锁,凭据由包装脚本从 Vault 取,改 state 之前先在本地拍一份快照。