集群一多,规矩就得写成代码:聊聊 OPA / Gatekeeper / Kyverno 在多集群里的真实用法

简介: 集群一多,规矩就得写成代码:聊聊 OPA / Gatekeeper / Kyverno 在多集群里的真实用法

集群一多,规矩就得写成代码:聊聊 OPA / Gatekeeper / Kyverno 在多集群里的真实用法

作者:Echo_Wish
一个被“这个集群怎么又不一样了”逼疯过的运维人


一、多集群最怕的不是多,是“各干各的”

先问你一个问题,你一定有共鸣:

同样是 Kubernetes,
为什么 A 集群能跑,B 集群直接被打回?

我见过太多现场:

  • 这个集群允许 latest 镜像
  • 那个集群强制 resource limit
  • 测试集群能用特权容器
  • 生产集群一上来就炸

于是最后变成一句话总结:

K8s 是统一的,但“人心”是散的

当集群只有一个时,靠口头规范 + Wiki + 运维自觉还能勉强维持;
一旦到了多集群,靠人记规则,必死。

这就是 Policy as Code 出现的背景。


二、什么是 Policy as Code?别被名词吓住

我用一句大白话解释:

把“不能做什么、必须怎么做”,交给系统,而不是靠人盯

以前是:

  • 文档写一堆
  • 群里喊一嗓子
  • 出事了再复盘

现在是:

  • YAML 一提交
  • API Server 直接拦
  • 想违规?门都没有

在 Kubernetes 里,这个“拦”的位置,就是 Admission Controller


三、OPA / Gatekeeper / Kyverno,别一上来就选,先搞清楚定位

1️⃣ OPA(Open Policy Agent)——底层发动机

OPA 是什么?

  • 一个通用策略引擎
  • 使用 Rego 语言
  • 不只 Kubernetes 能用

它很强,但也很“原始”。

package kubernetes.admission

deny[msg] {
  input.request.kind.kind == "Pod"
  not input.request.object.spec.containers[_].resources.limits
  msg := "容器必须设置 resources.limits"
}

👉 我的真实感受:

OPA 很强,但直接用 OPA 写 K8s 策略,心智成本不低


2️⃣ Gatekeeper —— OPA 的 K8s 官方形态

Gatekeeper = OPA + K8s 友好封装

优点很明显:

  • CRD 形式管理策略
  • 和 K8s 生态融合好
  • 适合做强约束(硬门槛)

一个典型例子:
禁止使用 latest 镜像

apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sDisallowLatestTag
metadata:
  name: no-latest-tag
spec:
  match:
    kinds:
      - apiGroups: [""]
        kinds: ["Pod"]

👉 Gatekeeper 给我的感觉是:

像“交警”,只负责拦违规,不负责教你怎么开车


3️⃣ Kyverno —— 为 Kubernetes 而生的策略工具

Kyverno 的一句官方口号我很认同:

Policy as Code, but YAML-first

你不需要 Rego,只写 YAML。

比如:
自动给所有 Pod 加 resource limit

apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
  name: add-resource-limits
spec:
  rules:
    - name: set-default-limits
      match:
        resources:
          kinds:
            - Pod
      mutate:
        patchStrategicMerge:
          spec:
            containers:
              - (name): "*"
                resources:
                  limits:
                    cpu: "500m"
                    memory: "512Mi"

👉 我个人的评价很直接:

Kyverno 更像“运维友好型工具”


四、多集群场景下,Policy as Code 真正的痛点在哪?

很多文章只讲“能不能做”,
多集群真正的难点是:

1️⃣ 策略怎么统一?

你一定会遇到:

  • 测试集群宽松
  • 预发集群中等
  • 生产集群最严

如果你每个集群一套策略:

恭喜你,维护成本直接爆炸

我的建议是:

  • 一份策略代码
  • 通过参数 / label 控制生效范围
match:
  resources:
    namespaces:
      - prod-*

2️⃣ 策略升级怎么不“误伤”?

策略不是写完就完了,
策略本身也是代码,有 bug。

我踩过最狠的一个坑是:

策略上线 → 所有 Deployment 发布失败

解决方案只有一个:

👉 策略也要走灰度

  • 先 audit(只记录不拦)
  • 再 enforce(强制执行)

Gatekeeper / Kyverno 都支持。


3️⃣ 多集群下的策略分发问题

现实世界里:

  • 10 个集群
  • 3 套环境
  • N 套业务

你不可能手工 apply。

我的实践经验是:

Policy as Code + GitOps 是绝配

  • 策略进 Git
  • Argo CD / Flux 统一下发
  • 集群只是执行者

五、我心目中“成熟”的多集群策略体系长这样

给你一个真实可落地的参考模型:

policy-repo/
├── base/
│   ├── no-privileged.yaml
│   ├── require-labels.yaml
├── env/
│   ├── prod/
│   ├── staging/
│   └── test/
├── overlays/
│   ├── finance/
│   └── core-service/

