Le istruzioni specifiche per Kubernetes in questa pagina presuppongono una familiarità di base con il funzionamento di Kubernetes.
Esegui AlloyDB Omni
Le procedure che utilizzi per eseguire AlloyDB Omni dipendono dal fatto che tu stia eseguendo AlloyDB Omni in un container su un singolo server o su un cluster Kubernetes. Questa sezione divide le istruzioni tra questi stili di deployment.
Avvia AlloyDB Omni
A un solo server
Per avviare un container AlloyDB Omni arrestato, esegui il comando
docker container start
o il comando
podman container start
:
Docker
docker container start CONTAINER_NAME
Sostituisci CONTAINER_NAME
con il nome assegnato
al container AlloyDB Omni durante l'installazione.
Podman
podman container start CONTAINER_NAME
Sostituisci CONTAINER_NAME
con il nome assegnato
al container AlloyDB Omni durante l'installazione.
Kubernetes
Avvia un cluster di database arrestato impostando isStopped
su false
nella definizione del manifest.
Puoi eseguire questa operazione dalla riga di comando utilizzando kubectl
:
kubectl patch dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME \
-p '{"spec":{"primarySpec":{"isStopped":false}}}' --type=merge -n DB_CLUSTER_NAMESPACE
Sostituisci quanto segue:
DB_CLUSTER_NAME
: il nome di questo cluster di database, ad esempiomy-db-cluster
.DB_CLUSTER_NAMESPACE
(facoltativo): lo spazio dei nomi in cui è stato creato questo cluster di database, ad esempiomy-db-cluster-namespace
.
Controlla lo stato di AlloyDB Omni
A un solo server
Per controllare lo stato di tutti i container in esecuzione, esegui il comando docker container ls
o il comando podman container ls
:
Docker
docker container ls
Podman
podman container ls
Se il contenitore AlloyDB Omni è in esecuzione, il suo nome verrà visualizzato nella colonna NAMES
della tabella di output. La riga
corrispondente riepiloga lo stato del container.
Se il nome del tuo container non viene visualizzato nella colonna NAMES
, significa che
AlloyDB Omni non è in esecuzione.
Kubernetes
kubectl get dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -n DB_CLUSTER_NAMESPACE
Sostituisci quanto segue:
DB_CLUSTER_NAME
: il nome del tuo cluster di database.DB_CLUSTER_NAMESPACE
(facoltativo): lo spazio dei nomi in cui hai creato il cluster di database.
Arresta AlloyDB Omni
A un solo server
Per arrestare un container AlloyDB Omni, esegui il comando
docker container stop
o il comando
podman container stop
:
Docker
docker container stop CONTAINER_NAME
Sostituisci CONTAINER_NAME
con il nome assegnato
al container AlloyDB Omni durante l'installazione.
Podman
podman container stop CONTAINER_NAME
Sostituisci CONTAINER_NAME
con il nome assegnato
al container AlloyDB Omni durante l'installazione.
Kubernetes
Per arrestare un cluster di database, imposta isStopped
su true
nella definizione del manifest.
Puoi eseguire questa operazione dalla riga di comando utilizzando kubectl
:
kubectl patch dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -p '{"spec":{"primarySpec":{"isStopped":true}}}' --type=merge -n DB_CLUSTER_NAMESPACE
Sostituisci quanto segue:
DB_CLUSTER_NAME
: il nome di questo cluster di database, ad esempiomy-db-cluster
.DB_CLUSTER_NAMESPACE
(facoltativo): lo spazio dei nomi in cui hai creato questo cluster di database, ad esempiomy-db-cluster-namespace
.
Connettiti ad AlloyDB Omni in esecuzione su un singolo server
Il container AlloyDB Omni include una propria copia di psql
che ti consente di aprire una sessione di shell SQL interattiva con il relativo server di database.
Puoi anche connetterti ad AlloyDB Omni dall'esterno del container utilizzando il software compatibile con PostgreSQL che preferisci.
Per informazioni sulla connessione a un cluster di database AlloyDB Omni in esecuzione su un cluster Kubernetes, consulta Connessione ad AlloyDB Omni in esecuzione su Kubernetes.
Connettiti utilizzando psql
in container
Per connetterti al server di database AlloyDB Omni utilizzando la propria
copia containerizzata di psql
, esegui questo comando:
Docker
docker exec -it CONTAINER_NAME psql -U postgres
Sostituisci CONTAINER_NAME
con il nome assegnato
al container AlloyDB Omni durante l'installazione.
Podman
podman exec -it CONTAINER_NAME psql -U postgres
Sostituisci CONTAINER_NAME
con il nome assegnato
al container AlloyDB Omni durante l'installazione.
Questo comando ti connette al server con il ruolo utente postgres
e visualizza
un prompt dei comandi postgres=#
. Ora puoi eseguire comandi psql
e query SQL.
Per uscire da psql
, esegui il comando \q
.
Connettersi utilizzando le proprie applicazioni
Qualsiasi applicazione che funziona con PostgreSQL può funzionare anche con AlloyDB Omni, senza bisogno di modifiche.
Per connetterti al server di database AlloyDB Omni, esponi il networking dal container Docker di AlloyDB Omni alla macchina host aggiungendo --network=host
o -p 5432:5432
al comando docker run
o podman run
quando avvii AlloyDB Omni.
Per selezionare un numero di porta personalizzato, utilizza -p [HOST_PORT]:5432
quando avvii AlloyDB Omni. Poi, utilizza qualsiasi client o libreria di codice compatibile con PostgreSQL per connetterti alla porta 5432
o al numero di porta personalizzato che hai specificato.
Dopo aver effettuato la connessione al server di database, puoi definire, interrogare e modificare i tuoi database utilizzando query DML e SQL utilizzando i protocolli di comunicazione PostgreSQL standard.
Poiché AlloyDB Omni viene eseguito nel tuo ambiente, puoi controllare la modalità di connessione ad AlloyDB Omni. Ciò include la possibilità di consentire o limitare l'accesso alla rete a questo servizio in base alle esigenze della tua applicazione, proprio come faresti con un normale server PostgreSQL.
Connettiti ad AlloyDB Omni in esecuzione su Kubernetes
L'operatore AlloyDB Omni Kubernetes consente le connessioni al cluster di database dall'interno dello stesso cluster Kubernetes, utilizzando facoltativamente i certificati per l'autenticazione.
Connettiti utilizzando psql
preinstallato
Puoi creare una connessione di test utilizzando un client psql
già installato sul pod che esegue il database.
Per farlo, esegui questi comandi:
export DBPOD=`kubectl get pod --selector=alloydbomni.internal.dbadmin.goog/dbcluster=DB_CLUSTER_NAME,alloydbomni.internal.dbadmin.goog/task-type=database -n DB_CLUSTER_NAMESPACE -o jsonpath='{.items[0].metadata.name}'`
kubectl exec -ti $DBPOD -n DB_CLUSTER_NAMESPACE -c database -- psql -h localhost -U postgres
Sostituisci DB_CLUSTER_NAME
con il nome del cluster di database. È lo stesso nome del cluster di database che hai dichiarato quando lo hai
creato.
Puoi saltare l'impostazione di DB_CLUSTER_NAMESPACE
se hai creato il cluster di database nello spazio dei nomi predefinito.
Dopo aver inserito il comando, il server di database ti chiede una password.
Inserisci la password di cui hai fornito la versione con codifica Base64
come secret Kubernetes durante la creazione del cluster
di database. Ad esempio, se hai
creato il cluster di database con un secret Q2hhbmdlTWUxMjM=
, allora
la password di accesso da utilizzare qui è ChangeMe123
.
L'operatore AlloyDB Omni ti connette al server come ruolo utente postgres
e visualizza un prompt dei comandi postgres=#
. Ora puoi eseguire psql
comandi
e query SQL.
Per uscire da psql
, esegui il comando \q
.
Connettersi da un pod separato nello stesso cluster
Il pod che esegue il cluster di database AlloyDB Omni consente le connessioni dall'interno dello stesso cluster Kubernetes, per impostazione predefinita. Come best practice, ti consigliamo di proteggere tutte le connessioni al cluster di database utilizzando TLS.
Per fornire il tuo certificato TLS del server, specifica un secret del certificato durante la configurazione del cluster di database. Se non specifichi un secret del certificato, l'operatore Kubernetes di AlloyDB Omni crea un secret del certificato TLS per te, in base a un certificato firmato da un'autorità di certificazione autofirmata. In entrambi i casi, puoi richiedere al pod client del database di richiedere la convalida del certificato a ogni connessione, garantendo la sicurezza TLS.
Per stabilire connessioni sicure al database utilizzando TLS, esegui le seguenti azioni:
Nel manifest che definisce il pod che effettua le connessioni client, specifica un secret del certificato TLS. Può essere uno dei seguenti:
Un secret del certificato TLS che hai già creato nel tuo cluster Kubernetes. Per ulteriori informazioni sull'utilizzo dei secret dei certificati TLS in Kubernetes, consulta Secret TLS.
Il secret del certificato predefinito creato dall'operatore Kubernetes di AlloyDB Omni per te, denominato
DB_CLUSTER_NAME-ca-cert
, se non specifichi un secret TLS come parte del manifest del cluster di database.
Ogni volta che il pod client si connette al cluster di database, deve definire le seguenti variabili di ambiente prima di stabilire la connessione:
Imposta
PGSSLMODE
su"verify-ca"
.Imposta
PGSSLROOTCERT
sul percorso assoluto, nel file system del pod client, del fileca.crt
pertinente.
Il seguente manifest di esempio mostra come configurare un pod che installa l'immagine PostgreSQL ufficiale, che include il client della riga di comando psql
. L'esempio
presuppone che tu non specifichi alcuna configurazione del secret TLS nel manifest
che definisce il cluster di database. Pertanto, l'operatore Kubernetes di
AlloyDB Omni utilizza il secret TLS predefinito, denominato
dbs-al-cert-DB_CLUSTER_NAME
.
apiVersion: v1
kind: Pod
metadata:
name: postgres
namespace: DB_CLUSTER_NAMESPACE
spec:
containers:
- image: "docker.io/library/postgres:latest"
command:
- "sleep"
- "604800"
imagePullPolicy: IfNotPresent
name: db-client
volumeMounts:
- name: ca-cert
mountPath: "/DB_CLUSTER_NAME-ca-cert"
readOnly: true
volumes:
- name: ca-cert
secret:
secretName: dbs-al-cert-DB_CLUSTER_NAME
restartPolicy: Always
Sostituisci quanto segue:
DB_CLUSTER_NAME
: il nome del cluster di database. È lo stesso nome del cluster di database che hai dichiarato quando l'hai creato.DB_CLUSTER_NAMESPACE
(facoltativo): lo spazio dei nomi in cui hai creato il cluster di database.
Ora puoi utilizzare il pod per connetterti in modo sicuro al cluster di database seguendo questi passaggi:
Determina l'indirizzo IP interno del cluster di database:
kubectl get dbclusters.alloydbomni.dbadmin.goog -n DB_CLUSTER_NAMESPACE
L'output è simile al seguente:
NAME PRIMARYENDPOINT PRIMARYPHASE DBCLUSTERPHASE DB_CLUSTER_NAME IP_ADDRESS Ready DBClusterReady
Prendi nota di
IP_ADDRESS
e utilizzalo nel passaggio successivo.Utilizza
psql
per connetterti al cluster dal pod client, impostando le variabili di ambiente che attivano e richiedono la verifica del certificato TLS:kubectl exec -it postgres -n DB_CLUSTER_NAMESPACE -- bash
PGSSLMODE="verify-ca" PGSSLROOTCERT=/DB_CLUSTER_NAME-ca-cert/ca.crt psql -h IP_ADDRESS -p 5432 -U postgres -d postgres
Sostituisci
IP_ADDRESS
con l'indirizzo IP interno che hai determinato nel passaggio precedente.