Nätverksåtkomst
Välj vilka arbetslaster som når ett PostgreSQL-kluster, exponera det utanför Kubernetes-klustret via en lastbalanserare och begränsa extern åtkomst till adressintervall.
Kräver: postgrescluster/write
Nätverksinställningarna finns på klustrets flik Konfiguration, avsnittet
Nätverk & säkerhet. För att ändra dem behöver du postgrescluster/write; välj Spara när du
är klar.
Välj vem som får ansluta inifrån
Brandvägg avgör vilka arbetslaster på Kubernetes-klustret som får öppna en anslutning till databasen:
- Boundary-åtkomst — standard. Arbetslaster i alla resursgrupper i klustrets boundary.
- Endast samma resursgrupp — bara arbetslaster i klustrets egen resursgrupp.
- Valda nätverk — utöver boundaryn alla arbetslaster på Kubernetes-klustret, i alla boundaries, på PostgreSQL-porten 5432.
Viktigt
Valda nätverk är det bredaste valet, inte ett snävare: det låter arbetslaster i alla andra boundaries på samma Kubernetes-kluster nå databasen. Adresslistan som hör till det gäller bara anslutningar utifrån.
Vad du än väljer behåller plattformens egna tjänster sin åtkomst — bland dem Datautforskaren och operatorn. Hur reglerna passar ihop med resten av boundaryns nätverk beskrivs i Databaser.
Att nå databasen är inte detsamma som att komma in: en anslutning behöver fortfarande inloggningsuppgifterna i anslutningssträngen.
Exponera klustret utanför Kubernetes-klustret
Slå på Aktivera Ingress. Plattformen lägger till en lastbalanserare framför den primära instansen, och Översikt visar sedan:
- Extern åtkomst — Aktiverad;
- Extern IP — lastbalanserarens adress, när den har fått en;
- Extern anslutningssträng — anslutningssträngen med den adressen; se Anslut till ett kluster.
Tills adressen är tilldelad står det Extern adress provisioneras… i båda. Vilka adresser en lastbalanserare får, och varifrån de kan nås, beror på installationen.
Slår du av Aktivera Ingress tas lastbalanseraren bort.
Viktigt
Trafik genom lastbalanseraren släpps in av en nätverksregel som plattformens nätverkssvep skriver, och svepet tillämpar också adresslistan nedan. Det körs var femte minut som standard, så anslutningar genom en ny lastbalanserare kan avvisas, och en lista du har snävat in kan fortsätta släppa in de gamla intervallen, så länge.
Begränsa extern åtkomst till adressintervall
Utan en lista kan alla som når lastbalanserarens adress försöka ansluta. För att bara ta emot externa anslutningar från vissa intervall:
- Sätt Brandvägg till Valda nätverk — vilket också öppnar databasen för alla boundaries på Kubernetes-klustret, se ovan. Tillåtna CIDR-block visas; det går att redigera medan Aktivera Ingress är på.
- Ange intervallen, åtskilda med kommatecken, till exempel
203.0.113.0/24, 2001:db8::/32. Varje post behöver en prefixlängd — skriv/32(eller/128) för en enda adress. Värdbitar nollställs åt dig, så10.0.0.1/24sparas som10.0.0.0/24. En lista där en post inte är ett intervall avvisas i sin helhet. - Välj Spara.
Listan gäller bara anslutningar utifrån Kubernetes-klustret; arbetslaster inuti det styrs av
Brandvägg. Den gäller vad Brandvägg än är satt till: byter du tillbaka Brandvägg efter att
ha sparat listan döljs fältet i portalen, men listan fortsätter att gälla. Med CLI:t eller API:t kan
allowedCidrs sättas utan att brandväggen ändras. Lastbalanseraren behåller klientens egen adress, så listan matchar de adresser
klienterna verkligen ansluter från. Listan sparas bara så länge lastbalanseraren finns: slår du av
Aktivera Ingress försvinner den.
TLS
TLS är ingen inställning: PostgreSQL avvisar varje anslutning utan det, inifrån eller utifrån. PgBouncer-poolern är inte inställd på att kräva det — se TLS.
Med CLI:t
stsh pg update orders-db --set networkPolicy=allow-same-namespace
stsh pg update orders-db --set enableLoadBalancer=true --set allowedCidrs="203.0.113.0/24"
stsh pg external-ip orders-dbnetworkPolicy är default (Boundary-åtkomst), allow-same-namespace
(Endast samma resursgrupp) eller allow-all (Valda nätverk). Via API:t skickas samma fält i
en PATCH av klustret; bara den externa adressen hämtas med
GET .../postgresclusters/<name>/external-ip, som bara kräver postgrescluster/read.