核心思想就一句话:

策略像代码一样分层、复用、可演进


六、说点不那么“官方”的真心话

写到这,我想说点心里话。

Policy as Code 不是为了:

  • 为难开发
  • 显得运维很牛
  • 堆工具

它真正解决的是一个老问题:

当规模上来后,如何用系统对抗人的不确定性

如果你现在还在靠:

  • 群公告
  • 文档约定
  • 事后追责

那不是你不努力,
而是工具已经该升级了


七、写在最后

我越来越坚信一件事:

多集群不是技术问题,是治理问题

而 Policy as Code,
就是运维在规模化时代,
为自己争取“可控性”的最后一道防线。

如果你问我一句建议,我会说:

  • 集群 < 3:Kyverno 起步
  • 多环境多集群:Gatekeeper + GitOps
  • 想做统一治理:OPA 作为底层能力
目录
相关文章
|
3月前
|
数据采集 人工智能 自然语言处理
从“通才”到“专才”:揭秘AI大模型预训练与微调的核心魔法
本文通俗解析AI“预训练+微调”范式:预训练如AI的“基础教育”,让模型从海量数据中自学语言与视觉规律;微调则是定向“专业培训”,用少量业务数据将通用大模型转化为解决具体问题的“专属专家”。全程兼顾原理、步骤与实践,助力零基础用户轻松上手。(239字)
425 7
从“通才”到“专才”:揭秘AI大模型预训练与微调的核心魔法
|
4月前
|
弹性计算 运维 安全
阿里云CNAPP云安全中心全解析:优势、费用、合规及使用一文说透
阿里云CNAPP(智能云原生应用保护平台)整合CWPP、CSPM、CIEM与CTDR四大能力,提供覆盖“事前-事中-事后”的全链路安全防护。支持多云统一管理,内置380+检测模型,具备等保、ISO、PCI DSS等20+合规认证,助力企业实现一体化、智能化安全运营。免费版开放基础功能,高级版按需付费,新用户享15天全功能试用,快速构建云上安全防线。
|
3月前
|
安全 Linux 网络安全
Metasploit Framework 6.4.113 (macOS, Linux, Windows) - 开源渗透测试框架
Metasploit Framework 6.4.113 (macOS, Linux, Windows) - 开源渗透测试框架
261 5
Metasploit Framework 6.4.113 (macOS, Linux, Windows) - 开源渗透测试框架
|
存储 安全 Java
Git历史数据清理:运用BFG删除敏感信息。
通过使用BFG Repo-Cleaner,你可以确保你的Git历史记录自由于敏感数据,而不需要为手动清理每一个提交而烦恼。不仅如此,BFG的效率极高,对于大型的存储库和长期的提交历史,其表现出色,即使在处理数万个提交和GB级别的数据时,也能快速和有效的清理Git历史。
383 34
|
机器学习/深度学习
langchain 入门指南 - In-context Learning
langchain 入门指南 - In-context Learning
500 0
|
弹性计算 固态存储 开发者
阿里云99元服务器,性价比之王!新老用户都值得拥有!
阿里云99元服务器ECS经济型e实例,2核2G配置,3M固定带宽,40G ESSD Entry系统盘,适合个人开发者、学生和小微企业用于中小型网站建设和轻量级应用。CPU基于Intel Xeon Platinum架构,网络带宽支持最高2Gbps突发,云盘提供0.8万IOPS。3M带宽下载速度达384KB/s,上传速度1280KB/s,不限流量。续费仍为99元/年
1032 0
|
运维 安全 关系型数据库
​​国内 5 个最佳的控制面板,可轻松管理服务器
在当今数字化飞速发展的时代,Linux 服务器作为众多企业和开发者的核心基础设施,其管理的高效性和专业性成为了保障业务稳定运行的关键因素。对于专业的服务器运维人员和开发团队而言,理解这些面板的细节差异至关重要。这不仅关乎服务器管理的效率,更涉及到系统的稳定性、安全性以及对开源应用生态的适应性。期望本次全面的盘点能为您的 Linux 服务器管理策略提供坚实的理论依据和实践指导,确保服务器管理工作在技术迭代和业务发展的浪潮中保持高效、稳定且安全的运行状态。
​​国内 5 个最佳的控制面板,可轻松管理服务器
|
缓存 Java 测试技术
RecyclerView 优化—滑动性能提升
RecyclerView 优化—滑动性能提升
826 0
{"level":"warn","ts":"2023-11-07T00:35:53.400+0800","caller":"etcdserver/server.go:2048",&
{"level":"warn","ts":"2023-11-07T00:35:53.400+0800","caller":"etcdserver/server.go:2048",&
|
传感器 存储 编解码
示例六、湿敏传感器
示例六、湿敏传感器
378 0

热门文章

最新文章