Installa AlloyDB Omni su Kubernetes

Questa pagina fornisce una panoramica dell'operatore Kubernetes AlloyDB Omni, con le istruzioni per utilizzarlo per eseguire il deployment di AlloyDB Omni su un cluster Kubernetes. Questa pagina presuppone una conoscenza di base del funzionamento di Kubernetes.

Per istruzioni su come installare AlloyDB Omni in un ambiente Linux standard, consulta Installare AlloyDB Omni.

Panoramica

Per eseguire il deployment di AlloyDB Omni su un cluster Kubernetes, installa l'operatore AlloyDB Omni, un'estensione dell'API Kubernetes fornita da Google.

Puoi configurare e controllare un cluster di database AlloyDB Omni basato su Kubernetes accoppiando file manifest dichiarativi con l'utilità kubectl, come per qualsiasi altro deployment basato su Kubernetes. Non utilizzi la CLI AlloyDB Omni, che è progettata per i deployment su singole macchine Linux e non su cluster Kubernetes.

Compatibilità con l'operatore AlloyDB Omni 1.1.0 (e versioni successive)

L'operatore AlloyDB Omni versione 1.1.0 non è compatibile con le versioni 15.5.3 e 15.5.4 di AlloyDB Omni. Se utilizzi una di queste versioni di AlloyDB Omni, potresti ricevere un errore simile al seguente:

Error from server (Forbidden): error when creating "[...]/dbcluster.yaml": admission webhook "vdbcluster.alloydbomni.dbadmin.goog" denied the request: unsupported database version 15.5.3

Prima di iniziare

Devi disporre dell'accesso a quanto segue:

Ogni nodo del cluster Kubernetes deve avere quanto segue:

  • Almeno due CPU x86 o AMD64.
  • Almeno 8 GB di RAM.
  • Kernel Linux versione 4.18 o successive.
  • Gruppo di controllo v2 (cgroup v2) abilitato.

Installa l'operatore AlloyDB Omni

