Вопрос или проблема
При попытке создать кластер GKE через gcloud, веб-консоль или pulumi я получаю ошибку: Google Compute Engine: Required 'compute.networks.get
.
У этой учетной записи есть права Owner
, Editor
и Compute Admin
. Тестирование через средство устранения неполадок также показывает, что compute.networks.get
доступен.
Не уверен, почему это происходит. Казалось, все работало нормально днем ранее.
Заранее спасибо.
Изменение:
Я также могу запустить gcloud compute regions describe us-east1 --project=myproj
, а также команду списка без проблем, так что что-то не сходится.
Изменение 2:
Полная ошибка:
googleapi: Error 403: Retry budget exhausted (5 attempts): Google Compute Engine: Required 'compute.regions.get' permission for 'projects/myproj/regions/us-central1'., forbidden
Похоже, проблема связана с общим VPC. Вам нужно разрешить служебным учетным записям в проекте сервиса использовать под-сеть с ресурсом привязки. Для этого:
Включите разрешения в служебных учетных записях, чтобы они включали ‘roles/compute.networkUser’. Это предоставляет доступ к общей сети VPC.
Я нашел подобную проблему на terraform GitHub, и это обходное решение, предложенное пользователем.
Также вы можете отключить, а затем снова включить как Compute API, так и Kubernetes API. Вы также можете проверить следующую документацию: Включение Google Kubernetes Engine API в ваших проектах
Кроме того, на данный момент Google Kubernetes Engine сообщает о проблемах: Инцидент начался 2021-02-19 05:47 (все времена указаны в US/Pacific). Вы можете отслеживать текущий статус на https://status.cloud.google.com/ и для данной ошибки можно проверить https://status.cloud.google.com/incident/container-engine/21004
Описание: Мы испытываем временную проблему с созданием Google Kubernetes Engine. Наша инженерная команда продолжает изучать проблему. Мы предоставим обновление к пятнице, 2021-02-19 10:30 US/Pacific с текущими деталями.
Большое спасибо!
После отключения Google Kubernetes Engine API и повторного его включения все заработало. Кластер создается.
Раньше я сталкивался с ошибками как в CLI, так и в консоли. Ошибка 403: исчерпана квота повторных попыток (5 попыток): Google Compute Engine: необходимое разрешение ‘compute.regions.get’ для ‘projects. Я добавил все разрешения владельца, редактора. Проверяю каждое решение, но это работает.
Ответ или решение
Ошибка Google Compute Engine: Required 'compute.networks.get'
действительно может вызывать множество вопросов и проблем для специалистов по информационным технологиям, особенно когда у учетной записи уже есть все необходимые разрешения, такие как ‘Owner’, ‘Editor’, и ‘Compute Admin’. Давайте разберем возможные причины и решения этой проблемы, опираясь на предоставленные детали и контекст.
Теория
Ошибка compute.networks.get
указывает на отсутствие доступа к ресурсам сети Compute Engine, что может быть критично при создании GKE-кластера. Даже если у вас есть роли уровня ‘Owner’ или ‘Editor’, специфические контексты, такие как работа с общими сетями VPC, могут требовать дополнительных разрешений или ролей.
Одной из потенциальных причин может быть использование Shared VPC (общая виртуальная частная сеть). Shared VPC позволяет администраторам GCP делиться ресурсами сети с несколькими проектами и контролировать доступ через более тонкие инструменты управления доступом. В этом сценарии возникают новые требования к разрешениям для учетных записей сервиса, работающих с этими сетями.
Пример
Ситуация: у вас есть проект A и проект B, где проект A предоставляет сети для проекта B через Shared VPC. Даже если ваш пользователь имеет права ‘Editor’ или ‘Owner’ в проекте B, это не означает автоматического получения доступа к сетевым ресурсам проекта A.
В подобных случаях, недостаточно просто иметь "глобальные" роли. Например, для доступа к сетям может потребоваться роль roles/compute.networkUser
, которая специфична для взаимодействия с общими сетями VPC. Это наиболее частый случай, когда возникает ошибка compute.networks.get
.
Применение
-
Проверка Shared VPC: Убедитесь, что вы правильно настроили доступ через Shared VPC. Для этого необходимо:
- Переконфигурировать разрешения сетевых пользователей (Network User) для каждого из сервисных аккаунтов, которые должны взаимодействовать с сетями проекта A.
- Назначить роль
roles/compute.networkUser
для всех соответствующих сервисных аккаунтов.
-
Устранение ошибок в API: Иногда, временные сбои в работе API могут создавать подобные ошибки:
- Попробуйте временно отключить и снова включить Google Compute Engine API, а также Kubernetes Engine API. Это можно сделать как через консоль Google Cloud Console, так и через интерфейс командной строки gcloud.
- Перепроверьте текущий статус сервисов Google на status.cloud.google.com для выявления известных проблем.
-
Диагностика и Дополнительные Проверки: Используйте встроенные инструменты диагностики GCP для проверки разрешений. Это стоит делать для отдельных сервисных аккаунтов для проверки выданных ролей и конкретных разрешений, таких как
compute.networks.get
. -
Ошибки Квот и Лимитов: Иногда ошибка
403
может быть связана с лимитами квот. Проверьте все квоты, которые могут быть исчерпаны, и при необходимости запросите увеличение квот через поддержку Google Cloud. -
Инциденты и Взаимодействие с Поддержкой: Иногда сбои в работе сервисов Google могут быть источником проблемы. В этом случае, проверяйте объявленные инциденты и взаимодействуйте с поддержкой через официальные каналы GCP.
Заключение
Проблемы с правами доступа в облачных инфраструктурах могут быть сложными и иногда непредсказуемыми. Однако, использование структурированного подхода к диагностике и устранению неполадок, а также активное использование инструментов мониторинга и диагностических сервисов GCP помогут справиться с большинством проблем.
При возникновении повторяющихся ситуаций особенно полезно документировать в Wiki или в системе управления знаниями команды все этапы решения инцидентов, чтобы в будущем более оперативно решать аналогичные проблемы. Это повысит эффективность вашей работы и обеспечит более стабильное функционирование ваших облачных ресурсов.