Я использую клиент 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.
Вопросы следующие:
Некоторые фрагменты будут оценены.






Наконец, я сам нашел решение.
Во-первых, вам нужно получить файл конфигурации 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'))