Создание kubeconfig для пользователя
|
В разделе описывается процедура создания kubeconfig для пользователя с использованием сертификатов, сгенерированных в StarVault |
1. Предварительные условия:
-
У вас есть токен доступа к хранилищу секретов StarVault с привилегиями root
-
У вас есть доступ к кластеру с учетной записью, имеющей роль
cluster-adminв Kubernetes
2. Шаги по созданию kubeconfig
-
Подключитесь к мастер-узлу и выполните вход в StarVault:
starvault login -
Сгенерируйте роль. В
max_ttlуказывается максимальный срок действия в часах. В текущем примере он составляет 1 годstarvault write nova-kubernetes-pki-int/roles/example-user \ allow_any_name=true \ ext_key_usage="ClientAuth" \ max_ttl="8760h" \ key_type="rsa" \ key_bits="2048" \ server_flag="false" \ client_flag="true" -
Сгенерируйте сертификат и сохраните его локально. Значение
ttlне должно превышать срок действия, заданный на предыдущем шагеstarvault write -format=json nova-kubernetes-pki-int/issue/example-user \ common_name="example" \ ttl="8760h" > /tmp/example-cert.json -
Извлеките сертификат и ключ
jq -r .data.certificate /tmp/example-cert.json > /tmp/sa-client.crt jq -r .data.private_key /tmp/example-cert.json > /tmp/sa-client.key -
Сгенерируйте kubeconfig
touch kubeconfig.conf export KUBECONFIG=kubeconfig.conf kubectl config set-cluster my-cluster --server=https://127.0.0.1:6443 --certificate-authority=/etc/kubernetes/pki/ca.crt --embed-certs=true kubectl config set-credentials example --client-certificate=/tmp/sa-client.crt --client-key=/tmp/sa-client.key --embed-certs=true kubectl config set-context example-context --cluster=my-cluster --user=example kubectl config use-context example-context -
Создайте ClusterRoleBinding с требуемыми правами. Ниже приведён пример для роли
cluster-admin. Имя пользователя должно соответствовать Common Name, указанному при генерации сертификатаkind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: test subjects: - kind: User apiGroup: rbac.authorization.k8s.io name: example roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin