Изменение разрешений кластера Google Container Engine
Я смог успешно создать кластер Google Container в консоли разработчиков и развернул на нем свое приложение. Все это запускается нормально, однако я обнаружил, что не могу подключиться к Cloud SQL, я понял;
"Error: Handshake inactivity timeout"
После небольшой копки у меня не было никаких проблем с подключением к базе данных из App Engine или моей локальной машины, поэтому я подумал, что это немного странно. Именно тогда я заметил кластерные разрешения...
Когда я выбираю свой кластер, я вижу следующее;
Permissions
User info Disabled
Compute Read Write
Storage Read Only
Task queue Disabled
BigQuery Disabled
Cloud SQL Disabled
Cloud Datastore Disabled
Cloud Logging Write Only
Cloud Platform Disabled
Я действительно надеялся использовать облачное хранилище и облачный SQL в своих узлах контейнера. Я разрешил доступ к каждому из этих API в настройках моего проекта, и мой экземпляр Cloud SQL принимает подключения с любого IP-адреса (ранее я запускал Node на управляемой виртуальной машине в App Engine), поэтому я думаю, что Google явно отключает эти API.
Итак, мой вопрос состоит из двух частей:
- Есть ли способ, которым я могу изменить эти разрешения?
- Есть ли веская причина, по которой эти API отключены? (Я предполагаю, что должно быть)
Любая помощь высоко ценится!
3 ответа
Разрешения определяются учетными записями служб, прикрепленными к виртуальным машинам вашего узла во время создания кластера (учетные записи служб не могут быть изменены после создания экземпляра виртуальной машины, поэтому это единственный раз, когда вы можете выбрать разрешения).
Если вы используете облачную консоль, нажмите ссылку "Еще" на странице создания кластера, и вы увидите список разрешений, которые вы можете добавить к узлам в вашем кластере (по умолчанию все отключено). Выберите все, что вам нужно, и вы должны увидеть соответствующие разрешения после создания кластера.
Если вы используете командную строку для создания кластера, передайте --scopes
командовать gcloud container clusters create
установить соответствующие области учетной записи службы на виртуальных машинах вашего узла.
С помощью Node Pools вы можете сортировать добавления областей в работающий кластер, создав новый пул узлов с нужными областями (а затем удалив старый):
gcloud container node-pools create np1 --cluster $CLUSTER --scopes $SCOPES
gcloud container node-pools delete default-pool --cluster $CLUSTER
Хм, я нашел пару вещей, которые могут быть интересны:
Разрешения принадлежат учетной записи службы (т.н.
Compute Engine default serviceaccount
, похоже12345566788-compute@developer.gserviceaccount.com
)Любая виртуальная машина по умолчанию работает с этой учетной записью службы. И его разрешения не позволяют нам
Cloud SQL
, ведра и так далее. Но...Но вы можете изменить это поведение, используя другую учетную запись службы с нужными разрешениями. Просто создайте его вручную и установите только необходимые завивки. Выключите его, используя
gcloud auth activate-service-account --key-file=/new-service-account-cred.json
Вот и все.
Для cloudsql
есть возможность подключения из контейнеров с указанием прокси, как описано здесь https://cloud.google.com/sql/docs/postgres/connect-container-engine