Tvrdnja da App Engine Standard ne može doći do privatne baze podataka preko Cloud VPN-a je ostatak starije generacije platforme. Standard instance ne dobijaju VPC-nativnu adresu kao neka druga izvršna okruženja, ali mogu da šalju egress kroz Serverless VPC Access konektor koji se nalazi u vašoj mreži. Kada ta putanja postoji, Cloud VPN i udaljeni firewall vide saobraćaj konektora kao i svaki drugi izvor. Ono što retko zakaže jeste sama mogućnost. To je jedno od tri podešavanja koja nikada nisu usklađena.

Odakle dolazi stari odgovor

Pre nego što su konektori postojali, praktični odgovor je zaista bio da Standard može da razgovara samo sa javnim endpointima, pa su timovi prelazili na proxy VM ili drugo izvršno okruženje kako bi to zaobišli. Platforma se promenila, folklor nije. Mnogi saveti na internetu još uvek odražavaju eru kada uopšte nije bilo opcije egress.

Ispravka je uža nego što zvuči. Standard može da dođe do privatne mreže, ali samo kroz podržanu egress integraciju i samo za odredišta koja ta integracija zaista zahvata.

Prvo izaberite egress putanju

Konektor povezan sa servisom je ono što njegov saobraćaj stavlja u VPC. Dokumentacija o konektoru navodi regionalni preduslov i egress postavke; konektor mora da postoji u regiji servisa i identitet koji ga postavlja mora moći da ga koristi.

vpc_access_connector:
  name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
  egress_setting: private-ranges-only

private-ranges-only šalje privatna odredišta u VPC, a sve ostalo ostavlja na uobičajenoj internet putanji, što je obično ono što veza sa bazom podataka treba. all-traffic gura odlazni saobraćaj široko kroz VPC, pa obični internet pozivi takođe nasleđuju NAT i firewall stav VPC-a.

Lokalno uređivanje datoteke ne menja ništa dok ne izvršite deployment. Verzija koja radi zadržava konfiguraciju s kojom je stvorena.

Izvorna adresa je konektor, a ne vaš laptop

Ovde odlazi većina vremena za otklanjanje grešaka. Udaljeni VPN gateway i firewall baze podataka moraju prihvatiti dodeljeni raspon konektora unutar VPC-a, ne adresu vaše kancelarije i ne javnu egress adresu servisa. Potražite taj raspon u konzoli pre nego što napišete i jedno pravilo.

Još dva mesta moraju da se slože. VPC tabela ruta treba rutu do udaljene mreže baze podataka, a udaljena strana treba povratnu rutu za raspon konektora. Ako tunel koristi selektore saobraćaja, potvrdite da raspon konektora leži unutar pregovaranog opsega. Ruta koja postoji samo u smeru od udaljene ka lokalnoj strani čest je propust i propušta pingove, ali nikada ne završava TCP handshake.

Tunel koji prihvata samo VM podmrežu odbaciće pakete konektora bez korisne poruke o grešci, zbog čega istek vremena baze podataka izgleda kao problem sa akreditivima.

DNS putuje drugom putanjom

Ime hosta privatne baze podataka mora da se razreši unutar mreže do koje konektor dolazi, kroz Cloud DNS peering ili forward zonu koju VPC može da koristi. Razrešavanje na vašoj radnoj stanici ne dokazuje ništa o implementiranom servisu, jer vaš laptop ne koristi taj resolver.

Ako se ime razreši u javnu adresu iz unutrašnjosti VPC-a, spremate se da otklanjate greške na pogrešnom firewallu.

URL Fetch ne koristi konektor

Egress postavka pokriva uobičajene odlazne sockete izvršnog okruženja, a nasleđeni URL Fetch servis nije deo te putanje. Zahtev izdat kroz urlfetch ignoriše konektor bez obzira na to šta konfiguracija kaže. Kada neuspeli poziv sedi u starijoj biblioteci koja još koristi URL Fetch, popravka je premestiti taj poziv na standardni HTTP klijent.

Za drajver baze podataka to je retko problem, ali je klasičan razlog zašto jedan endpoint radi, a drugi ne iz istog servisa.

Proverite jednim uskim upitom

Izvršite deployment, zatim pokrenite jednu dozvoljenu operaciju baze podataka iz implementirane verzije dok posmatrate udaljenu stranu. Izvorna adresa koju zabeleži baza podataka ili VPN gateway treba da bude adresa konektora. Ako nije, zahtev nikada nije ušao u VPC i nijedna količina konfiguracije tunela to neće popraviti. Uporedite je sa rasponom koji ste potražili u konzoli; neslaganje obično znači da verziju opslužuje drugi konektor.

Uspešan upit sa VM-a unutar VPC-a dokazuje da ruta postoji. Ne dokazuje da ju je servis odabrao.

Povezani članci