如何在Kubernetes(k8s)中配置API Server的身份验证?
tianmu77:在Kubernetes中配置API Server身份验证的常用方案如下:
静态令牌文件认证
创建令牌文件:echo 'token1,user1,group1' > /etc/kubernetes/tokens.csv
修改API Server配置:在/etc/kubernetes/manifests/kube-apiserver.yaml中添加参数
- --token-auth-file=/etc/kubernetes/tokens.csv
重启kubelet:systemctl restart kubelet
X.509客户端证书认证
生成CA证书:openssl genrsa -out ca.key 2048
生成客户端证书:
openssl req -new -key user1.key -out user1.csr -subj "/CN=user1/O=group1"
openssl x509 -req -in user1.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out user1.crt -days 365
配置API Server启用证书认证(默认已启用)
Service Account Token认证
创建Service Account:kubectl create serviceaccount my-sa
自动生成Secret并绑定Token
通过以下命令获取Token:
kubectl get secret $(kubectl get sa my-sa -o jsonpath='{.secrets[0].name}') -o jsonpath='{.data.token}' | base64 --decode
验证配置
使用curl测试认证:
curl https://<API_SERVER_IP>:6443/api --header "Authorization: Bearer <TOKEN>" --insecure
配置kubeconfig文件:
kubectl config set-credentials user1 --client-certificate=user1.crt --client-key=user1.key
注意:生产环境推荐使用X.509证书认证或集成OIDC/LDAP,需配合RBAC授权使用。静态令牌文件适用于测试环境,应及时轮换密钥。
91
2025-03-19 02:44:00