Skip to content

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

次: データ暗号化設定とキーの生成