App Engine може да стигне до ваше VPN базе података: шта мора да се поклопи
Стандардни App Engine заиста стиже до базе података преко Cloud VPN-а, али само када се egress, опсег извора и путања захтева поклопе. Ево шта треба ускладити.
Тврдња да App Engine Standard не може да стигне до приватне базе података преко Cloud VPN-а остатак је старије генерације платформе. Standard инстанце не добијају VPC-нативну адресу као нека друга извршна окружења, али могу да шаљу egress кроз Serverless VPC Access конектор који се налази у вашој мрежи. Када та путања постоји, Cloud VPN и удаљени firewall виде саобраћај конектора као и сваки други извор. Оно што ретко закаже јесте сама могућност. То је једно од три подешавања која никада нису усклађена.
Одакле долази стари одговор
Пре него што су конектори постојали, практични одговор је заиста био да Standard може да разговара само са јавним endpointima, па су тимови прелазили на proxy VM или друго извршно окружење како би то заобишли. Платформа се променила, фолклор није. Многи савети на интернету још увек одражавају еру када уопште није било опције egress.
Исправка је ужа него што звучи. Standard може да дође до приватне мреже, али само кроз подржану egress интеграцију и само за одредишта која та интеграција заиста захвата.
Прво изаберите egress путању
Конектор повезан са сервисом је оно што његов саобраћај ставља у VPC. Документација о конектору наводи регионални предуслов и egress поставке; конектор мора да постоји у регији сервиса и идентитет који га поставља мора моћи да га користи.
vpc_access_connector:
name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
egress_setting: private-ranges-only
private-ranges-only шаље приватна одредишта у VPC, а све остало оставља на уобичајеној интернет путањи, што је обично оно што веза са базом података треба. all-traffic гура одлазни саобраћај широко кроз VPC, па обични интернет позиви такође наслеђују NAT и firewall став VPC-а.
Локално уређивање датотеке не мења ништа док не извршите deployment. Верзија која ради задржава конфигурацију с којом је створена.
Изворна адреса је конектор, а не ваш лаптоп
Овде одлази већина времена за отклањање грешака. Удаљени VPN gateway и firewall базе података морају прихватити додељени распон конектора унутар VPC-а, не адресу ваше канцеларије и не јавну egress адресу сервиса. Потражите тај распон у конзоли пре него што напишете и једно правило.
Још два места морају да се сложе. VPC табела рута треба руту до удаљене мреже базе података, а удаљена страна треба повратну руту за распон конектора. Ако тунел користи селекторе саобраћаја, потврдите да распон конектора лежи унутар преговараног опсега. Рута која постоји само у смеру од удаљене ка локалној страни чест је пропуст и пропушта пингове, али никада не завршава TCP handshake.
Тунел који прихвата само VM подмрежу одбациће пакете конектора без корисне поруке о грешци, због чега истек времена базе података изгледа као проблем са акредитивима.
DNS путује другом путањом
Име хоста приватне базе података мора да се разреши унутар мреже до које конектор долази, кроз Cloud DNS peering или forward зону коју VPC може да користи. Разрешавање на вашој радној станици не доказује ништа о имплементираном сервису, јер ваш лаптоп не користи тај resolver.
Ако се име разреши у јавну адресу из унутрашњости VPC-а, спремате се да отклањате грешке на погрешном firewallu.
URL Fetch не користи конектор
Egress поставка покрива уобичајене одлазне сокете извршног окружења, а наслеђени URL Fetch сервис није део те путање. Захтев издат кроз urlfetch игнорише конектор без обзира на то шта конфигурација каже. Када неуспели позив седи у старијој библиотеци која још користи URL Fetch, поправка је преместити тај позив на стандардни HTTP клијент.
За драјвер базе података то је ретко проблем, али је класичан разлог зашто један endpoint ради, а други не из истог сервиса.
Проверите једним уским упитом
Извршите deployment, затим покрените једну дозвољену операцију базе података из имплементиране верзије док посматрате удаљену страну. Изворна адреса коју забележи база података или VPN gateway треба да буде адреса конектора. Ако није, захтев никада није ушао у VPC и ниједна количина конфигурације тунела то неће поправити. Упоредите је са распоном који сте потражили у конзоли; неслагање обично значи да верзију опслужује други конектор.
Успешан упит са VM-а унутар VPC-а доказује да рута постоји. Не доказује да ју је сервис одабрао.