JournalindeksDockup / feltnotat
Note / private-networking-internal-domains

Privat nettverk og .internal-domener på Dockup

Privat nettverk på Dockup kobler sammen prosjekttjenester og databaser via .internal-navn, isolerer prosjekter og gir previews skrivebeskyttet databasetilgang.

Privat nettverk lar tjenester og administrerte databaser i ett Dockup-prosjekt kommunisere uten å sende trafikk mellom ressurser i samme prosjekt over det offentlige internettet. Hver ressurs får et stabilt vertsnavn på formen <slug>.internal, mens separate prosjekter fortsatt er isolert fra hverandre.

Nettverket aktiveres som et valg. Når du aktiverer det, kobles eksisterende prosjektressurser til nettverket uten at applikasjonstrafikken må bytte med én gang, og tjenester mottar interne tilkoblingsvariabler etter ny utrulling.

Hvordan reduserer tjeneste-til-tjeneste-nettverk eksponering mot offentligheten?

Et offentlig databaseendepunkt er tilgjengelig fra internett selv når autentisering blokkerer uautorisert bruk. En privat rute fjerner denne eksponeringen for applikasjonstrafikk og gir tjenestene et stabilt internt navn som ikke avhenger av en offentlig adresse.

Det samme prinsippet gjelder for kall mellom tjenester. Et API kan kalle en worker, en intern administrasjonstjeneste eller en backend over prosjektnettverket i stedet for via et offentlig egendefinert domene.

TrafikkbaneOffentlig rutePrivat rute
API til PostgreSQLOffentlig vert og portmain-db.internal
Web til APIOffentlig egendefinert domeneapi.internal
Worker til RedisOffentlig vert og portapp-redis.internal
Preview til produksjonsdatabaseOffentlig databaselegitimasjonSkrivebeskyttet intern bruker
Kall på tvers av prosjekterOffentlig endepunkt krevesBlokkert av prosjektisolering

Privat betyr ikke uten autentisering. Fortsett å bruke databasebrukere, tjenesteautorisasjon og secrets. Nettverket avgjør rekkevidde; legitimasjon avgjør tilgang.

Hvordan aktiverer du privat nettverk for et prosjekt?

Aktiver nettverket for prosjekt-slugen:

dockup network enable production --json

Operasjonen kobler tjenester og administrerte databaser til prosjektnettverket. Eksisterende offentlige lyttere er fortsatt tilgjengelige som standard, slik at innføringen kan skje gradvis.

Kjør ny utrulling av hver applikasjonstjeneste som skal motta interne miljøvariabler:

dockup deploy production/api --wait --json
dockup deploy production/worker --wait --json

Dockup injiserer tilkoblingsdata som DATABASE_URL_INTERNAL, interne URL- og vertsvariabler som er spesifikke for databasen, samt verdier for tjenestens vert og port. Inspiser nøklene i tjenestens miljø uten å eksponere secrets:

dockup env list -s production/api --json

Ikke bygg en URL manuelt ut fra et visningsnavn. Ressurs-sluger bestemmer vertsnavnet på formen <slug>.internal.

Før du endrer applikasjonskonfigurasjonen, må du kontrollere at alle avhengigheter ligger i samme prosjekt. Separate prosjekter har separate nettverk og kan ikke slå opp eller nå hverandre via den interne ruten.

Hvordan endrer .internal-domener tjenestekonfigurasjonen?

Intern DNS gir et stabilt navn selv om containere og noder endres underliggende. En API-tjeneste med slug api er tilgjengelig som api.internal fra tjenester i samme prosjekt; en database med slug main-db er tilgjengelig som main-db.internal.

Foretrekk de injiserte tilkoblingsvariablene når de er tilgjengelige. De inneholder riktig protokoll, legitimasjon, databasenavn og vertsformat. En manuelt bygget streng kan utelate TLS, koding av passord eller databaseparametere.

Migrer én avhengighet om gangen:

  1. Aktiver nettverket.
  2. Kjør ny utrulling av tjenesten som bruker avhengigheten.
  3. Bekreft at den interne variabelen finnes.
  4. Endre applikasjonen slik at den bruker variabelen.
  5. Distribuer med --wait.
  6. Bekreft nye tilkoblinger.
  7. Følg med på runtime-logger og svartid.
  8. Fortsett med neste avhengighet.

En tjeneste kan beholde det offentlige egendefinerte domenet for brukertrafikk, samtidig som den bruker private vertsnavn til kall mellom backend-tjenester. Offentlige og private ruter dekker ulike tillitsgrenser.

