はじめに
Kubernetesクラスタにユーザーを追加する手順は、Linuxで言うところのuseradd hogeのように簡単ではない。
そこで、kindで作成したKubernetesクラスタにユーザーを追加しながら、その手順についてまとめる。
Component | Version |
---|---|
PC | M1 MacBook Pro |
OS | macOS 15.1.1 |
Docker Desktop | 4.36.0 |
kind | v0.25.0 |
Kubernetes | v1.31.2 |
openssl | 3.4.0 |
手順
Kubernetesクラスタにユーザーを追加する手順は以下。
- 秘密鍵を作成する
- Certificate Signing Request (CSR)を作成する
- Certificate Signing Request (CSR)を認証する
- 証明書を取得する
- 追加するユーザーにClusterRoleをbindする
- kubectlの設定
- 動作確認
kindでKubernetesクラスタを作成する
まずは動作確認に必要なKubernetesクラスタをkindで作成する。
設定ファイル
kind-sandbox.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
name: sandbox
nodes:
- role: control-plane
- role: worker
Kubernetesクラスタを作成
kind create cluster --config kind-sandbox.yaml
秘密鍵を作成する
ユーザーが使用する秘密鍵を生成する。
openssl genrsa -out user.key 2048
Certificate Signing Request (CSR)を作成する
秘密鍵を元にCertificate Signing Request (CSR)を作成する。
openssl req -new -key user.key -subj "/CN=user" -out user.csr
Certificate Signing Request (CSR)を認証する
CSRを認証するためにmanifestを作成して、kubectl certificate approveで認証する。
cat <<EOF > user.yaml
apiVersion: certificates.k8s.io/v1
kind: CertificateSigningRequest
metadata:
name: user
spec:
request: $(cat user.csr | base64 -w 0 | tr -d '\n')
signerName: "kubernetes.io/kube-apiserver-client"
usages:
- digital signature
- key encipherment
- client auth
EOF
kubectl apply -f user.yaml
kubectl certificate approve user
証明書を取得する
認証に成功したら、下記のコマンドで証明書を取得する。
kubectl get csr user -o jsonpath='{.status.certificate}' | base64 -d > user.crt
追加するユーザーにClusterRoleをbindする
追加するユーザーuserにcluster-adminというClusterRoleをbindする。
kubectl create clusterrolebinding user-cluster-admin --clusterrole=cluster-admin --user=user --dry-run=client -o yaml > crb.yaml
kubectl apply -f crb.yaml
kubectlの設定
kubectlに追加したユーザーで操作するためのcontextを追加する。
clusterはkindが作成したkind-sandboxを流用する。
kubectl config set-credentials user --client-certificate=user.crt --client-key=user.key --embed-certs=t
rue
kubectl config set-context kind-sandbox-user --cluster=kind-sandbox --user=user
kubectl config use-context kind-sandbox-user
動作確認
kubectlを実行して成功すれば、ユーザー追加が完了。
kubectl get all -A
最後に
kindで作成したKubernetesクラスタにuserというユーザーを追加する手順をまとめた。
この手順を実施することでCSRについての理解が深まった。