2e06699f-6930-49cd-99bb-02ae028dc6![[Kubernetes认证 synced block]]
[!note] 🔑 注意分配认证权限
用户创建(示例:使用TLS证书和私钥对):
apiVersion: v1
kind: Secret
metadata:
name: my-user-credentials
namespace: my-namespace
type: Opaque
data:
tls.crt: <Base64 encoded TLS certificate>
tls.key: <Base64 encoded TLS private key>
角色创建(示例):
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: my-role #角色的名称
namespace: my-namespace
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list"]
角色绑定(示例:将角色绑定到Service Account):
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: my-rolebinding
namespace: my-namespace
subjects:
- kind: ServiceAccount #user
name: my-serviceaccount #user-name
namespace: my-namespace
roleRef:
kind: Role
name: my-role #绑定的角色名称
apiGroup: rbac.authorization.k8s.io
在完成用户、角色和角色绑定的创建后,您可以使用以下步骤来生成对应的kubeconfig文件:
**kubeadm**)在初始化集群时自动生成的。这个管理员权限的kubeconfig文件通常位于**/etc/kubernetes/admin.conf**(如果使用**kubeadm**)或其他位置。**kubectl config**命令生成新的kubeconfig文件。您需要将以下信息添加到新的kubeconfig文件中:
将新的kubeconfig文件保存到合适的位置,例如用户的**$HOME/.kube/config**文件中。
apiVersion: v1
kind: Config
clusters:
# 集群配置部分
- name: my-cluster
cluster:
# API服务器地址,需要根据实际集群配置填写
server: https://api-server-address
# Base64编码的CA证书数据,用于验证服务器的身份
certificate-authority-data: <Base64 encoded CA certificate>
users:
# 用户配置部分
- name: my-user
user:
# Base64编码的客户端证书数据,用于用户身份认证
client-certificate-data: <Base64 encoded client certificate>
# Base64编码的客户端私钥数据,用于用户身份认证
client-key-data: <Base64 encoded client private key>
contexts:
# 上下文配置部分
- name: my-context
context:
# 集群名称,引用上面定义的集群名称
cluster: my-cluster
# 用户名称,引用上面定义的用户名称
user: my-user
# 当前使用的上下文,引用上面定义的上下文名称
current-context: my-context
将上述内容保存到一个新的文件中,例如**my-kubeconfig.yaml**,然后使用以下命令将新的kubeconfig文件复制到**$HOME/.kube/config**中:
kubectl config --kubeconfig=$HOME/.kube/config set-context --current --kubeconfig=my-kubeconfig.yaml
根据您的需求,可以根据这些示例文件来创建自己的YAML文件,并使用**kubectl apply -f <file>**命令将其应用到Kubernetes集群。通过这样的步骤,您可以实现在Kubernetes中进行用户认证和权限控制。请注意,生产环境中,需要仔细配置和审查权限,并遵循最佳实践来确保集群的安全性。
[[IMG-20260516155648917.sh]]
cat > mary-csr.json <<EOF
{
"CN": "mary",
"hosts": [],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "BeiJing",
"ST": "BeiJing"
}
]
}
EOF
#证书文件
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes mary-csr.json | cfssljson -bare mary
#修改master主机IP
kubectl config set-cluster kubernetes \
--certificate-authority=ca.pem \
--embed-certs=true \
--server=https://192.168.31.63:6443 \
--kubeconfig=mary-kubeconfig
kubectl config set-credentials mary \
--client-key=mary-key.pem \
--client-certificate=mary.pem \
--embed-certs=true \
--kubeconfig=mary-kubeconfig
kubectl config set-context default \
--cluster=kubernetes \
--user=mary \
--kubeconfig=mary-kubeconfig
#切换上下文
kubectl config use-context default --kubeconfig=mary-kubeconfig