Per installare l'operatore AlloyDB Omni:

  1. Definisci diverse variabili di ambiente:

    export GCS_BUCKET=alloydb-omni-operator
    export HELM_PATH=$(gcloud storage cat gs://$GCS_BUCKET/latest)
    export OPERATOR_VERSION="${HELM_PATH%%/*}"
  2. Scarica l'operatore AlloyDB Omni:

    gcloud storage cp gs://$GCS_BUCKET/$HELM_PATH ./ --recursive
  3. Installa l'operatore AlloyDB Omni:

    helm install alloydbomni-operator alloydbomni-operator-${OPERATOR_VERSION}.tgz \
    --create-namespace \
    --namespace alloydb-omni-system \
    --atomic \
    --timeout 5m

    Se l'installazione è andata a buon fine, viene visualizzato il seguente output:

    NAME: alloydbomni-operator
    LAST DEPLOYED: CURRENT_TIMESTAMP
    NAMESPACE: alloydb-omni-system
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None
    
  4. Esegui la pulizia eliminando il file di installazione dell'operatore AlloyDB Omni scaricato. Il file si chiama alloydbomni-operator-VERSION_NUMBER.tgz e si trova nella directory di lavoro corrente.

Configurare lo spazio di archiviazione collegato al GDC

Per installare l'operatore AlloyDB Omni su GDC connected, devi seguire ulteriori passaggi per configurare lo spazio di archiviazione perché i cluster GDC connected non impostano una classe di archiviazione predefinita. Devi impostare una classe di archiviazione predefinita prima di creare un cluster di database AlloyDB Omni.

Per scoprire come impostare Symcloud Storage come classe di archiviazione predefinita, consulta Impostare Symcloud Storage come classe di archiviazione predefinita.

Per ulteriori informazioni sulla modifica del valore predefinito per tutte le altre classi di archiviazione, consulta Modificare la classe di archiviazione predefinita.

Passaggi di riconciliazione di Red Hat OpenShift

Se utilizzi Red Hat OpenShift 4.12 o versioni successive, devi completare i passaggi riportati di seguito dopo aver installato l'operatore AlloyDB Omni e prima di creare un cluster di database AlloyDB Omni sul cluster Kubernetes. In caso contrario, puoi saltare questi passaggi.

  1. Aggiungi le autorizzazioni per aggiornare i finalizzatori delle istanze AlloyDB Omni modificando il ruolo del cluster system:controller:statefulset-controller come segue:

    kubectl edit clusterrole system:controller:statefulset-controller
  2. Nell'editor di testo, aggiungi quanto segue alla fine del ruolo del cluster:

    - apiGroups:
      - alloydbomni.internal.dbadmin.goog
      resources:
      - instances/finalizers
      verbs:
      - update
    - apiGroups:
      - alloydbomni.internal.dbadmin.goog
      resources:
      - backuprepositories/finalizers
      verbs:
      - update
    

    Il controller StatefulSet deve disporre di autorizzazioni aggiuntive per aggiornare i finalizzatori delle istanze aggiunti al ruolo del cluster poiché in Red Hat OpenShift è abilitato OwnerReferencesPermissionEnforcement. Senza l'autorizzazione per aggiornare i finalizzatori dell'istanza, il controller StatefulSet non riesce a creare la richiesta di volume permanente (PVC) del database con il seguente messaggio di errore rilevato negli eventi StatefulSet del database:

    Warning  FailedCreate  [...] cannot set blockOwnerDeletion if an ownerReference refers to a resource you can't set finalizers on
    
  3. Aggiungi la limitazione del contesto di sicurezza anyuid all'account di servizio default nel progetto Red Hat OpenShift come segue:

    oc adm policy add-scc-to-user anyuid system:serviceaccount:DB_CLUSTER_NAMESPACE:default

    Devi consentire all'account di servizio default di utilizzare la limitazione del contesto di sicurezza anyuid poiché, all'interno del pod del database, il contenitore init viene eseguito come root e gli altri contenitori vengono eseguiti con ID utente specifici. Senza l'autorizzazione per l'utilizzo di anyuid, il controller StatefulSet non riesce a creare il PVC del database con il seguente messaggio di errore rilevato negli eventi StatefulSet del database:

    Warning  FailedCreate  [...]    unable to validate against any security context constraint
    

Creare un cluster di database

Un cluster di database AlloyDB Omni contiene tutte le risorse di archiviazione e di calcolo necessarie per eseguire un server AlloyDB Omni, tra cui il server principale, eventuali repliche e tutti i dati.

Dopo aver installato l'operatore AlloyDB Omni sul cluster Kubernetes, puoi creare un cluster di database AlloyDB Omni sul cluster Kubernetes applicando un manifest simile al seguente:

apiVersion: v1
kind: Secret
metadata:
  name: db-pw-DB_CLUSTER_NAME
  namespace: DB_CLUSTER_NAMESPACE
type: Opaque
data:
  DB_CLUSTER_NAME: "ENCODED_PASSWORD"
---
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
  name: DB_CLUSTER_NAME
  namespace: DB_CLUSTER_NAMESPACE
spec:
  databaseVersion: "15.7.0"
  primarySpec:
    adminUser:
      passwordRef:
        name: db-pw-DB_CLUSTER_NAME
    resources:
      cpu: CPU_COUNT
      memory: MEMORY_SIZE
      disks:
      - name: DataDisk
        size: DISK_SIZE

Sostituisci quanto segue:

  • DB_CLUSTER_NAME: il nome di questo cluster di database, ad esempio my-db-cluster.

  • DB_CLUSTER_NAMESPACE (facoltativo): il nome dello spazio dei nomi in cui vuoi creare il cluster di database, ad esempio my-db-cluster-namespace.

  • ENCODED_PASSWORD: la password di accesso al database per il ruolo postgres utente predefinito, codificata come stringa base64, ad esempio Q2hhbmdlTWUxMjM= per ChangeMe123.

  • CPU_COUNT: il numero di CPU disponibili per ogni istanza di database in questo cluster di database.

  • MEMORY_SIZE: la quantità di memoria per istanza di database di questo cluster di database. Ti consigliamo di impostare questo valore su 8 gigabyte per CPU. Ad esempio, se hai impostato cpu su 2 in precedenza in questo manifest, ti consigliamo di impostare memory su 16Gi.

  • DISK_SIZE: le dimensioni del disco per istanza di database, ad esempio 10Gi.

Dopo aver applicato questo manifest, il cluster Kubernetes contiene un cluster di database AlloyDB Omni con la configurazione specificata di memoria, CPU e spazio di archiviazione. Per stabilire una connessione di prova con il nuovo cluster di database, consulta Eseguire la connessione utilizzando psql preinstallato.

Per ulteriori informazioni sui manifest di Kubernetes e su come applicarli, consulta Gestire le risorse.

Passaggi successivi