【问题标题】:Restricted Kubernetes dashboard?受限制的 Kubernetes 仪表板?
【发布时间】:2018-02-05 12:15:58
【问题描述】:

是否可以有一个受限 Kubernetes 仪表板?想法是在集群中运行kubectl proxy 的 pod(受基本 HTTP 身份验证保护)以快速了解状态:

  • pod 的日志输出
  • 运行服务和 pod
  • 当前 CPU/内存使用率

但是,我确实希望用户能够执行“特权”操作,例如创建新 pod、删除 pod 或访问机密。

是否有一些选项可以使用指定用户或受限权限启动仪表板?

【问题讨论】:

    标签: kubernetes dashboard kubernetes-security


    【解决方案1】:

    根据 lwolf 的回答,我使用 the kubernetes-dashboard.yaml 并将其更改为在默认命名空间中的从属服务器上运行。

    重要的变化是kind: ClusterRole, name: view 部分,它将view 角色分配给仪表板用户。

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      labels:
        k8s-app: kubernetes-dashboard
      name: ro-dashboard
    ---
    apiVersion: rbac.authorization.k8s.io/v1beta1
    kind: ClusterRoleBinding
    metadata:
      name: ro-dashboard
      labels:
        k8s-app: kubernetes-dashboard
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: view
    subjects:
    - kind: ServiceAccount
      name: ro-dashboard
      apiGroup: ''
      namespace: default
    ---
    kind: Deployment
    apiVersion: extensions/v1beta1
    metadata:
      labels:
        k8s-app: kubernetes-dashboard
      name: ro-dashboard
    spec:
      replicas: 1
      revisionHistoryLimit: 0
      selector:
        matchLabels:
          k8s-app: kubernetes-dashboard
      template:
        metadata:
          labels:
            k8s-app: kubernetes-dashboard
        spec:
          containers:
          - name: kubernetes-dashboard
            image: gcr.io/google_containers/kubernetes-dashboard-amd64:v1.6.3
            ports:
            - containerPort: 9090
              protocol: TCP
            livenessProbe:
              httpGet:
                path: /
                port: 9090
              initialDelaySeconds: 30
              timeoutSeconds: 30
          serviceAccountName: ro-dashboard
    ---
    kind: Service
    apiVersion: v1
    metadata:
      labels:
        k8s-app: kubernetes-dashboard
      name: ro-dashboard
    spec:
      type: LoadBalancer
      ports:
      - port: 80
        targetPort: 9090
      selector:
        k8s-app: kubernetes-dashboard
    

    【讨论】:

    • 我认为这将不再起作用,因为仪表板还需要创建一些秘密
    【解决方案2】:

    在启用 RBAC 的 Kubernetes 中应该可以。 您不需要使用 kubectl proxy 运行 pod。 我不确定是否可以为同一个 pod 设置 2 组不同的权限,但最坏的情况是您必须运行 2 个仪表板。

    基本上,你需要做的是:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-10
      • 1970-01-01
      • 2019-04-07
      • 2021-02-03
      • 2020-01-23
      • 2020-06-02
      • 1970-01-01
      相关资源
      最近更新 更多