GKE: Google Compute Engine: Требуются права ‘compute.networks.get’, но разрешения уже есть?

Вопрос или проблема

При попытке создать кластер 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.

Применение

  1. Проверка Shared VPC: Убедитесь, что вы правильно настроили доступ через Shared VPC. Для этого необходимо:

    • Переконфигурировать разрешения сетевых пользователей (Network User) для каждого из сервисных аккаунтов, которые должны взаимодействовать с сетями проекта A.
    • Назначить роль roles/compute.networkUser для всех соответствующих сервисных аккаунтов.
  2. Устранение ошибок в API: Иногда, временные сбои в работе API могут создавать подобные ошибки:

    • Попробуйте временно отключить и снова включить Google Compute Engine API, а также Kubernetes Engine API. Это можно сделать как через консоль Google Cloud Console, так и через интерфейс командной строки gcloud.
    • Перепроверьте текущий статус сервисов Google на status.cloud.google.com для выявления известных проблем.
  3. Диагностика и Дополнительные Проверки: Используйте встроенные инструменты диагностики GCP для проверки разрешений. Это стоит делать для отдельных сервисных аккаунтов для проверки выданных ролей и конкретных разрешений, таких как compute.networks.get.

  4. Ошибки Квот и Лимитов: Иногда ошибка 403 может быть связана с лимитами квот. Проверьте все квоты, которые могут быть исчерпаны, и при необходимости запросите увеличение квот через поддержку Google Cloud.

  5. Инциденты и Взаимодействие с Поддержкой: Иногда сбои в работе сервисов Google могут быть источником проблемы. В этом случае, проверяйте объявленные инциденты и взаимодействуйте с поддержкой через официальные каналы GCP.

Заключение

Проблемы с правами доступа в облачных инфраструктурах могут быть сложными и иногда непредсказуемыми. Однако, использование структурированного подхода к диагностике и устранению неполадок, а также активное использование инструментов мониторинга и диагностических сервисов GCP помогут справиться с большинством проблем.

При возникновении повторяющихся ситуаций особенно полезно документировать в Wiki или в системе управления знаниями команды все этапы решения инцидентов, чтобы в будущем более оперативно решать аналогичные проблемы. Это повысит эффективность вашей работы и обеспечит более стабильное функционирование ваших облачных ресурсов.

Оцените материал
Добавить комментарий

Капча загружается...