Kubernetes The Hard Way On VirtualBox 3日目
Generating Kubernetes Configuration Files for Authentication
前回は証明書の作成と配布を行いました。
今回はkubeconfigのようなconfigファイルを作成し、、クライアントツールが Kubernetes API サーバと認証成功できるようにします。
クライアント認証の設定
ここでは、adminユーザ,controller manager, kube-proxy, schedulerそれぞれのためのkubeconfigファイルを作成します。
Kubernetes Public IP Address
各kubeconfigには接続するKubernetes API Serverの設定が必要です。高可用性のためにロードバランサーのIPアドレスを使います。
今の環境では 192.168.5.30
です。
環境変数に設定します。
LOADBALANCER_ADDRESS=192.168.5.30
kube-proxy Kubernetes Configuration Filesの作成
以下のようにして、kube-proxy サービス用のkubeconfigファイルを作成します。
{ kubectl config set-cluster kubernetes-the-hard-way \ --certificate-authority=ca.crt \ --embed-certs=true \ --server=https://${LOADBALANCER_ADDRESS}: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 Configuration Filesの作成
次はkube-controller-manager サービス用のkubeconfigファイルを作成します。
{ kubectl config set-cluster kubernetes-the-hard-way \ --certificate-authority=ca.crt \ --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.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 Configuration Filesの作成
次はkube-schedulerサービス用のkubeconfigファイルを作成します。
{ kubectl config set-cluster kubernetes-the-hard-way \ --certificate-authority=ca.crt \ --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.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 Configuration Filesの作成
次はadminユーザ用のkubeconfigファイルを作成します。 Serverの値はローカルホストを示しているが、これで良いのか?(軽く不安になるけど、迷わず行けよ。行けば分かるさ)
{ 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 Configuration Filesの配布
kube-proxy 用のkubeconfigをworkerインスタンスに配布します
手元のPCにからやってるので公式手順と異なってます。
for instance in vagrant@192.168.5.21 vagrant@192.168.5.22 ; do scp kube-proxy.kubeconfig ${instance}:~/ done
admin.kubeconfig, kube-controller-manager,kube-schedulerのkubeconfigをmasterインスタンスにコピーします。
for instance in vagrant@192.168.5.11 vagrant@192.168.5.12; do scp admin.kubeconfig kube-controller-manager.kubeconfig kube-scheduler.kubeconfig ${instance}:~/ done
今日はここまで。
お読みいただきありがとうございました!