鉴权原理
kubelet访问apiserver的kubeconfig权限比较智能,对于secret, 他可以读“绑定到 kubelet 节点的 Pod 相关的”资源。
参考:https://kubernetes.io/zh-cn/docs/reference/access-authn-authz/node/
节点中kubelet的客户端kubeconfig文件 --kubeconfig="/etc/kubernetes/kubelet.conf
kubelet客户端证书 --cert /var/lib/kubelet/pki/kubelet-client-current.pem --key /var/lib/kubelet/pki/kubelet-client-current.pem
访问姿势
- kubectl 使用姿势:
kubectl get secret xxxxxxx -n xxxx --kubeconfig="/etc/kubernetes/kubelet.conf"
对于imagepullsecret,可以直接在pod所在的节点中解析
kubectl get secret xxxxxxx -n xxxx --kubeconfig="/etc/kubernetes/kubelet.conf" -o jsonpath='{.data.\.dockerconfigjson}'|base64 -d
- curl使用姿势
/etc/kubernetes/kubelet.conf 中引用的 是kubelet client cert/key, 也可以curl调用 ,与kubectl等效。
curl https://x.x.x.x:xx/api/v1/namespaces/default/secrets?fieldSelector=metadata.name%3Dsecret-name --cacert /etc/kubernetes/pki/ca.crt --cert /var/lib/kubelet/pki/kubelet-client-current.pem --key /var/lib/kubelet/pki/kubelet-client-current.pem