Как настроить правила брандмауэра и настройки 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
  • питон: v3
  • частный компоновщик IP

API-интерфейсы, которые мы включили для управления службами VPC:

  • API Google Cloud Dataproc
  • API облачных функций
  • Google Cloud Pub / Sub API
  • Cloud SQL API
  • Google Cloud Storage API
  • Google Compute Engine API
  • API Google Kubernetes Engine
  • API реестра контейнеров Google
  • API облачного мониторинга
  • Cloud Composer API
  • API реестра артефактов

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

Name Type Targets Filters Protocols / Ports Action Priority
composer-egress-gke-cluster-all-port Egress Apply to all IP ranges: 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. Тип: Частный

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. Тип: Частный

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. Тип: Частный

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-имя: gcr.io. Тип: Частный

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

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


comment
Можете ли вы предоставить журналы или фактические сообщения об ошибках, которые вы получаете? Из вашего описания трудно сказать, что здесь вызывает проблему.   -  person Wojtek_B    schedule 04.05.2021
comment
Проблема в том, что трудно получить соответствующий журнал ... Composer просто начинает выходить из строя в соответствии с его пользовательским интерфейсом мониторинга после настройки правил брандмауэра и настроек DNS. Этот пользовательский интерфейс, кажется, непоследовательно суммирует результаты. После смены разрешения по времени иногда показывает сбой, иногда все зеленое. После включения ведения журнала в подсети Composer StackDriver сбрасывается слишком большим количеством записей для правильной отладки. А пока мы разобрались с проблемой, я опишу ее ниже.   -  person elaspog    schedule 04.05.2021


Ответы (1)


Тем временем мы выяснили проблему:

  • Наиболее проблематично то, что запись DNS типа A отсутствовала в googleapis.com., который содержит IP-адреса.
  • The second problem was that a firewall rule coming from the documentation of VPC SC settings of the Cloud Function has blocked the communication between:
    • the nodes of the Composer on the subnet
    • между рабочими узлами и ведущим узлом (кластера Kubernetes, созданного для композитора), который автоматически создается в другом проекте и подключается сетевым пирингом к подсети рабочих композиторов.

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

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

  • трудно отладить такую ​​проблему, потому что пользовательский интерфейс мониторинга композитора, кажется, показывает информацию непоследовательным образом
  • трудно использовать журналы StackDriver для отладки после включения его в подсети, потому что это просто слишком много информации, и они регистрируются на уровне информации, а не на уровне предупреждений или ошибок
person elaspog    schedule 04.05.2021