受限制的 Kubernetes 仪表板?



是否有可能有一个受限制的 Kubernetes 仪表板?这个想法是让一个 pod 在集群中kubectl proxy运行(受基本 HTTP 身份验证保护(,以获得状态的快速概览:

  • Pod 的日志输出
  • 运行服务和 Pod
  • 当前 CPU/内存使用情况

但是,我不希望用户能够执行"特权"操作,例如创建新 Pod、删除 Pod 或访问机密。

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

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

重要的更改是kind: ClusterRole, name: 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

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

基本上,您需要做的是:

  • 在群集中部署具有只读权限的仪表板 RBAC
  • 公开正在运行的仪表板服务
  • 使用基本 HTTP 身份验证添加入口

相关内容

  • 没有找到相关文章

最新更新