RBACでアクセス許可を割り当てるユーザーを作成する必要があります。次のように作成します。
echo -n "lucia" | base64
bHVjaWE=
echo -n "pass" | base64
cGFzcw==
apiVersion: v1
kind: Secret
metadata:
name: lucia-secret
type: Opaque
data:
username: bHVjaWE=
password: cGFzcw==
または作成:
kubectl create secret generic lucia-secret --from-literal=username='lucia',password='pass'
続ける方法がわかりません
USER_NICK=lucia
kubectl config set-credentials $USER_NICK \
--username=lucia \
--password=pass
kubectl get secret lucia-secret -o json | jq -r '.data["ca.crt"]' | base64 -d > ca.crt
endpoint=`kubectl config view -o jsonpath="{.clusters[?(@.name == \"$name\")].cluster.server}"`
kubectl config set-cluster cluster-for-lucia \
--embed-certs=true \
--server=$endpoint \
--certificate-authority=./ca.crt
kubectl config set-context context-lucia \
--cluster=cluster-for-lucia \
--user=$USER_NICK \
--namespace=default
ca.crtはnullです
ご協力ありがとうございました!
このガイドでは、クラスターのユーザーを構成する方法を見つけることができます: https://docs.bitnami.com/kubernetes/how-to/configure-rbac-in-your-kubernetes-cluster/#use- case-1-create-user-with-limited-namespace-access
長い話:
ca.crt
に関しては、マスターホストで見つける必要があります。
編集:GKEの場合、こちらを確認してください https://cloud.google.com/container-engine/docs/iam-integration
Kubernetes docs として、Articlesは証明書を使用してkubectlクライアントのユーザーを作成または認証します。ただし、ServiceAccountを使用して簡単に行うことができます。 ServiceAccountをグループとして使用してRBAC制御認証を提供できますが、これは非常に簡単で説明的です。手順は次のとおりです。私が実行しているすべてのステップは、default
名前空間にあります。すべての名前空間のポッドを取得、一覧表示、監視できるポッド読み取り専用ユーザーを作成します。
「readonlyuser」と言うServiceAccountを作成します。
_kubectl create serviceaccount readonlyuser
_
「readonlyuser」と言うクラスターロールを作成します。
_kubectl create clusterrole readonlyuser --verb=get --verb=list --verb=watch --resource=pods
_
「readonlyuser」と言うクラスターロールバインディングを作成します。
_kubectl create clusterrolebinding readonlyuser --serviceaccount=default:readonlyuser --clusterrole=readonlyuser
_
次に、前に作成したServiceAccountのシークレットからトークンを取得します。このトークンを使用してユーザーを認証します。
TOKEN=$(kubectl describe secrets "$(kubectl describe serviceaccount readonlyuser | grep -i Tokens | awk '{print $2}')" | grep token: | awk '{print $2}')
次に、kube構成ファイルでユーザーの資格情報を設定します。ユーザー名として「vikash」を使用しています。
_kubectl config set-credentials vikash --token=$TOKEN
_
ここで、ポッドリーダーと言うコンテキストを作成します。ここでは、「kubernetes」というクラスター名を使用しています。
_kubectl config set-context podreader --cluster=kubernetes --user=vikash
_
最後にコンテキストを使用します。
_kubectl config use-context podreader
_
以上です。これで_kubectl get pods --all-namespaces
_を実行できます。与えられたとおりに実行することでアクセスを確認することもできます
_~ : $ kubectl auth can-i get pods --all-namespaces
yes
~ : $ kubectl auth can-i create pods
no
~ : $ kubectl auth can-i delete pods
no
_
これは、新しいユーザーを作成する方法ではありません。サービスアカウントの目的を誤解しているようです こちら 。
ユーザーを作成するには、CAキーペア(証明書+キー)が必ず必要です。これを使用して、各ユーザーのクライアントキーペアを生成します。
このクラスターのセットアップ方法について詳しく教えてください。