Аутентифицировать Kubectl, используя учетную запись службы Google IAM - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть файл ключа учетной записи службы Google Cloud IAM (в формате json), который содержит данные ниже.

{
"type": "service_account",
"project_id": "****",
"private_key_id":"****",
"private_key": "-----BEGIN PRIVATE KEY----blah blah -----END PRIVATE KEY-----\n",
"client_email": "*****",
"client_id": "****",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth/v1/certs",
"client_x509_cert_url": "****"
}

Я могу использовать эту учетную запись службы для доступа к серверу API Kubernetes, передав этот файл ключа вКлиентские библиотеки API kube.

Но я не нахожу способа передать эту учетную запись службы в двоичный файл kubectl для проверки подлинности kubectl в проекте, для которого создана эта учетная запись службы.

Есть ли способ, которым яможно использовать, чтобы Kubectl использовал этот файл учетной записи службы для аутентификации?

1 Ответ

0 голосов
/ 22 февраля 2019

Этот ответ дает некоторые рекомендации: Доступ к кластеру Kubernetes GKE вне кластера GKE с помощью client-go? , но он не завершен.

Вам необходимо сделать две вещи:

  1. установите GOOGLE_APPLICATION_CREDENTIALS переменную среды в качестве пути к вашему файлу ключа JSON для учетной записи службы IAM и используйте kubectl, пока эта переменная установлена, вы должны пройти аутентификацию с токеном.

  2. (это может быть необязательным, но не обязательно) Создайте пользовательский KUBECONFIG, который содержит только ваш IP-адрес кластера и сертификат CA, сохраните этот файл и используйте его для подключения к кластеру.

Шаг 2 выглядит следующим образом:

cat > kubeconfig.yaml <<EOF
apiVersion: v1
kind: Config
current-context: cluster-1
contexts: [{name: cluster-1, context: {cluster: cluster-1, user: user-1}}]
users: [{name: user-1, user: {auth-provider: {name: gcp}}}]
clusters:
- name: cluster-1
  cluster:
    server: "https://$(eval "$GET_CMD --format='value(endpoint)'")"
    certificate-authority-data: "$(eval "$GET_CMD --format='value(masterAuth.clusterCaCertificate)'")"
EOF

Итак, с этим вы должны сделать

export GOOGLE_APPLICATION_CREDENTIALS=<path-to-key.json>
export KUBECONFIG=kubeconfig.yaml
kubectl get nodes
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...