У меня есть 2 кластера GKE, как частный, так и общедоступный, и я использую cloudproxy в качестве контейнера-коляски для приложения gke для доступа к экземпляру cloudsql.
настройка общего кластера для разработки / тестирования
Облачный SQL включен как с частным, так и с публичным IP.
Приложение GKE использует cloudproxy с опцией по умолчанию для типов ip (public, private), как показано ниже
Облачный SQL не имеет авторизованной сети.
В этом случае мое приложение может подключаться к CloudSQL и работает без сбоев. Насколько я понимаю, здесь подключение к cloudsql должно происходить с частным, потому что не настроена авторизованная сеть.
настройка частного кластера для производства
Облачный SQL включен как с частным, так и с публичным IP.
Приложение GKE использует cloudproxy с опцией по умолчанию для типов ip (public, private)
параметр облачного прокси-сервера в файле развертывания
- name: cloudsql-proxy
image: gcr.io/cloudsql-docker/gce-proxy:1.11
command: ["/cloud_sql_proxy"]
args: ["-instances=$(REAL_DB_HOST)=tcp:$(REAL_DB_PORT)","-credential_file=/secrets/cloudsql/credentials.json"]
, кейс 1
Облачный SQL не имеет авторизованной сети.
Результат: приложение не может подключиться к Cloud SQL
дело 2
Облачный SQL имеет собственный GKE NAT-шлюз в качестве авторизованной сети.
Результат: приложение не может подключиться к Cloud SQL
Может быть, удаление cloudproxy из приложения будет работать (я пока не тестировал), но это препятствует использованию прокси во время dev env, так как это потребует изменений в файле развертывания во время рабочего развертывания.
Я не могу понять, что является причиной сбоя соединения с cloudproxy в частном кластере gke. Разве мы не должны использовать cloudproxy в частном кластере?
Обновление
Причина, по которой облачный прокси не смог подключиться к облаку SQL, была отключена Cloud SQL Admin API. Я обновил свой ответ в разделе ответов.