0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

kindで作成したKubernetesクラスタにユーザーを追加する

Last updated at Posted at 2024-11-21

はじめに

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クラスタにユーザーを追加する手順は以下。

  1. 秘密鍵を作成する
  2. Certificate Signing Request (CSR)を作成する
  3. Certificate Signing Request (CSR)を認証する
  4. 証明書を取得する
  5. 追加するユーザーにClusterRoleをbindする
  6. kubectlの設定
  7. 動作確認

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についての理解が深まった。

参考情報

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?