Как подключиться к движку Google Kubernetes с помощью клиента Python Kubernetes - PullRequest
0 голосов
/ 19 октября 2018

Я использую клиент Kubernetes Python для управления моим локальным кластером Kubernetes:

from kubernetes import client, config


config = client.Configuration()
config.host = "http://local_master_node:8080"
client.Configuration.set_default(config)
print(client.CoreV1Api().v1.list_node())

Все работает нормально, пока мне не нужно подключиться к проекту в Google Cloud Kubernetes Engine, используя файл ключа, предоставленный клиентом, владеющимпроект от Google вроде:

{
    "type": "...",
    "project_id": "...",
    "private_key_id": "...",
    "private_key": "...",
    "client_email": "...",
    "client_id": "...",
    "auth_uri": "https://accounts.google.com/o/oauth2/auth",
    "token_uri": "https://accounts.google.com/o/oauth2/token",
    "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
    "client_x509_cert_url": "https://www.googleapis.com/..."
}

Я пытаюсь загрузить его (возможно, делаю это неправильно):

os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = os.path.abspath('credentials.json')
config.load_incluster_config()

Но этот код вызывает исключение kubernetes.config.config_exception.ConfigException: Service host/port is not set.

Вопросы:

  1. Как правильно предоставить учетные данные Google для клиента Python Kubernetes?
  2. Если я правзатем проследите, где я могу найти хост / порт для использования с Google Cloud?

Некоторые фрагменты будут оценены по достоинству.

1 Ответ

0 голосов
/ 23 октября 2018

Наконец-то я сам нашел решение.

Сначала нужно получить файл конфигурации Kubernetes.Итак, перейдите на панель Google Cloud Platform Kubernetes Engine.Выберите кластер, который вы хотите подключить, и нажмите кнопку connect.Выберите Run in Cloud Shell и после того, как вы войдете в предложенную строку типа оболочки, например:

$ gcloud container clusters get-credentials ...

Затем вы сможете найти в папке ~/.kube файл конфигурации.Сохраните его содержимое в yaml-файл, который вы должны передать функции kubernetes.config.load_kube_config:

os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = os.path.abspath('credentials.json')
config.load_kube_config(os.path.abspath('config.yaml'))
...