Tvrdnja da App Engine Standard ne može doći do privatne baze podataka preko Cloud VPN-a ostala je iz starije generacije platforme. Standard instance ne dobijaju VPC-nativnu adresu kao neka druga okruženja za izvršavanje, ali mogu slati 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 rijetko zakaže jeste sama mogućnost. To je jedno od tri podešavanja koja nikada nisu usklađena.

Odakle dolazi stari odgovor

Prije nego što su konektori postojali, praktični odgovor je zaista bio da Standard može razgovarati samo sa javnim endpointima, pa su timovi prelazili na proxy VM ili drugo okruženje za izvršavanje da bi to zaobišli. Platforma se promijenila, a folklor nije. Mnogi savjeti na internetu još uvijek odražavaju eru kada uopće nije bilo opcije egress.

Ispravka je uža nego što zvuči. Standard može doći 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 postojati u regiji servisa i identitet koji ga postavlja mora ga moći koristiti.

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 normalnoj internet putanji, što je obično ono što veza s bazom podataka treba. all-traffic gura odlazni saobraćaj široko kroz VPC, pa obični internet pozivi takođe nasljeđuju NAT i firewall stav VPC-a.

Lokalno uređivanje datoteke ne mijenja 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

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

Još dva mjesta se moraju složiti. 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 obima. Ruta koja postoji samo u smjeru od udaljene prema lokalnoj strani čest je propust i propušta pingove, ali nikada ne završava TCP handshake.

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

DNS putuje drugom putanjom

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

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

URL Fetch ne koristi konektor

Egress postavka pokriva normalne odlazne sockete okruženja za izvršavanje, a naslijeđeni URL Fetch servis nije dio te putanje. Zahtjev izdan kroz urlfetch ignorira konektor bez obzira na to šta konfiguracija kaže. Kada neuspjeli poziv sjedi u starijoj biblioteci koja još koristi URL Fetch, popravka je premjestiti taj poziv na standardni HTTP klijent.

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

Provjerite jednim uskim upitom

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

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

Povezani članci