4. 認証用のKubernetes構成ファイルの生成
kubeconfigファイルを作成し、Kubernetes APIサーバへの疎通および認証を通します。
クライアント認証の作成
kubeletおよびadminユーザ向けのkubeconfigファイルを作成します。
kubelet向けKubernetes設定ファイル
kubeletサービス用のkubeconfigファイルを生成します。
for HOST in kube-w01 kube-w02; do
kubectl config set-cluster kubernetes-the-hard-way \
--certificate-authority=ca.crt \
--embed-certs=true \
--server=https://kube-c01.kubernetes.local:6443 \
--kubeconfig=${HOST}.kubeconfig
kubectl config set-credentials system:node:${HOST} \
--client-certificate=${HOST}.crt \
--client-key=${HOST}.key \
--embed-certs=true \
--kubeconfig=${HOST}.kubeconfig
kubectl config set-context default \
--cluster=kubernetes-the-hard-way \
--user=system:node:${HOST} \
--kubeconfig=${HOST}.kubeconfig
kubectl config use-context default \
--kubeconfig=${HOST}.kubeconfig
done
ファイルが生成されていることを確認します。
ls kube-w*.kubeconfig
$ ls kube-w*.kubeconfig
kube-w01.kubeconfig kube-w02.kubeconfig
kube-proxy向けKubernetes設定ファイル
kube-proxyサービス用のkubeconfigファイルを生成します。
kubectl config set-cluster kubernetes-the-hard-way \
--certificate-authority=ca.crt \
--embed-certs=true \
--server=https://kube-c01.kubernetes.local:6443 \
--kubeconfig=kube-proxy.kubeconfig
kubectl config set-credentials system:kube-proxy \
--client-certificate=kube-proxy.crt \
--client-key=kube-proxy.key \
--embed-certs=true \
--kubeconfig=kube-proxy.kubeconfig
kubectl config set-context default \
--cluster=kubernetes-the-hard-way \
--user=system:kube-proxy \
--kubeconfig=kube-proxy.kubeconfig
kubectl config use-context default \
--kubeconfig=kube-proxy.kubeconfig
ファイルが生成されていることを確認します。
ls kube-proxy.kubeconfig
$ ls kube-proxy.kubeconfig
kube-proxy.kubeconfig
kube-controller-manager向けKubernetes設定ファイル
kube-controller-managerサービス用のkubeconfigファイルを生成します。
kubectl config set-cluster kubernetes-the-hard-way \
--certificate-authority=ca.crt \
--embed-certs=true \
--server=https://kube-c01.kubernetes.local:6443 \
--kubeconfig=kube-controller-manager.kubeconfig
kubectl config set-credentials system:kube-controller-manager \
--client-certificate=kube-controller-manager.crt \
--client-key=kube-controller-manager.key \
--embed-certs=true \
--kubeconfig=kube-controller-manager.kubeconfig
kubectl config set-context default \
--cluster=kubernetes-the-hard-way \
--user=system:kube-controller-manager \
--kubeconfig=kube-controller-manager.kubeconfig
kubectl config use-context default \
--kubeconfig=kube-controller-manager.kubeconfig
ファイルが生成されていることを確認します。
ls kube-controller-manager.kubeconfig
$ ls kube-controller-manager.kubeconfig
kube-controller-manager.kubeconfig
kube-scheduler向けKubernetes設定ファイル
kube-schedulerサービス用のkubeconfigファイルを生成します。
kubectl config set-cluster kubernetes-the-hard-way \
--certificate-authority=ca.crt \
--embed-certs=true \
--server=https://kube-c01.kubernetes.local:6443 \
--kubeconfig=kube-scheduler.kubeconfig
kubectl config set-credentials system:kube-scheduler \
--client-certificate=kube-scheduler.crt \
--client-key=kube-scheduler.key \
--embed-certs=true \
--kubeconfig=kube-scheduler.kubeconfig
kubectl config set-context default \
--cluster=kubernetes-the-hard-way \
--user=system:kube-scheduler \
--kubeconfig=kube-scheduler.kubeconfig
kubectl config use-context default \
--kubeconfig=kube-scheduler.kubeconfig
ファイルが生成されていることを確認します。
ls kube-scheduler.kubeconfig
$ ls kube-scheduler.kubeconfig
kube-scheduler.kubeconfig
adminユーザ向けKubernetes設定ファイル
adminユーザ用のkubeconfigファイルを生成します。
kubectl config set-cluster kubernetes-the-hard-way \
--certificate-authority=ca.crt \
--embed-certs=true \
--server=https://127.0.0.1:6443 \
--kubeconfig=admin.kubeconfig
kubectl config set-credentials admin \
--client-certificate=admin.crt \
--client-key=admin.key \
--embed-certs=true \
--kubeconfig=admin.kubeconfig
kubectl config set-context default \
--cluster=kubernetes-the-hard-way \
--user=admin \
--kubeconfig=admin.kubeconfig
kubectl config use-context default \
--kubeconfig=admin.kubeconfig
ファイルが生成されていることを確認します。
ls admin.kubeconfig
$ ls admin.kubeconfig
admin.kubeconfig
Kubernetes構成ファイルの配布
kube-controller-managerおよびkube-scheduler向けのkubeconfigファイルをkube-c01に配布します。
scp admin.kubeconfig \
kube-controller-manager.kubeconfig \
kube-scheduler.kubeconfig \
nob@kube-c01:~/
kubeletおよびkube-proxy向けのkubeconfigファイルをkube-w01、kube-w02に配布します。
for HOST in kube-w01 kube-w02; do
ssh nob@${HOST} "sudo mkdir -p /var/lib/{kube-proxy,kubelet}"
scp kube-proxy.kubeconfig nob@${HOST}:~/
ssh nob@${HOST} "sudo mv ~/kube-proxy.kubeconfig /var/lib/kube-proxy/kubeconfig"
scp ${HOST}.kubeconfig nob@${HOST}:~/
ssh nob@${HOST} "sudo mv ~/${HOST}.kubeconfig /var/lib/kubelet/kubeconfig"
done