Tvrdnja da App Engine Standard ne može doći do privatne baze podataka preko Cloud VPN-a ostatak je starije generacije platforme. Standard instance ne dobivaju VPC-nativnu adresu kao neka druga izvršna okruženja, ali mogu slati egress kroz Serverless VPC Access konektor koji se nalazi u vašoj mreži. Kad ta putanja postoji, Cloud VPN i udaljeni vatrozid vide promet konektora kao i svaki drugi izvor. Ono što rijetko zakaže jest sama mogućnost. To je jedna od tri postavke koje nikada nisu usklađene.

Odakle dolazi stari odgovor

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

Ispravak je uži 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 stvarno zahvaća.

Prvo odaberite egress putanju

Konektor povezan sa servisom ono je što njegov promet stavlja u VPC. Dokumentacija o konektoru navodi regionalni preduvjet 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 uobičajenoj internetskoj putanji, što je obično ono što veza s bazom podataka treba. all-traffic gura odlazni promet široko kroz VPC, pa obični internetski pozivi također nasljeđuju NAT i vatrozidni 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še prijenosno računalo

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

Još dva mjesta moraju se složiti. VPC tablica usmjeravanja treba rutu do udaljene mreže baze podataka, a udaljena strana treba povratnu rutu za raspon konektora. Ako tunel koristi selektore prometa, potvrdite da raspon konektora leži unutar pregovaranog opsega. Ruta koja postoji samo u smjeru od udaljene prema lokalnoj strani čest je propust i propušta pingove, ali nikada ne dovršava TCP handshake.

Tunel koji prihvaća samo VM podmrežu odbacit će pakete konektora bez korisne poruke o pogreš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še prijenosno računalo ne koristi taj resolver.

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

URL Fetch ne koristi konektor

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

Za upravljački program 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 dopuštenu operaciju baze podataka iz implementirane verzije dok promatrate udaljenu stranu. Izvorna adresa koju zabilježi baza podataka ili VPN gateway trebala bi biti adresa konektora. Ako nije, zahtjev nikada nije ušao u VPC i nijedna količina konfiguracije tunela to neće popraviti. Usporedite 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