Kubernetes the Hard Way on Azure : 5. kubeconfig
こんにちは。
引き続き、Kubernetes the Hard Way on Azure を進めていきます。
5. Generating Kubernetes Configuration Files for Authentication
このラボでは、kubernetes クライアントが Kubernetes API サーバを見つけて認証できるようにするkubeconfig
とも呼ばれるKubernetes構成ファイルを生成します。
またもやなかった概念、現る。
Client Authentication Configs
controller manager
kubelet
kube-proxy scheduler
のクライアント・管理 ユーザのkubeconfig
ファイルを生成します。
Kubernetes Public IP Address
各kubeconfigには、接続するAPIサーバが必要です。高可用性をサポートするために、APIサーバの前面にある外部ロードバランサに割り当てられたIPアドレスが使用されます。
静的IPアドレス[Kubernetes-the-hard-way] を取得します。
KUBERNETES_PUBLIC_ADDRESS=$(az network public-ip show -g kubernetes \ -n kubernetes-pip --query "ipAddress" -otsv)
The kubelet Kubernetes Configuration File
Kubeletのkubeconfigファイルを生成する場合、Kubeletのノード名に一致するクライアント証明書を使用する必要があります。これにより、Kubelet が Kubernetes Node Authorizer
によって適切に承認されます。
各ワーカーノードのkubeconfig ファイルを生成します。
for instance in worker-0 worker-1; do kubectl config set-cluster kubernetes-the-hard-way \ --certificate-authority=ca.pem \ --embed-certs=true \ --server=https://${KUBERNETES_PUBLIC_ADDRESS}:6443 \ --kubeconfig=${instance}.kubeconfig kubectl config set-credentials system:node:${instance} \ --client-certificate=${instance}.pem \ --client-key=${instance}-key.pem \ --embed-certs=true \ --kubeconfig=${instance}.kubeconfig kubectl config set-context default \ --cluster=kubernetes-the-hard-way \ --user=system:node:${instance} \ --kubeconfig=${instance}.kubeconfig kubectl config use-context default --kubeconfig=${instance}.kubeconfig done # 以下が生成されます worker-0.kubeconfig worker-1.kubeconfig
The kube-proxy Kubernetes Configuration File
Kube-proxyサービスのkubeconfigファイルを生成します。
kubectl config set-cluster kubernetes-the-hard-way \ --certificate-authority=ca.pem \ --embed-certs=true \ --server=https://${KUBERNETES_PUBLIC_ADDRESS}:6443 \ --kubeconfig=kube-proxy.kubeconfig kubectl config set-credentials kube-proxy \ --client-certificate=kube-proxy.pem \ --client-key=kube-proxy-key.pem \ --embed-certs=true \ --kubeconfig=kube-proxy.kubeconfig kubectl config set-context default \ --cluster=kubernetes-the-hard-way \ --user=kube-proxy \ --kubeconfig=kube-proxy.kubeconfig kubectl config use-context default --kubeconfig=kube-proxy.kubeconfig # 以下が生成されます kube-proxy.kubeconfig
The kube-controller-manager Kubernetes Configuration File
Kube-controller-manager サービスのkubeconfigファイルを生成します。
{ kubectl config set-cluster kubernetes-the-hard-way \ --certificate-authority=ca.pem \ --embed-certs=true \ --server=https://127.0.0.1:6443 \ --kubeconfig=kube-controller-manager.kubeconfig kubectl config set-credentials system:kube-controller-manager \ --client-certificate=kube-controller-manager.pem \ --client-key=kube-controller-manager-key.pem \ --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
The kube-scheduler Kubernetes Configuration File
Kube-schedulerサービスのkubeconfigファイルを生成します。
{ kubectl config set-cluster kubernetes-the-hard-way \ --certificate-authority=ca.pem \ --embed-certs=true \ --server=https://127.0.0.1:6443 \ --kubeconfig=kube-scheduler.kubeconfig kubectl config set-credentials system:kube-scheduler \ --client-certificate=kube-scheduler.pem \ --client-key=kube-scheduler-key.pem \ --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
The admin Kubernetes Configuration File
Adminユーザのkubeconfigファイルを生成します。
{ kubectl config set-cluster kubernetes-the-hard-way \ --certificate-authority=ca.pem \ --embed-certs=true \ --server=https://127.0.0.1:6443 \ --kubeconfig=admin.kubeconfig kubectl config set-credentials admin \ --client-certificate=admin.pem \ --client-key=admin-key.pem \ --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
Distribute the Kubernetes Configuration Files
適切なkubeletおよびkube-proxy kubeconfigファイルを各ワーカインスタンスにコピーします。
for instance in worker-0 worker-1; do PUBLIC_IP_ADDRESS=$(az network public-ip show -g kubernetes \ -n ${instance}-pip --query "ipAddress" -otsv) scp ${instance}.kubeconfig kube-proxy.kubeconfig kuberoot@${PUBLIC_IP_ADDRESS}:~/ done
適切な kube-controller-manager および kube-scheduler kubeconfig ファイルを各コントローラインスタンスにコピーします。
for instance in controller-0 controller-1 ; do PUBLIC_IP_ADDRESS=$(az network public-ip show -g kubernetes \ -n ${instance}-pip --query "ipAddress" -otsv) scp admin.kubeconfig kube-controller-manager.kubeconfig kube-scheduler.kubeconfig kuberoot@${PUBLIC_IP_ADDRESS}:~/ done
この章で行ったこと
- kubeconfig ファイルの生成
- kubernetesクライアントがKubernetes APIサーバを見つけて認証できるようにする構成ファイル
- kubeconfig ファイルの配置
6.へ続きます。