K8s 用户案例1:为开发人员配置访问权限
1. 创建用户证书
首先,为开发人员创建一个用户证书,以便他们能够通过 kubectl 访问 Kubernetes 集群。
# 生成用户(客户端)私钥
openssl genrsa -out developer.key 2048
# 生成证书签名请求(CSR)
openssl req -new -key developer.key -out developer.csr -subj "/CN=developer/O=dev-team"
# 通过 Kubernetes CA 签署证书
openssl x509 -req -in developer.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out developer.crt -days 365验证证书
验证客户端证书是否由 CA 签署:
openssl verify -CAfile ca.crt client.crt使用 kubeconfig 文件连接 Kubernetes 集群
将上述生成的证书和密钥路径填入 kubeconfig 文件后,可以使用 kubectl 命令连接到 Kubernetes 集群:
kubectl get nodes --kubeconfig=/path/to/kubeconfig2. 配置 kubeconfig 文件
为开发人员配置 kubeconfig 文件,使他们可以使用 kubectl 连接到集群。
apiVersion: v1
kind: Config
clusters:
- cluster:
certificate-authority: /path/to/ca.crt
server: https://kubernetes-api-server:6443
name: kubernetes
contexts:
- context:
cluster: kubernetes
user: developer
name: developer-context
current-context: developer-context
users:
- name: developer
user:
client-certificate: /path/to/developer.crt
client-key: /path/to/developer.key3. 创建 Role 和 RoleBinding
为开发人员创建一个 Role,赋予在特定命名空间中管理 Pods 的权限,并通过 RoleBinding 将这个 Role 绑定到开发人员的身份上。
role.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: dev-namespace
name: pod-manager
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "create", "update", "delete"]rolebinding.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: developer-rolebinding
namespace: dev-namespace
subjects:
- kind: User
name: developer
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role
name: pod-manager
apiGroup: rbac.authorization.k8s.io通过 kubectl 应用这些配置:
kubectl apply -f role.yaml
kubectl apply -f rolebinding.yaml4. 验证
使用 kubeconfig 文件连接 Kubernetes 集群
kubectl get pods --kubeconfig=/path/to/kubeconfigLast updated