Kubernetesへアカウントの追加(kubectl用)
kubectlするアカウントの作成にはAccountを作る必要がある.
以降では,doktor本番環境に読み取り専用(get)のmasuda ユーザを作る手順を説明する.
クラスタへの設定
作業ディレクトリをつくる.
mkdir ~/masuda-itoh
cd $_
秘密鍵をつくる.
openssl genrsa -out masuda.key 2048
証明書をつくる.
openssl req -new -key masuda.key -out masuda.csr -subj "/CN=masuda"
CSRをbase64に変換する.
cat masuda.csr | base64 | tr -d "\n"
以下の構成を csr.yml に保存して, kubectl apply -f csr.yml
を実行する.
apiVersion: certificates.k8s.io/v1
kind: CertificateSigningRequest
metadata:
name: masuda
spec:
request: # base64エンコードしたCSRを貼る
signerName: kubernetes.io/kube-apiserver-client
usages:
- client auth
kubectl で取得してCSRが作れているか確認する.
kubectl get csr
CSRの承認をする.
kubectl certificate approve masuda
証明書を取得する.
kubectl get csr masuda -o jsonpath='{.status.certificate}'| base64 -d > masuda.crt
Cluster Roleをつくる.
kubectl create clusterrole masuda-reader --verb=get,list,watch --resource=pods,nodes,configmap,pods/log,namespace,service
Cluster Role Bindingをつくる.
kubectl create clusterrolebinding masuda-reader-binding --clusterrole=masuda-reader --user=masuda
クライアント用の設定コマンド
kubectl config set-credentials masuda --client-key=masuda.key --client-certificate=masuda.crt --embed-certs=true
kubectl config set-cluster doktor --cluster=doktor --server=https://192.168.201.79:6443 --insecure-skip-tls-verify
kubectl config set-context doktor --cluster=doktor --user=masuda
設定ファイルのダンプを証明書つきで書き出すには以下のコマンドが有用である.
kubectl config view --raw