web-dev-qa-db-ja.com

kubectl用にKubernetesでユーザーを作成する

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です

ご協力ありがとうございました!

8
jbelenus

このガイドでは、クラスターのユーザーを構成する方法を見つけることができます: https://docs.bitnami.com/kubernetes/how-to/configure-rbac-in-your-kubernetes-cluster/#use- case-1-create-user-with-limited-namespace-access

長い話:

  • ユーザーの証明書を作成する
  • 証明書署名要求を作成する
  • クラスター認証局で証明書に署名します
  • ユーザーの構成を作成する
  • このユーザーまたはそのグループのRBACルールを追加します

ca.crtに関しては、マスターホストで見つける必要があります。

編集:GKEの場合、こちらを確認してください https://cloud.google.com/container-engine/docs/iam-integration

12
Javier Salmeron

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
_
9
Vikash Singh

これは、新しいユーザーを作成する方法ではありません。サービスアカウントの目的を誤解しているようです こちら

ユーザーを作成するには、CAキーペア(証明書+キー)が必ず必要です。これを使用して、各ユーザーのクライアントキーペアを生成します。

このクラスターのセットアップ方法について詳しく教えてください。

0
Eugene Chow