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

参考資料

【Kubernetes】ユーザー管理について理解する | amateur engineer’s blog