Как настроить Правила брандмауэра и параметры DNS в GCP с помощью элементов управления службами VPC при использовании Cloud Composer и облачных функций в одном проекте?

# #google-cloud-platform #google-cloud-functions #google-cloud-composer #google-cloud-dns #google-vpc

Вопрос:

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

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

Что мы делаем не так?

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

Для композитора мы используем следующие настройки:

  • 3 узла
  • стандартный тип машины
  • версия изображения: композитор-1.16.3-воздушный поток-1.10.15
  • python: v3
  • частный IP-композитор

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

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

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

Имя Тип Цели Фильтры Протоколы / Порты Экшен Приоритет
композитор-выход-gke-кластер-все-порты Покидание Применяются ко всем Диапазоны IP-адресов: 10.10.0.0/16 tcp, udp Позволять 1000
композитор-выход-проверка здоровья Покидание Применяются ко всем Диапазоны IP-адресов: 130.211.0.0/22, 35.191.0.0/16 tcp:80 443 Позволять 1000
композитор-выход-порт53 Покидание Применяются ко всем Диапазоны IP-адресов: 0.0.0.0/0 tcp:53, udp:53 Позволять 1000
композитор-выход-веб-сервер Покидание Применяются ко всем Диапазоны IP-адресов: 172.31.251.0/24 tcp:3306 3307 Позволять 1000
ограниченные-google-api Покидание Применяются ко всем Диапазоны IP-адресов: 199.36.153.4/30 tcp:443 Позволять 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

The DNS settings (based on the documentation):

DNS name: googleapis.com.
Type: Private

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

DNS-имя: cloudfunctions.net. Тип: Частный

DNS-имя Тип TTl(секунды) Данные
*.cloudfunctions.net. A 300 199.36.153.4,199.36.153.5,199.36.153.6,199.36.153.7
cloudfunctions.net нс 21600 ns-gcp-private.googledomains.com. cloud-dns-hostmaster.google.com. 1 21600 3600 259200 300
cloudfunctions.net. СОА 21600 ns-gcp-private.googledomains.com.

DNS-имя: pkg.dev. Тип: Частный

DNS-имя Тип TTl(секунды) Данные
*.pkg.dev. CNAME 300 пкг.дев.
пкг.дев. СОА 21600 ns-gcp-private.googledomains.com. cloud-dns-hostmaster.google.com. 1 21600 3600 259200 300
пкг.дев. нс 21600 ns-gcp-private.googledomains.com.
пкг.дев. A 300 199.36.153.4,199.36.153.5,199.36.153.6,199.36.153.7

DNS-имя: gcr.io. Тип: Частный

DNS-имя Тип TTl(секунды) Данные
*.gcr.io. CNAME 300 gcr.io.
gcr.io. СОА 21600 ns-gcp-private.googledomains.com. cloud-dns-hostmaster.google.com. 1 21600 3600 259200 300
gcr.io. нс 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

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

Комментарии:

1. Можете ли вы предоставить некоторые журналы или фактические сообщения об ошибках, которые вы получаете ? Из вашего описания трудно сказать, что здесь вызывает проблему.

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

Ответ №1:

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

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

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

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

  • отлаживать такого рода проблемы сложно, потому что пользовательский интерфейс мониторинга композитора, похоже, отображает информацию несогласованным образом
  • трудно использовать журналы StackDriver для отладки после их включения в подсети, потому что в них просто слишком много информации, и они регистрируются на уровне «информация», а не на уровне «предупреждение» или «ошибка» .