как проверить, готовы ли серверная служба gcloud/карта URL-адресов

Есть ли способ определить, готова ли серверная служба? Я спрашиваю, потому что я запускаю скрипт, который создает серверную часть, а затем карту URL-адресов, которая использует этот сервер. Проблема в том, что я иногда получаю сообщения об ошибках, говорящих о том, что серверная часть не готова к использованию. Мне нужно иметь возможность сделать паузу, пока серверная часть не будет готова, прежде чем я создам карту URL-адресов. Я мог бы проверить ответ об ошибке для фразы 'is not ready', но это ненадежно для будущих версий gcloud. Это несколько связано с другим публикацией, которую я недавно сделал о том, как надежно проверьте наличие ошибок gcloud.

Я мог бы также сказать то же самое о карте URL. Когда я создаю прокси, который использует карту URL-адресов, иногда я получаю сообщение об ошибке, говорящее, что карта URL-адресов не готова.

Вот пример того, что я испытываю:

gcloud compute url-maps add-path-matcher app-url-map 
    --path-matcher-name=web-path-matcher 
    --default-service=web-backend 
    --new-hosts="example.com" 
    --path-rules="/*=web-backend"

ERROR: (gcloud.compute.url-maps.add-path-matcher) Could not fetch resource:
 - The resource 'projects/my-project/global/backendServices/web-backend' is not ready



gcloud compute target-https-proxies create app-https-proxy 
    --url-map app-url-map 
    --ssl-certificates app-ssl-cert

ERROR: (gcloud.compute.target-https-proxies.create) Could not fetch resource:
 - The resource 'projects/my-project/global/urlMaps/app-url-map' is not ready



gcloud -v
Google Cloud SDK 225.0.0
beta 2018.11.09
bq 2.0.37
core 2018.11.09
gsutil 4.34

person Vincent    schedule 17.11.2018    source источник


Ответы (1)


предположил бы, что это gcloud alpha resources list ...

просмотрите сообщения об ошибках диспетчера ресурсов и прокрутите вниз, там он гласит:

Не готов Сервер API не готов принимать запросы.

что равно HTTP 503, SERVICE_UNAVAILABLE.

добавление опции --verbosity может предоставить дополнительные сведения.

см. документацию.

person Martin Zeitler    schedule 17.11.2018
comment
@ Винсент, вам не хватает одной важной опции в введенной команде. - person Martin Zeitler; 17.11.2018
comment
Я думаю, что могу предоставить либо ведро, либо услугу. - person Vincent; 17.11.2018
comment
конечно. exactly one of --default-service or --default-backend-bucket is required. может попробовать gcloud compute url-maps list посмотреть, ответит ли он вообще. - person Martin Zeitler; 17.11.2018
comment
Я попробовал gcloud alpha resources list, но не похоже, что он показывает состояние серверной службы/карты URL-адресов. Для серверной службы он просто показывает поля @type/description/name. Однако код состояния - это именно то, что я пытаюсь получить. Параметр --log-http включает в себя ответ json с кодом состояния, но как я должен разобрать его из всего остального текста? В сообщении, на которое я ссылался, показан вывод --log-http. - person Vincent; 17.11.2018
comment
Я также несколько раз пытался создать фиктивную серверную службу, а затем сразу перечислить все серверные службы. Каждый раз это появлялось. Я также пытался создать их, а затем сразу же описать конкретный бэкэнд. Каждый раз он появлялся, но без индикатора, что он не был готов. - person Vincent; 17.11.2018
comment
gcloud compute backend-services get-health web-backend может предоставить некоторую информацию. возможно, нужно пройти --global или --zone. также в правилах брандмауэра: cloud.google.com/load-balancing/docs/health. -checks ... эти исходные IP-адреса должны быть разрешены для выполнения проверки работоспособности. not ready как минимум означает, что есть служба с таким именем, противоположная not found. - person Martin Zeitler; 17.11.2018