Я развернул тестовый кластер EKS с подходящим configMap, и пользователи, входящие в единый вход, могут получить доступ к кластерам с помощью экспорта кредитов сеанса (AWS_ACCESS_KEY_ID, SECRET_ACCESS_KEY_ID, AWS_SESSION_TOKEN et c) и установив клиент aws -iam-authenticator в своем терминале. Проблема возникает, когда пользователи пытаются использовать профиль aws sso
, сохраненный в ~/.aws/config
, используя aws -iam-authenticator. Ошибка, полученная при выполнении любой команды kubectl
, следующая:
$ kubectl get all
could not get token: NoCredentialProviders: no valid providers in chain. Deprecated.
For verbose messaging see aws.Config.CredentialsChainVerboseErrors
Я проверил это на своей локальной машине (AWS CLI v2) и не добился успеха. Я экспортировал профиль AWS, найденный в файле ~/.aws/config
через export AWS_PROFILE=User1
, и при запуске aws sts get-caller-identity
правильно отображается экспортируемый профиль. Я переключился между несколькими именованными профилями, и каждый из них получает правильные идентификационные данные и разрешения, однако при выполнении любой команды kubectl
я получаю вышеуказанную ошибку. Я также пробовал символическую ссылку config
-> credentials
, но не повезло. Единственный способ это работает, если я экспортирую access_key, secret_key и session_token в переменные окружения.
Полагаю, я могу жить с необходимостью вставлять динамические c кредиты, которые приходят от AWS SSO, но моя потребность в поиске решений не позволит мне сдаться :(. Я следил за в этом github проблема , но не повезло. Конфигурационный файл kube, который я настроил, имеет спецификацию c 'd для AWS документации.
Я подозреваю, что это может быть что-то не так с развертыванием сервера aws-iam-authenticator
, но ничего не отображается в журналах pod. Вот фрагмент из github page * page инструментов, за которым я think
следовал правильно, но я пропустил шаг 3 по причинам что я забыл:
API-интерфейс Kubernetes интегрируется с AWS IAM Authenticator для Kubernetes с помощью токен-аутентификации webhook. При запуске сервера aws -iam-authenticator он генерирует файл конфигурации webhook и сохраните его в файловой системе хоста. Вам нужно будет добавить один дополнительный флаг в конфигурацию сервера API:
Файл конфигурации Kube
apiVersion: v1
clusters:
- cluster:
server: <endpoint-url>
certificate-authority-data: <base64-encoded-ca-cert>
name: kubernetes
contexts:
- context:
cluster: kubernetes
user: aws
name: aws
current-context: aws
kind: Config
preferences: {}
users:
- name: aws
user:
exec:
apiVersion: client.authentication.k8s.io/v1alpha1
command: aws-iam-authenticator
args:
- "token"
- "-i"
- "eks-cluster-name"
- "-r"
- "EKS-ADMIN-ROLE:ARN:::::::"
env:
- name: AWS_PROFILE
value: "USER"