AWS EKS集群Kubernetes Dashboard免令牌VPN全读访问配置咨询
AWS EKS Kubernetes Dashboard 无令牌只读访问(仅限VPN)
步骤1:部署Kubernetes Dashboard(若未部署)
先部署官方推荐的Dashboard版本:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
步骤2:配置匿名用户只读RBAC权限
创建集群角色绑定,将K8s内置的view只读角色绑定到匿名用户组,确保无令牌访问时拥有全集群只读权限:
# dashboard-anonymous-view.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: dashboard-anonymous-view roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: view subjects: - apiGroup: rbac.authorization.k8s.io kind: User name: system:anonymous - apiGroup: rbac.authorization.k8s.io kind: Group name: system:unauthenticated
应用配置:
kubectl apply -f dashboard-anonymous-view.yaml
步骤3:修改Dashboard配置,启用无令牌登录
编辑Dashboard的Deployment,添加参数跳过登录验证并禁用设置页面授权:
kubectl edit deployment kubernetes-dashboard -n kubernetes-dashboard
找到containers.args字段,更新为:
args: - --auto-generate-certificates - --namespace=kubernetes-dashboard - --enable-skip-login - --disable-settings-authorizer
保存退出后,Deployment会自动重启生效。
步骤4:限制访问来源为VPN CIDR
方式1:通过EKS节点安全组限制(NodePort场景)
- 查看Dashboard的NodePort端口:
kubectl get svc kubernetes-dashboard -n kubernetes-dashboard
- 找到EKS集群的节点安全组,添加入站规则:
- 协议:TCP
- 端口范围:上述NodePort端口
- 来源:你的VPN网段(例如
10.0.0.0/16)
方式2:通过Ingress限制(更优雅,推荐)
如果已部署Nginx Ingress Controller,创建Ingress资源并配置IP白名单:
# dashboard-ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: kubernetes-dashboard-ingress namespace: kubernetes-dashboard annotations: nginx.ingress.kubernetes.io/whitelist-source-range: "10.0.0.0/16" # 替换为你的VPN CIDR nginx.ingress.kubernetes.io/ssl-redirect: "true" nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" spec: tls: - hosts: - dashboard.your-domain.com # 替换为你的域名 secretName: dashboard-tls-secret # 提前创建SSL证书Secret rules: - host: dashboard.your-domain.com http: paths: - path: / pathType: Prefix backend: service: name: kubernetes-dashboard port: number: 443
应用配置:
kubectl apply -f dashboard-ingress.yaml
步骤5:验证配置
- 连接VPN后,访问Dashboard:
- NodePort方式:
https://<EKS节点IP>:<NodePort>,点击「Skip」直接进入 - Ingress方式:
https://dashboard.your-domain.com,点击「Skip」直接进入
- NodePort方式:
- 尝试查看各类资源(Pods、Deployments等),确认无法执行创建/修改/删除操作
- 断开VPN后尝试访问,验证无法连接
内容的提问来源于stack exchange,提问作者RajuK
相关产品推荐
相关产品推荐

