Не удается получить доступ к GKE из контейнера Google Cloud Run

#google-kubernetes-engine #google-cloud-run

#google-kubernetes-engine #google-cloud-run

Вопрос:

Итак, у меня есть веб-сайт, развернутый в Google Cloud Run. Из контейнера сервера я хотел бы запустить задание на GKE. Я настраиваю GKE в контейнере следующим образом:

 RUN gcloud container clusters get-credentials deployment --zone europe-west2-c --project myproject
  

Затем у меня есть простой yaml в контейнере, и я развертываю его с помощью kubectl.
При запуске контейнера на компьютере все работает нормально. При запуске контейнера в Cloud Run я получаю следующую ошибку:

 Error from server (NotFound): the server could not find the requested resource
  

После некоторых исследований кажется, что проблема в том, что моя версия kubectl не соответствует моей версии GKE, но я попытался изменить это, и это ничего не изменило в ошибке.

Комментарии:

1. Можете ли вы поделиться тем, как вы получаете доступ к кластеру GKE из своего контейнера?

Ответ №1:

RUN инструкции выполняются для части вашего файла Dockerfile, и они выполняются как часть вашей сборки Docker image (которая не имеет доступа к вашим учетным данным Google). Это не проблема, связанная с облачным запуском.

get-credentials команда фактически не получает никаких учетных данных. Он просто создает файл KUBECONFIG, который содержит IP-адрес кластера GKE и сертификат CA (который не нужен, если вы хотите пропустить проверку подлинности сервера через TLS).

Если вы хотите подключиться к кластерам GKE из других мест gcloud , прочитайте мой пост «Аутентификация в GKE без gcloud (зеркало)», в котором подробно описывается, как заранее создать файл KUBECONFIG и связать его с вашим изображением контейнера.