kubernetes-the-hard-way/docs/ja/05-kubernetes-configuration...

5.9 KiB
Raw Blame History

認証のためのKubernetes構成ファイルの生成

このラボでは、KubernetesクライアントがKubernetes APIサーバーを見つけて認証できるようにするKubernetes構成ファイル、別名kubeconfigを生成します。

クライアント認証構成

このセクションでは、kubeletおよびadminユーザーのためのkubeconfigファイルを生成します。

kubeletのKubernetes構成ファイル

Kubeletのためのkubeconfigファイルを生成する際には、Kubeletのード名に一致するクライアント証明書を使用する必要があります。これにより、KubeletがKubernetesのノード認可者によって適切に認可されることが保証されます。

以下のコマンドは、TLS証明書の生成ラボで使用したディレクトリ内で実行する必要があります。

node-0ワーカーードのためのkubeconfigファイルを生成します

for host in node-0 node-1; do
  kubectl config set-cluster kubernetes-the-hard-way \
    --certificate-authority=ca.crt \
    --embed-certs=true \
    --server=https://server.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

結果:

node-0.kubeconfig
node-1.kubeconfig

kube-proxyのKubernetes構成ファイル

kube-proxyサービスのためのkubeconfigファイルを生成します

{
  kubectl config set-cluster kubernetes-the-hard-way \
    --certificate-authority=ca.crt \
    --embed-certs=true \
    --server=https://server.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
}

結果:

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://server.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
}

結果:

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://server.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
}

結果:

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
}

結果:

admin.kubeconfig

Kubernetes構成ファイルの配布

node-0インスタンスにkubeletkube-proxyのkubeconfigファイルをコピーします

for host in node-0 node-1; do
  ssh root@$host "mkdir /var/lib/{kube-proxy,kubelet}"

  scp kube-proxy.kubeconfig \
    root@$host:/var/lib/kube-proxy/kubeconfig \

  scp ${host}.kubeconfig \
    root@$host:/var/lib/kubelet/kubeconfig
done

コントローラーインスタンスにkube-controller-managerkube-schedulerのkubeconfigファイルをコピーします

scp admin.kubeconfig \
  kube-controller-manager.kubeconfig \
  kube-scheduler.kubeconfig \
  root@server:~/

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