Токены ServiceAccount для доступа к API
Предварительные требования
Перед началом убедитесь, что:
- Tenant уже существует в Cozystack. Если он еще не создан, см. Создание пользовательского tenant.
- У вас есть доступ к namespace tenant - через OIDC-учетные данные или административный kubeconfig.
kubectlустановлен и настроен.- (Опционально) установлен
jq.
Получение токена ServiceAccount
У каждого tenant в Cozystack есть Secret с токеном ServiceAccount. Secret имеет то же имя, что и tenant, и находится в namespace этого tenant.
- Войдите в Dashboard пользователем, у которого есть доступ к tenant.
- При необходимости переключите контекст на нужный tenant.
- В левой боковой панели перейдите на страницу Administration -> Info и откройте вкладку Secrets.
- Найдите secret с именем
tenant-<name>(например,tenant-team1), где Key равен token. - Нажмите значок глаза, чтобы показать поле Value, затем нажмите на показанные данные. Текст будет автоматически скопирован в буфер обмена.
Получите токен для tenant с именем <name>:
kubectl -n tenant-<name> get tenantsecret tenant-<name> -o json | jq -r '.data.token | @base64d'
Чтобы сохранить токен в переменную для последующих команд:
export TOKEN=$(kubectl -n tenant-<name> get tenantsecret tenant-<name> -o json | jq -r '.data.token | @base64d')
Использование токена для доступа к API
Получив токен, вы можете
сгенерировать kubeconfig для доступа через kubectl или использовать токен напрямую через curl, как показано ниже.
Безопасность токена
Токены ServiceAccount в Cozystack по умолчанию не имеют срока действия. Обращайтесь с ними так же аккуратно, как с паролями.
Проверка подключения
Сначала убедитесь, что текущий контекст kubectl указывает на нужный кластер Cozystack:
kubectl config current-context
kubectl cluster-info
Затем получите адрес API-сервера:
export API_SERVER=$(kubectl config view --minify -o jsonpath='{.clusters[0].cluster.server}')
После этого извлеките CA-сертификат из secret tenant:
kubectl -n tenant-<name> get secret tenant-<name> -o jsonpath='{.data.ca\.crt}' | base64 -d > ca.crt
Теперь проверьте подключение:
curl --cacert ca.crt -H "Authorization: Bearer ${TOKEN}" ${API_SERVER}/api
После проверки файл
ca.crtможно удалить.