GCP - HTTPS и субдомены в разных средах - PullRequest
1 голос
/ 08 апреля 2020

В настоящее время у меня кластер GKE и служба настроена на app.companyname.com. Он живет в prod GCP "проекте". Сейчас я раскручиваю проект dev, и это все хорошо, за исключением того, что я не знаю, что делать с настройками доменного имени и сертификата. Я хочу, чтобы приложение было доступно по адресу dev.companyname.com

  1. Есть ли у меня общедоступная c DNS-зона для проекта или она должна быть в среде prod, к которой обращается dev? каким-то образом? Они разделяют настройки сервера имен? Перенаправляет ли проект prod в проект dev?

  2. Есть ли у меня отдельные сертификаты SSL, по одному на среду? Или в среде prod, к которой обращается разработчик.

Каков общий обзор того, как это следует настроить с помощью GCP?

enter image description here

Ответы [ 2 ]

2 голосов
/ 15 апреля 2020

По сути, речь идет о разделении между Prod и Dev. Следуя этому подходу («раскручивая» отдельный проект Dev в GCP), вы должны оставаться последовательными и разделять публикуемый c DNS. Это сделает проекты масштабируемыми и выровняет границы услуг GCP в соответствии с областями администрирования, доверия, управления и выставления счетов, которыми управляют различные команды.

Есть ли у меня открытая c зона DNS для каждого проекта? - Вообще говоря, у вас должна быть отдельная зона DNS для среды (но в описанном случае это означает «на проект»), в частности потому, что настройки SOA , такие как REFRESH или TTL, могут быть разными в Prod и Dev. Кроме того, поскольку каждая создаваемая управляемая зона связана с проектом Google Cloud, вы можете использовать функции IAM контроля доступа , чтобы придерживаться принципа наименьших привилегий в управлении зоной DNS.

Используют ли они общие параметры сервера имен? - С управляемой службой, такой как Cloud DNS, ваши проекты будут использовать серверы имен, предоставленные поставщиком. Вы можете найти их в консоли GCP или с помощью gcloud:

$ gcloud config set core/project myworks-240610
 Updated property [core/project]. 
$ gcloud dns managed-zones list
 NAME      DNS_NAME              DESCRIPTION  VISIBILITY 
 my-works  myworks.example.com.               public 
$ gcloud dns managed-zones describe my-works --format="flattened(nameServers)" 
 nameServers[0]: ns-cloud-b1.googledomains.com. 
 nameServers[1]: ns-cloud-b2.googledomains.com. 
 nameServers[2]: ns-cloud-b3.googledomains.com. 
 nameServers[3]: ns-cloud-b4.googledomains.com.  
$ dig ns-cloud-b1.googledomains.com +short 
 216.239.32.107 

NS-адрес отличается для разных проектов (таким образом между Prod и Dev). См. Обновление серверов имен вашего домена

Есть ли у меня отдельные сертификаты SSL, по одному на среду? - В разных зонах DNS хосты будут иметь разные CN, поэтому вы будете имеют отдельные сертификаты в Prod и Dev. Вы можете использовать групповые сертификаты , чтобы упростить задачу, например, в среде Dev.

1 голос
/ 08 апреля 2020

Я не знаком со спецификой GKE, но могу говорить с общей системой доменов.

Ответы:

  1. Существует одна запись DNS для companyname.com, NS записей установлены для всего домена. Но было бы две A записи, одна для prod и одна для dev. Запись A указывает на IP-адрес, так что вы можете разместить их на любых двух серверах, или на одном и том же, или в подкаталоге другого, если Apache или любой другой объект, обслуживающий веб-сайт, может соответствовать полное имя субдомена для каталога, в котором находятся файлы субдомена
  2. Для каждого субдомена существуют отдельные сертификаты SSL

Вот пример конечной записи зоны DNS, чтобы дать вам представление как установить настройки DNS:

; Name Servers
companyname.com.   IN   NS   ns1.somehost.com.
companyname.com.   IN   NS   ns2.somehost.com.
companyname.com.   IN   NS   ns3.somehost.com.

; A records 
@         IN   A   XXX.XXX.XXX.XXX       ; IP for the main companyname.com
prod      IN   A   XXX.XXX.XXX.XXX       ; IP for the app.companyname.com
dev       IN   A   XXX.XXX.XXX.XXX       ; IP for the dev.companyname.com

Об URL

URL состоит из протокола: // Имя домена: порт / путь / файл

https://prod.companyname.com:80/index.html
  • Протокол - это просто http или https
  • Доменное имя - это то, что пересекает весь inte rnet, и вся цель Системы доменных имен - сопоставить доменное имя с IP-адресом publi c сервер, на котором находится этот домен
  • только порт и скрытый браузером для пользователя
  • Затем сервер получает запрос (что-то вроде Apache, или, возможно, GKE принимает это оттуда) d сопоставляет доменное имя с каталогом root на сервере, а затем пересекает путь к нужным файлам для обслуживания запрашивающей стороны

Я знаю, что это много, но это проблема root. Я не могу говорить с GKE, и кто-то другой может заскочить и объяснить, что он может быть настроен на то, что вы делаете. Но если вы можете получить доступ к настройкам DNS домена и создать правильный поддомен, все это станет для вас намного проще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...