RBAC for Kubelet Authorization
ここでは、Kube API Server が各ワーカノード上の kubelet にアクセスするための権限を与える。
作業はマスターノード上で。
system:kube-apiserver-to-kubelet という名前の Cluster Role を作成する
cat <<EOF | kubectl apply --kubeconfig admin.kubeconfig -f -
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
annotations:
rbac.authorization.kubernetes.io/autoupdate: "true"
labels:
kubernetes.io/bootstrapping: rbac-defaults
name: system:kube-apiserver-to-kubelet
rules:
- apiGroups:
- ""
resources:
- nodes/proxy
- nodes/stats
- nodes/log
- nodes/spec
- nodes/metrics
verbs:
- "*"
EOF
これにより、Kubernetes API Server は kubelet を kubernetes ユーザとして認識する。
Kubernetes API Server の設定 で設定した --kubelet-client-certificate がクライアント証明書として利用される。
system:kube-apiserver-to-kubelet role を kubernetes ユーザと紐付ける。
cat <<EOF | kubectl apply --kubeconfig admin.kubeconfig -f -
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: system:kube-apiserver
namespace: ""
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: system:kube-apiserver-to-kubelet
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: kube-apiserver
EOF
確認
この時点で kubelet が Kube API Server と通信出来るようになり、node status が Ready になる。
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
worker-1 Ready <none> 142m v1.15.3
worker-2 Ready <none> 113m v1.15.3
