Получить статус инициализации кластера облачных контейнеров Google с помощью клиента API Python
Я создаю кластер движка контейнера с помощью API-клиента Python для облачной платформы Google. Я успешно завершил создание контейнера. Теперь мне нужно применить некоторые конфигурации yaml, но перед применением любых конфигураций kubernetes yaml необходимо подготовить кластер, иначе API-интерфейс kubernetes недоступен, Мне нужно сделать и то, и другое (создание контейнера и применение конфигураций yaml) в одном запросе. Как я могу получить статус предоставления кластера с помощью API?
Вот что я попробовал:
После создания кластера:из views.py:
print('Fetching Cluster configs ....')
cc = subprocess.call(
'gcloud container clusters get-credentials ' + deployment.deploymentName.lower() + ' --zone ' + deployment.region + ' --project ' + deployment.project,
shell=True)
print(cc)
while cc == 1:
cc = subprocess.call(
'gcloud container clusters get-credentials ' + deployment.deploymentName.lower() + ' --zone ' + deployment.region + ' --project ' + deployment.project,
shell=True)
print(cc)
Помоги мне, пожалуйста!
Заранее спасибо!
2 ответа
Вот как я делаю в своем коде:
"""
If you have a credentials issue, run:
gcloud beta auth application-default login
"""
import time
import googleapiclient.discovery
service = googleapiclient.discovery.build('container', 'v1')
clusters_resource = service.projects().zones().clusters()
operations_resource = service.projects().zones().operations()
def create_cluster(project_id, zone, config, async=False):
req = clusters_resource.create(projectId=project_id, zone=zone, body=config)
operation = req.execute()
if async:
return
while operation['status'] == 'RUNNING':
time.sleep(1)
req = operations_resource.get(projectId=project_id, zone=zone, operationId=operation['name'])
operation = req.execute()
return operation['status'] == 'DONE'
То, что вы ищете, - это статус операции, идентификатор которой возвращается из вызова create cluster. Затем вам нужно получить операцию (через API-интерфейс контейнера, а не API-интерфейс вычисления) и проверить состояние операции, чтобы убедиться, что она ГОТОВА. Как только это будет сделано, вы можете определить, произошла ли ошибка, посмотрев сообщение о состоянии в операции. Если он не указан, вызов API create cluster успешно выполнен. Если он не пустой, то вызов не удался, и в сообщении о состоянии будет указано, почему. После завершения операции по созданию кластера вызов get-credentials будет успешным.