Veiledningen om miljøvariabler og secrets forklarer hvorfor endringer i tilkoblinger krever ny utrulling.

Hvordan gjør du en administrert database tilgjengelig kun privat?

Når alle nødvendige konsumenter bruker den interne ruten, fjerner du den offentlige lytteren:

dockup db private production/main-db --json

Gjenopprett offentlig og privat tilgang ved behov:

dockup db private production/main-db --off --json

Denne databaseoperasjonen oppretter containeren på nytt, samtidig som dataene bevares. Planlegg et vedlikeholdsvindu som passer arbeidsbelastningen, bekreft at det finnes en nylig backup, og test at applikasjonen kobler til på nytt.

Før du gjør databasen tilgjengelig kun privat, må du kontrollere:

  • Alle produksjonstjenester som bruker databasen, er i samme prosjekt.
  • Operasjonelle verktøy ikke krever det offentlige endepunktet.
  • Preview-tilgang bruker den støttede private ruten.
  • Det finnes en backup, og gjenoppretting er forstått.
  • Tilkoblingspooler prøver på nytt på en trygg måte.
  • Det nøyaktige målet i formatet project/db er dokumentert.

En database som kun er tilgjengelig privat, kan ikke nås direkte fra en operatørs bærbare datamaskin via det offentlige internettet. Bruk støttet plattformtilgang og diagnostikk på applikasjonsnivå i stedet for å åpne lytteren igjen uten grundig vurdering.

Se administrert PostgreSQL for databaseoperasjoner.

Hvordan får PR-previews trygg tilgang til produksjonsdata?

Hver Dockup-PR- eller branch-preview får sin egen isolerte utrulling og URL. I et prosjekt med privat nettverk kobles previewen til prosjektnettverket og kan slå opp <slug>.internal.

Dockup oppretter automatisk en skrivebeskyttet bruker for produksjonsdatabasen som previewen bruker. Previewen kan spørre etter data med samme struktur som i produksjon, men kan ikke skrive med denne brukeren.

Dette designet reduserer risikoen for at en feature branch endrer kundeoppføringer, men lesetilgang har fortsatt konsekvenser:

  • Personopplysninger eller sensitive data kan vises i previewen.
  • Ny applikasjonskode kan logge dataene det spørres etter.
  • En sårbar preview-URL kan eksponere leseresultater.
  • Kostbare spørringer kan påvirke belastningen i produksjon.
  • Skjemaantakelser kan være forskjellige mellom branchen og produksjon.

Aktiver preview-utrulling bare i henhold til en gjennomgått policy:

dockup pr-preview production/api --on --json
dockup preview branch feature/search production/api --json

Bruk previewens isolerte miljø for feature flags og secrets som ikke gjelder databasen. Ikke erstatt den automatiske skrivebeskyttede legitimasjonen med produksjonslegitimasjonen som gir skrivetilgang.

Hvordan bør privat nettverk overvåkes og feilsøkes?

Start med topologi og konfigurasjon i stedet for å anta at plattformen er nede.

SymptomSannsynlig områdeKontroller
Navnet ble ikke funnetFeil slug/prosjekt eller tjenesten er ikke rullet ut på nyttTjenesteliste og miljønøkler
Tilkobling avvistRessursen er stoppet eller feil portStatus og logger fra database/tjeneste
Autentisering mislyktesFeil legitimasjonRotering av secret og bruker
Offentlig fungerer, privat feilerIntern variabel eller innføring av nettverketAktivering av nettverk, ny utrulling
Preview kan lese, men ikke skriveForventet skrivebeskyttet policyIkke erstatt legitimasjonen
Kall på tvers av prosjekter mislykkesForventet isoleringBruk et offentlig, autentisert API

Inspiser logger fra applikasjonens runtime:

dockup logs production/api --json

Inspiser databasestørrelse og tilkoblingsfeil fra applikasjonen:

dockup db size production/main-db --json
dockup logs production/api --json

Ikke skriv ut komplette interne tilkoblings-URL-er i hendelsesnotater. De kan inneholde legitimasjon selv om selve vertsnavnet ikke er hemmelig.

Plan for migrering og rollback

Behold den offentlige lytteren i den første fasen. Hvis den interne utrullingen mislykkes, gjenopprett applikasjonens forrige konfigurasjon og kjør ny utrulling. Gjør databasen tilgjengelig kun privat først etter at den interne ruten har vært stabil.

Slik deaktiverer du hele prosjektnettverket:

dockup network disable production --json

