Использование учетных данных учетной записи службы GKE с kubectl - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь вызвать kubectl из моей системы CI. Я хочу использовать учетную запись облачного сервиса Google для аутентификации. У меня есть система управления секретами, которая вводит секреты в мою систему CI.

Однако в моей системе CI не установлена ​​программа gcloud, и я не хочу ее устанавливать. Он содержит только kubectl. Можно ли каким-либо образом использовать файл credentials.json, содержащий учетную запись службы gcloud (не учетную запись службы kubernetes), непосредственно с kubectl?

1 Ответ

0 голосов
/ 07 ноября 2018

Самый простой способ пропустить CLI gcloud, возможно, использовать опцию --token. Вы можете получить токен с RBAC, создав учетную запись службы и связав ее с ClusterRole или Role с ClusterRoleBinding или RoleBinding.

Затем из командной строки:

$ kubectl --token <token-from-your-service-account> get pods

Вам все еще понадобится context в вашем ~/.kube/config:

- context:
    cluster: kubernetes
  name: kubernetes-token

В противном случае вам придется использовать:

$ kubectl --insecure-skip-tls-verify --token <token-from-your-service-account> -s https://<address-of-your-kube-api-server>:6443 get pods

Обратите внимание, что если вы не хотите, чтобы токен отображался в журналах, вы можете сделать что-то вроде этого:

$ kubectl --token $(cat /path/to/a/file/where/the/token/is/stored) get pods

Кроме того, обратите внимание, что это не мешает вам запускать ps -Af на вашем ящике и захватывать токен оттуда в течение всего процесса kubectl (рекомендуется вращать токены)

Edit:

Вы можете использовать --token-auth-file=/path/to/a/file/where/the/token/is/stored с kubectl, чтобы не пропускать его через $(cat /path/to/a/file/where/the/token/is/stored)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...