Как настроить правила брандмауэра и параметры DNS на GCP с помощью VPC Service Controls при использовании Cloud Composer и Cloud Functions в одном проекте?

У нас возникли проблемы с настройкой двух компонентов GCP (GCP Cloud Composer, GCP Functions) под VPC Service Controls для одного проекта. Мы можем настроить их отдельно с помощью VPC Service Controls, но как только мы добавляем второй компонент, у нас возникают проблемы.

Как только мы настроили правила брандмауэра и параметры DNS для облачной функции, Composer начинает давать сбои. Инструмент мониторинга Composer (для веб-сервера, SQL-сервера и т.д.) показывает, что композитор нездоров.

Что мы делаем неправильно?

Документация, которую мы использовали:
https://cloud.google.com/functions/docs/securing/using-vpc-service-controls
https://cloud.google.com/composer/docs/configuring-vpc-sc

Для Composer мы используем следующие настройки: 3 узла стандартный тип машины версия образа: composer-1.16.3-airflow-1.10.15 python: v3 private IP Composer

API, которые мы включили для VPC Service Controls: Ограниченные службы: Google Cloud Dataproc API Cloud Functions API Google Cloud Pub/Sub API Cloud SQL API Google Cloud Storage API Google Compute Engine API Google Kubernetes Engine API Google Container Registry API API облачного мониторинга Cloud Composer API API реестра артефактов

Настройки FireWall (на основе документации):

Имя Тип Цели Фильтры Протоколы / порты Действие Приоритет
composer-egress-gke-cluster-all-port Egress Применить ко всем IP диапазоны: 10.10.0.0/16 tcp, udp Allow 1000
composer-egress-healthcheck Egress Apply to all IP ranges: 130.211.0.0/22, 35.191.0.0/16 tcp:80,443 Allow 1000
composer-egress-port53 Egress Apply to all IP ranges: 0.0.0.0/0 tcp:53, udp:53 Allow 1000
composer-egress-webserver Egress Apply to all IP ranges: 172.31.251.0/24 tcp:3306,3307 Allow 1000
restricted-google-apis Egress Apply to all IP ranges: 199.36.153.4/30 tcp:443 Allow 1000
composer-deny-all Egress Apply to all IP ranges: 0.0.0.0/0 all Deny 2000
composer-ingress-helthcheck Ingress Apply to all IP ranges: 130.211.0.0/22, 35.191.0.0/16 tcp:80,443 Allow 1000
ingress-iap Ingress Apply to all IP ranges: 35.235.240.0/20 tcp Allow 1000
gke-europe-west1-composer-dns-xxx-xxx-all Ingress gke-europe-west1-composer-dns-xxx-xxx-node IP ranges: 10.124.0.0/14 tcp;udp;esp;ah;sctp;icmp Allow 1000
gke-europe-west1-composer-dns-xxx-xxx-master Ingress gke-europe-west1-composer-dns-xxx-xxx-node IP ranges: 172.16.8.0/28 tcp:10250,443 Allow 1000
gke-europe-west1-composer-dns-xxx-xxx-vms Ingress gke-europe-west1-composer-dns-xxx-xxx-node IP ranges: 10.10.0.0/16 tcp:1-65535;udp:1-65535;icmp Allow 1000

Настройки DNS (на основе документации):

Имя DNS: googleapis.com. Тип: Private

DNS name Type TTl(Seconds) Data
*.googleapis.com. CNAME 300 restricted.googleapis.com.
googleapis.com. SOA 21600 ns-gcp-private.googledomains.com. cloud-dns-hostmaster.google.com. 1 21600 3600 259200 300
googleapis.com. NS 21600 ns-gcp-private.googledomains.com.

DNS имя: cloudfunctions.net. Тип: Private

DNS name Type TTl(Seconds) Data
*.cloudfunctions.net. A 300 199.36.153.4,199.36.153.5,199.36.153.6,199.36.153.7
cloudfunctions.net NS 21600 ns-gcp-private.googledomains.com. cloud-dns-hostmaster.google.com. 1 21600 3600 259200 300
cloudfunctions.net. SOA 21600 ns-gcp-private.googledomains.com.

DNS имя: pkg.dev. Тип: Private

DNS name Type TTl(Seconds) Data
*.pkg.dev. CNAME 300 pkg.dev.
pkg.dev. SOA 21600 ns-gcp-private.googledomains.com. cloud-dns-hostmaster.google.com. 1 21600 3600 259200 300
pkg.dev. NS 21600 ns-gcp-private.googledomains.com.
pkg.dev. A 300 199.36.153.4,199.36.153.5,199.36.153.6,199.36.153.7

DNS name: gcr.io. Тип: Private

DNS name Type TTl(Seconds) Data
*.gcr.io. CNAME 300 gcr.io.
gcr.io. SOA 21600 ns-gcp-private.googledomains.com. cloud-dns-hostmaster.google.com. 1 21600 3600 259200 300
gcr.io. NS 21600 ns-gcp-private.googledomains.com.
gcr.io. A 300 199.36.153.4,199.36.153.5,199.36.153.6,199.36.153.7

Спасибо за любую идею или помощь, которую вы можете дать.

0
задан 3 May 2021 в 13:59
2 ответа

Тем временем мы разобрались с проблемой:

  • Наиболее проблематично то, что DNS-запись типа A отсутствовала на googleapis.com. которая содержит IP-адреса.
  • Вторая проблема заключалась в том, что правило брандмауэра, взятое из документации по настройкам VPC SC Cloud Function, блокировало связь между:
    • узлами Composer в подсети
    • между узлами Worker и узлом Master (кластера Kubernetes, созданного для composer), который создается автоматически в другом проекте и подключается по пирингу к подсети рабочих Composer

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

Проблемы, с которыми мы все еще сталкиваемся:

  • трудно отлаживать такого рода проблемы, потому что пользовательский интерфейс мониторинга composer, кажется, показывает информацию непоследовательно
  • трудно использовать журналы StackDriver для отладки после включения его в подсети, потому что это просто слишком много информации, и они регистрируются на уровне "info", а не на уровне "warning" или "error"
0
ответ дан 7 May 2021 в 20:24

О проблемах с отладкой в ​​ответе, предоставленном вами.

Проблема с логами Stackdriver:

Эта проблема уже есть в открытых проблемах общедоступного трекера gcp. Вы можете отслеживать статус по ссылке ниже[1].

  1. https://issuetracker.google.com/135496113

Проблема с панелью мониторинга Composer:

Вы указали общую проблему. Посмотрите, есть ли открытые вопросы по вашей проблеме по ссылке ниже [2]. Если нет, создайте новую проблему.

Вы можете найти или создать проблемы, связанные с продуктом gcp, по ссылке ниже.

  1. https://cloud.google.com/support/docs/issue-trackers

Ссылка на примечания к выпуску службы GCP Cloud composer:

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

  1. https://cloud.google.com/composer/docs/release-notes
0
ответ дан 4 June 2021 в 08:42

Теги

Похожие вопросы