ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅: ΠžΡ‚ΠΊΠ°Π· ΠΎΡ‚ привязки ΠΊ Hostname для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ бСсплатных Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ΠΎΠ² Cloudflare

ЦСль

ΠžΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ измСнСния Π½Π° сторонС ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Nextcode для ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½Π° использованиС бСсплатных Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ΠΎΠ² Cloudflare ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π·Π΅Ρ€ΠΊΠ°Π»Π°ΠΌΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ².

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°

На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ для запуска Π·Π΅Ρ€ΠΊΠ°Π»Π° ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Nextcode Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» Hostname Rewrite. Π­Ρ‚ΠΎΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» доступСн Π»ΠΈΠ±ΠΎ Π½Π° Ρ‚Π°Ρ€ΠΈΡ„Π΅ Cloudflare Enterprise, Π»ΠΈΠ±ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ использования ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ Cloudflare Worker.

ΠŸΡ€ΠΈ большом количСствС ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² ΠΈ Π·Π΅Ρ€ΠΊΠ°Π» администрированиС мноТСства Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠ² услоТняСт ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΈ Π²Π΅Π΄Π΅Ρ‚ ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ эксплуатации.

ВСкущая Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°

Виповая настройка DNS для Π·Π΅Ρ€ΠΊΠ°Π»Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, mirror.com) выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

@ CNAME brand-public.internal.corp.loc

ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΉ настройкС Π½Π° хост brand-public.internal.corp.loc приходят запросы с Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ Host: mirror.com.

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ brand-public.internal.corp.loc Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ запросы с Π»ΡŽΠ±Ρ‹ΠΌ Host Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚.

ВСхничСскиС ограничСния ΠΈ трСбования

РСализация схСмы с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ Host Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ уточнСния ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ²:

  1. SSL/TLS: ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Π΄ΠΎΠΌΠ΅Π½ (origin) Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ SSL-сСртификат. Π‘ΠΎ стороны Cloudflare Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π»ΠΈΠ±ΠΎ явно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ Full (ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ сСртификаты), Π»ΠΈΠ±ΠΎ Π²Ρ‹ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Cloudflare Origin CA сСртификат.
  2. K8s Ingress: Π’ ΡˆΡ‚Π°Ρ‚Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ingress ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Host для ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π‘Π΅Π· привязки ΠΊ Host, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ всС запросы Π½Π° ΠΎΠ΄ΠΈΠ½ IP относятся ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½ΠΎΠΌΡƒ бэкСнду. Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹, ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π±Ρ‹ Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρƒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ IP-адрСс, Ρ‡Ρ‚ΠΎ нСэффСктивно.

ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅

Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Kubernetes прСдлагаСтся Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ кастомного Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° x-brand-name ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ для опрСдСлСния ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° вмСсто Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Host.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°

Для добавлСния Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° x-brand-name ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Cloudflare Transform Rules, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ доступны Π½Π° бСсплатных Ρ‚Π°Ρ€ΠΈΡ„Π°Ρ… Cloudflare. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Π·Π΅Ρ€ΠΊΠ°Π»Π° Π±Π΅Π· нСобходимости выполнСния ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ со стороны ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ источника Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°

Для сохранСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΎΠΌ, с ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π·Π΅Ρ€ΠΊΠ°Π»Π° ΠΏΡ€ΠΈΡˆΠ΅Π» ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, прСдлагаСтся Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ x-hostname (ΠΈΠ»ΠΈ X-Forwarded-Host), содСрТащий Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ hostname запроса.

Π˜Ρ‚ΠΎΠ³

НСобходимо ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ способ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ (ΠΌΠ°Ρ‚Ρ‡ΠΈΠ½Π³Π°) ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² Π½Π° Ingress-ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅:

  • ВСкущая схСма: Host Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ опрСдСляСт Π±Ρ€Π΅Π½Π΄.
  • Новая схСма: Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ x-brand-name опрСдСляСт Π±Ρ€Π΅Π½Π΄.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ:

  • Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° x-hostname для сохранСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ источникС Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°.