Dette bør være en bevisst rollback, ikke det første feilsøkingstrinnet. Deaktivering av nettverket påvirker alle tilkoblede ressurser i prosjektet.

Registrer endringer i nettverket via audit-loggen:

dockup audit --writes --json

Sjekkliste for produksjon med privat nettverk

En komplett runbook for privat nettverk inneholder prosjekt-slug, slugs for tjenester og databaser, interne vertsnavn, navn på injiserte variabler, policy for offentlige lyttere, policy for preview-tilgang, backupstatus, rekkefølge for ny utrulling og rollback-prosedyre.

CPU, RAM og disk er fortsatt bruksbaserte og måles per minutt; privat ruting er et arkitekturvalg, ikke en fast instansklasse. Bruk PaaS-prising forklart til kostnadsmodellering.

Dockup CLI-referansen inneholder de gjeldende kommandoene for nettverk og databaser. Se beste praksis for sikkerhet for generell isolering av utrullinger.

Modellér tjenesteautorisasjon separat fra rekkevidde

Et internt vertsnavn beviser bare at avsenderen er på prosjektnettverket. Det beviser ikke hvilken tjeneste som sendte forespørselen, eller om tjenesten har tillatelse til å utføre handlingen. Behold applikasjonsautentisering for sensitive interne API-er og databaselegitimasjon for datatilgang.

Bruk tjenestespesifikke secrets i stedet for ett delt internt token. Hvis en preview får skrivebeskyttet databasetilgang, må den heller ikke få et produksjonstoken for tjenester som kan utløse skriving via et API.

Mål effekten av overgangen

Sammenlign tilkoblingsforsinkelse, feilrate og svartid ved p95 før og etter overgangen til interne endepunkter. Hovedmålet er isolering og en stabil privat rute; eventuell forbedring i forsinkelse bør måles i stedet for å loves.

dockup uptime production/api --hours 24 --json

Behold observasjonsvinduet og utrullings-ID-en. Da får endringen til privat nettverk et målbart fullføringskriterium i stedet for å ende med at «DNS ble løst».

Dokumenter unntak fra den offentlige ruten

Enkelte eksterne integrasjoner, operatørverktøy eller tjenester på tvers av prosjekter kan fortsatt kreve et offentlig endepunkt. List opp hvert unntak, autentiseringen, eieren og betingelsen for fjerning. Da unngår du at den offentlige lytteren blir stående på ubestemt tid fordi ingen husker hvorfor den finnes.

En komplett utrulling av privat nettverk kan være delvis, men hver offentlig rute bør være tilsiktet.

Gå gjennom interne avhengigheter etter navneendringer

En ressursendring eller -erstatning kan endre slug-en som brukes til adressering med .internal. Kartlegg konsumentene før du endrer navn, rull dem ut på nytt med oppdaterte injiserte variabler, og bekreft alle private tilkoblinger.

Slik holder du privat nettverk stabilt mens prosjektet utvikler seg.

Start med en utrulling som kan verifiseres

Aktiver nettverk i et prosjekt som ikke er produksjon, migrer én avhengighet til .internal-endepunktet, og bevis at rollback-prosedyren fungerer før du fjerner en offentlig lytter.

Start gratis på app.dockup.ai. Free-planen koster $0 per måned, inkluderer $10 i startkreditt og støtter ett workspace, tre databaser og tre utrullinger.

Vanlige spørsmål

Hvilket vertsnavn bruker Dockup-ressurser på det private nettverket?

Hver tjeneste og administrerte database i samme prosjekt er tilgjengelig via et stabilt vertsnavn på formen <slug>.internal.

Fjerner aktivering av privat nettverk offentlig databasetilgang?

Nei. Nettverket legges som standard til uten å fjerne noe. Bruk den separate databasekommandoen for privat tilgang til å fjerne den offentlige lytteren etter at konsumentene bruker den interne ruten.

Kan forskjellige Dockup-prosjekter nå hverandre privat?

Nei. Hvert prosjekt har et isolert nettverk, så kommunikasjon på tvers av prosjekter må bruke et egnet offentlig og autentisert grensesnitt.

Kan en PR-preview skrive til produksjonsdatabasen?

I et prosjekt med privat nettverk oppretter Dockup automatisk en skrivebeskyttet databasebruker for previewen. Den kan lese, men ikke skrive med denne legitimasjonen.

Hvorfor må tjenester rulles ut på nytt etter at nettverk er aktivert?

Ny utrulling gir den nye containeren de interne tilkoblingsvariablene og lar applikasjonen starte med konfigurasjonen for det private endepunktet.