Создание учетной записи для не интерактивного доступа (CI\CD, автоматизация)
-
Если у вас уже есть Namespace, к которому будет выдаваться доступ, то переходите к следующему шагу. Если нет, то откройте страницу Home → Namespaces и нажмите «Create Namespace».
В открывшемся окне введите имя и по желанию добавьте метки\сетевую политику, после чего нажмите «Create»: -
Необходимо создать сервисную учетную запись. Для этого, открываете страницу RBAC Management → ServiceAccounts и нажмите «Create ServiceAccount».
В открывшемся окне введите имя и namespace из п.1 и нажмите «Create»: -
Далее необходимо создать роль, которой будет обладать сервисная учетная запись. Если у вас уже есть роль, то переходите к следующему шагу.
Чтобы создать роль откройте страницу RBAC Management → Roles и нажмите «Create Role». В открывшемся окне введите имя, namespace из п.1 и правила. Нажмите «Create»: -
Далее необходимо связать роль с сервисной учетной записью. Для этого откройте страницу RBAC Management → RoleBindings и нажмите «Create Binding».
В открывшемся окне выберите Binding type (в данной демонстрации это Namespace role binding, но вы так же можете привязать роль для всего кластера), введите имя для RoleBinding, выберите namespace (из п.1) из выпадающего списка. Затем, выберите роль, созданную на предыдущем шаге, а в качестве Subject выберите ServiceAccount, namespace из п.1 и имя сервисной учетной записи из п.2. Нажмите «Create»: -
Далее нам нужно создать токен для аутентификации. Для этого нажмите “+” в правом верхнем углу и в открывшемся окне вставьте следующий манифест, убедившись, что namespace и имя аккаунта в блоке
annotations
совпадают с вашими:apiVersion: v1 kind: Secret type: kubernetes.io/service-account-token metadata: name: ci-cd-sa-token namespace: sa-access-test annotations: kubernetes.io/service-account.name: ci-cd-sa
-
Теперь вы можете получить аутентификационную информацию для данного сервисного аккаунта. Для этого откройте страницу Workloads → Secrets и выберите секрет из п.5. Из раздела data скопируйте ca.crt и token и закодируйте значение сертификата в base64 (вместо кодирования в base64 можно перейти на вкладку YAML и скопировать уже закодированное значение. При этом, у значения ca.crt необходимо удалить последние 4 символа
«Cg==»
) -
Для доступа к API с помощью HTTP-запроса сохраните ca.crt в файл, токен из п.6 в переменную TOKEN и неймспейс из п.1 в переменную NAMESPACE.
Теперь выполните следующую команду подставив вместо<адрес_мастер_узла>
IP или DNS вашего мастер-узла:
curl --cacert cert.crt -H "Authorization: Bearer $TOKEN" "https://<адрес_мастер_узла>:6443/api/v1/namespaes/$NAMESPACE/pods/"
-
Для доступа к кластеру с помощью утилиты
kubectl
вам необходимо создать конфиг файл. Для этого в шаблоне замените значения<ca.crt_из_секрета>
и<токен_из_секрета>
на данные из п.6,<имя_сервисного_аккаунта>
на имя из п.2,<адрес_мастер_узла>
на IP или FQDN вашего мастер-узлаapiVersion: v1 clusters: - cluster: certificate-authority-data: <ca.crt_из_секрета> server: https://<адрес_мастер_узла>:6443 name: nova-kubernetes-cluster contexts: - context: cluster: nova-kubernetes-cluster user: <имя_сервисного_аккаунта> name: default current-context: default kind: Config preferences: {} users: - name: <имя_сервисного_аккаунта> user: token: <токен_из_секрета>