Esegui e connettiti ad AlloyDB Omni

Seleziona una versione della documentazione:

Questa pagina descrive come eseguire e connettersi ad AlloyDB Omni dopo averlo deployato nel cluster Kubernetes.

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 su un cluster Kubernetes.

Avvia AlloyDB Omni

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 esempio my-db-cluster.
  • DB_CLUSTER_NAMESPACE (facoltativo): lo spazio dei nomi in cui hai creato questo cluster di database, ad esempio my-db-cluster-namespace.

Controlla lo stato di AlloyDB Omni

  kubectl get dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -n DB_CLUSTER_NAMESPACE

Sostituisci quanto segue:

Arresta AlloyDB Omni

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 esempio my-db-cluster.
  • DB_CLUSTER_NAMESPACE (facoltativo): lo spazio dei nomi in cui hai creato questo cluster di database, ad esempio my-db-cluster-namespace.

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 file ca.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 tuo 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:

  1. 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.

  2. 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.

Passaggi successivi