Anslut till ett kluster
Hämta ett klusters anslutningssträng, välj URI- eller nyckel=värde-formen och ge den till en arbetslast via ett valv — direkt, via poolern eller till replikerna.
Kräver: postgrescluster/readSecrets
Ett klusters anslutningssträng innehåller dess lösenord, så för att läsa den behöver du behörigheten
postgrescluster/readSecrets; rollerna Owner, Contributor och Databases Operator har den. Varje
gång strängen läses registrerar klustrets Aktivitet vem som läste den.
Hämta anslutningssträngen
I klustrets Översikt, under Åtkomstdetaljer, väljer du Visa anslutningssträng vid Anslutningssträng och kopierar den. Dölj anslutningssträng döljer den igen.
När klustret är exponerat utanför Kubernetes-klustret innehåller Extern anslutningssträng samma inloggningsuppgifter med lastbalanserarens adress. Där står Extern adress provisioneras… tills lastbalanseraren har fått en — se Nätverksåtkomst.
Med CLI:t:
stsh pg connstr orders-db # båda formerna
stsh pg connstr orders-db --raw # bara URI:n, för att skicka vidare i en pipe
stsh pg connstr orders-db --external # via lastbalanserarenVia API:t: GET .../resources/postgresclusters/<name>/connectionstring och
.../connectionstring/external.
De två formerna
Plattformen ger anslutningssträngen i två former. Portalen visar den första; API:t och CLI:t returnerar båda.
| Form | Fält | Ser ut som | För |
|---|---|---|---|
| URI | connectionString |
postgresql://orders:<password>@orders-db-rw.<namespace>:5432/orders |
psql och andra libpq-baserade klienter, psycopg, pgx, node-postgres |
| nyckel=värde | keyValueConnectionString |
Host=orders-db-rw.<namespace>;Port=5432;Database=orders;Username=orders;Password=<password> |
.NET och Npgsql |
Npgsql kan inte läsa URI:n: med en sådan misslyckas den med Format of the initialization string does not conform to specification. Ge ett .NET-program nyckel=värde-formen. I URI:n är lösenordet procentkodat; i nyckel=värde-formen är det inte det.
De externa strängarna heter externalConnectionString och externalKeyValueConnectionString; båda
är tomma så länge lastbalanseraren saknar adress.
Vad strängen pekar på
- Användare — databasens ägare, som heter som databasen.
- Värd —
<cluster>-rw.<namespace>, läs- och skrivtjänsten i klustrets resursgrupp. Den leder alltid till den aktuella primära instansen, även efter en failover. - Port — 5432.
- Databas — databasen som klustret skapades med.
Värdnamnet går att slå upp för arbetslaster på samma Kubernetes-kluster. Om en arbetslast faktiskt får ansluta avgörs av nätverksreglerna — se Nätverksåtkomst.
TLS
Klustret avvisar varje anslutning som inte använder TLS och tar som standard bara emot TLS 1.3. De
flesta drivrutiner försöker med TLS först; gör inte din det, slå på det, till exempel med
sslmode=require i en URI eller SSL Mode=Require i en nyckel=värde-sträng. Serverns certifikat är
utfärdat av klustrets egen certifikatutfärdare, som plattformen inte lämnar ut, så en klient som är
inställd på att verifiera certifikatet mot en känd utfärdare kan inte ansluta.
Kravet är PostgreSQL:s eget. PgBouncer-poolern är en separat server, och plattformen ställer inte in den på att avvisa klienter utan TLS — se Via poolern.
Ge en arbetslast anslutningssträngen
Förvara strängen i ett valv i stället för i en arbetslasts inställningar:
- Lägg till den som en hemlighet i ett valv — se Lägg till en hemlighet. Välj den form som arbetslastens drivrutin läser.
- Referera till hemligheten från arbetslasten och ge arbetslastens identitet Secrets Reader på
valvet:
- en app läser den från filen
/secrets/env.json— se Hemligheter i appar och funktioner; - en funktion läser den som miljövariabeln
STSH_<NAME>— se Läs värdena i en funktion; - en containerinstans får den som en miljövariabel — se Hemligheter i container instances.
- en app läser den från filen
Strängen är densamma under hela klustrets livstid, även efter en återställning från en ögonblicksbild. En blueprint som deklarerar en databas skriver dess anslutningsuppgifter till blueprintens eget valv — se Hanterade resurser.
Via poolern
Med PgBouncer påslaget har klustret en poolertjänst, <cluster>-pooler-rw, i samma
resursgrupp. Anslutningssträngen använder den inte: för att gå via poolern byter du värden
<cluster>-rw mot <cluster>-pooler-rw och behåller resten — samma användare, lösenord, port och
databas.
Viktigt
Plattformen ställer inte in poolern på att kräva TLS av sina klienter. Slå på TLS i varje klient som går via poolern, till exempel med
sslmode=require, så att lösenordet inte går okrypterat över nätverket.
I läget Transaction och Statement delas en serveranslutning mellan klienter från en
transaktion eller sats till nästa, så sessionstillstånd — SET, förberedda satser, advisory locks,
temporära tabeller — följer inte med. Använd läget Session för program som är beroende av det.
Läs från replikerna
Två tjänster till leder till klustret, med samma inloggningsuppgifter:
<cluster>-r— vilken instans som helst, den primära inräknad. Översikt visar den som Lästjänst.<cluster>-ro— bara replikerna.
Replikerna tillämpar den primäras ändringar en kort stund efter att den gjort dem, så en läsning från en replik kan missa en skrivning som gjordes precis innan. Se Instanser och hög tillgänglighet.