Получение файла конфигурации kubernetes с помощью API Google-Cloud - PullRequest
0 голосов
/ 17 апреля 2020

Я могу поиграться с API-интерфейсом kubernetes в облаке Google следующим образом:

import os
import time
import json
from pprint import pprint

from google.oauth2 import service_account
import googleapiclient.discovery
from six.moves import input

# https://developers.google.com/identity/protocols/oauth2/scopes
scopes = [
    'https://www.googleapis.com/auth/cloud-platform',
    'https://www.googleapis.com/auth/compute'
]
credentials = service_account.Credentials.from_service_account_file(
    'service_account.json',
    scopes = scopes
)


container = googleapiclient.discovery.build('container', 'v1', credentials = credentials)
loc = container.projects().locations()
client = loc.getServerConfig(name="projects/MY_PROJECT/locations/europe-west1-b")
client.execute()

Однако я бы хотел получить эквивалент

gcloud container clusters get-credentials MY_CLUSTER --zone=europe-west1-b --project MY_PROJECT

, то есть получить полный файл конфигурации + файл авторизации kubernetes (который я затем могу использовать с модулем kubernetes python)

При просмотре API

https://cloud.google.com/kubernetes-engine/docs/reference/rest

Кажется, что отсутствует get-credentials call? Или я не на том API?

1 Ответ

0 голосов
/ 17 апреля 2020

Google Cloud использует краткосрочный токен (около 10 секунд) и использует инструменты gcloud для обновления / получения токена.

Если вы хотите создать долгоживущий токен, вы можете создать учетную запись службы здесь https://console.cloud.google.com/iam-admin/serviceaccounts с ролью «Разработчик движка Kubernetes» и загрузите файл JSON. Сконфигурируйте свой kubeconfig для использования поставщика аутентификации gcp, например

 [{name: user-1, user: {auth-provider: {name: gcp}}}]

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

Если вы хотите использовать его с fe python, вам нужно получить token от учетной записи службы

kubectl describe serviceaccount myserviceaccount
kubectl describe secrets [secret-name]

Это может использоваться в библиотеке

config.load_kube_config()
client.configuration.api_key['authorization'] = 'your token goes here'
client.configuration.api_key_prefix['authorization'] = 'Bearer'

Обратите внимание, что долгоживущие учетные данные должны особенно хорошо охраняться.

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