【问题标题】:Is it possible to create a Kubernetes RBAC rule to disallow creation of load balancers?是否可以创建 Kubernetes RBAC 规则来禁止创建负载均衡器?
【发布时间】:2021-11-21 17:46:50
【问题描述】:

使用Kubernetes RBAC,我们可以通过特定动词限制对特定资源的访问。

有没有办法禁止使用type=LoadBalancer 创建服务,同时允许其他类型的服务(例如type=NodePort)?

我们要禁止的示例Service

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: MyApp
  ports:
    - protocol: TCP
      port: 80
      targetPort: 9376
  clusterIP: 10.0.171.239
  type: LoadBalancer
status:
  loadBalancer:
    ingress:
    - ip: 192.0.2.127

以下是我们可以定义的最接近的 RBAC 角色 - 禁止所有服务的更新操作(不允许超出我们想要的范围):

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: default
  name: developer
rules:
- apiGroups: [""] # "" indicates the core API group
  resources: ["services"]
  verbs: ["get", "watch", "list"]

【问题讨论】:

    标签: kubernetes rbac


    【解决方案1】:

    无法限制您的要求。
    正如您所提到的,您发现您可以限制对 API(资源 && 动词)的访问,但您不能以简单的方式限制资源的内容。

    如果你在 `Admission Control hooks' 中编写自己的钩子,你将能够做到这一点

    Admission Control hooks 可以捕获您的请求,然后您检查内容 + 发起请求的用户。

    这不是一个简单的,也不是一个简单的,但你将能够实现你所要求的。


    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-06
      • 2017-08-11
      • 1970-01-01
      • 1970-01-01
      • 2017-03-15
      • 2020-03-01
      相关资源
      最近更新 更多