Installer AlloyDB Omni sur Kubernetes

Sélectionnez une version de la documentation :

Cette page présente l'opérateur Kubernetes AlloyDB Omni et explique comment l'utiliser pour déployer AlloyDB Omni sur un cluster Kubernetes. Cette page part du principe que vous connaissez les opérations Kubernetes de base.

Pour obtenir des instructions sur l'installation d'AlloyDB Omni dans un environnement Linux standard, consultez Installer AlloyDB Omni.

Présentation

Pour déployer AlloyDB Omni sur un cluster Kubernetes, installez l'opérateur AlloyDB Omni, une extension de l'API Kubernetes fournie par Google.

Vous configurez et contrôlez un cluster de base de données AlloyDB Omni basé sur Kubernetes en associant des fichiers manifestes déclaratifs à l'utilitaire kubectl, comme pour tout autre déploiement basé sur Kubernetes. Vous n'utilisez pas la CLI AlloyDB Omni, qui est destinée aux déploiements sur des machines Linux individuelles et non sur des clusters Kubernetes.

Compatibilité de l'opérateur AlloyDB Omni 1.1.0

La version 1.1.0 de l'opérateur AlloyDB Omni n'est pas compatible avec les versions 15.5.3 et 15.5.4 d'AlloyDB Omni. Si vous utilisez l'une de ces versions d'AlloyDB Omni, un message d'erreur semblable à celui-ci peut s'afficher :

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

Avant de commencer

Vous devez avoir accès aux éléments suivants :

Chaque nœud du cluster Kubernetes doit disposer des éléments suivants :

  • Au moins deux processeurs x86 ou AMD64.
  • Au moins 8 Go de RAM.
  • Version 4.18 ou ultérieure du noyau Linux.
  • Le groupe de contrôle v2 (cgroup v2) est activé.

Installer l'opérateur AlloyDB Omni

Pour installer l'opérateur AlloyDB Omni, procédez comme suit :

  1. Définissez plusieurs variables d'environnement :

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

    gcloud storage cp gs://$GCS_BUCKET/$HELM_PATH ./ --recursive
  3. Installez l'opérateur AlloyDB Omni :

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

    Si l'installation aboutit, la sortie suivante devrait s'afficher :

    NAME: alloydbomni-operator
    LAST DEPLOYED: CURRENT_TIMESTAMP
    NAMESPACE: alloydb-omni-system
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None
    
  4. Effectuez le nettoyage en supprimant le fichier d'installation de l'opérateur AlloyDB Omni téléchargé. Le fichier est nommé alloydbomni-operator-VERSION_NUMBER.tgz et se trouve dans votre répertoire de travail actuel.

Configurer le stockage GDC connecté

Pour installer l'opérateur AlloyDB Omni sur GDC Connected, vous devez suivre des étapes supplémentaires pour configurer le stockage, car les clusters GDC Connected ne définissent pas de classe de stockage par défaut. Vous devez définir une classe de stockage par défaut avant de créer un cluster de bases de données AlloyDB Omni.

Pour savoir comment définir Symcloud Storage comme classe de stockage par défaut, consultez Définir Symcloud Storage comme classe de stockage par défaut.

Pour savoir comment modifier la classe de stockage par défaut pour toutes les autres classes de stockage, consultez Modifier la ressource StorageClass par défaut.

Procédure de réconciliation Red Hat OpenShift

Si vous utilisez Red Hat OpenShift 4.12 ou version ultérieure, vous devez suivre les étapes ci-dessous après avoir installé l'opérateur AlloyDB Omni et avant de créer un cluster de bases de données AlloyDB Omni sur le cluster Kubernetes. Sinon, vous pouvez ignorer ces étapes.

  1. Ajoutez des autorisations pour mettre à jour les finaliseurs d'instance AlloyDB Omni en modifiant le rôle de cluster system:controller:statefulset-controller comme suit :

    kubectl edit clusterrole system:controller:statefulset-controller
  2. Dans l'éditeur de texte, ajoutez les éléments suivants à la fin du rôle de cluster :

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

    Le contrôleur StatefulSet doit disposer d'autorisations supplémentaires pour mettre à jour les finaliseurs d'instance ajoutés au rôle de cluster, car OwnerReferencesPermissionEnforcement est activé dans Red Hat OpenShift. Sans l'autorisation de mettre à jour les finaliseurs d'instance, le contrôleur StatefulSet ne parvient pas à créer la requête PersistentVolumeClaim (PVC) de la base de données et affiche le message d'erreur suivant dans les événements StatefulSet de la base de données :

    Warning  FailedCreate  [...] cannot set blockOwnerDeletion if an ownerReference refers to a resource you can't set finalizers on
    
  3. Ajoutez des autorisations pour mettre à jour les finaliseurs DBInstance AlloyDB Omni en modifiant le rôle de cluster fleet-manager-role :

    kubectl edit clusterrole fleet-manager-role
  4. Dans l'éditeur de texte, ajoutez les éléments suivants à la fin du rôle de cluster :

    - apiGroups:
      - alloydbomni.dbadmin.goog
      resources:
      - dbinstances/finalizers
      verbs:
      - update
    
  5. Ajoutez la contrainte de contexte de sécurité anyuid au compte de service default dans votre projet Red Hat OpenShift comme suit :

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

    Vous devez autoriser le compte de service default à utiliser la contrainte de contexte de sécurité anyuid, car dans le pod de base de données, le conteneur init s'exécute en tant que root et les autres conteneurs s'exécutent avec des ID utilisateur spécifiques. Si vous n'êtes pas autorisé à utiliser anyuid, le contrôleur StatefulSet ne parvient pas à créer le PVC de la base de données et affiche le message d'erreur suivant dans les événements StatefulSet de la base de données :

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

Créer un cluster de bases de données

Un cluster de bases de données AlloyDB Omni contient toutes les ressources de stockage et de calcul nécessaires à l'exécution d'un serveur AlloyDB Omni, y compris le serveur principal, les réplicas et toutes vos données.

Après avoir installé l'opérateur AlloyDB Omni sur votre cluster Kubernetes, vous pouvez créer un cluster de bases de données AlloyDB Omni sur le cluster Kubernetes en appliquant un fichier manifeste semblable à celui-ci :

apiVersion: v1
kind: Secret
metadata:
  name: db-pw-DB_CLUSTER_NAME
type: Opaque
data:
  DB_CLUSTER_NAME: "ENCODED_PASSWORD"
---
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
  name: DB_CLUSTER_NAME
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

Remplacez les éléments suivants :

  • DB_CLUSTER_NAME : nom de ce cluster de bases de données, par exemple my-db-cluster.

  • ENCODED_PASSWORD : mot de passe de connexion à la base de données pour le rôle utilisateur postgres par défaut, encodé sous forme de chaîne base64 (par exemple, Q2hhbmdlTWUxMjM= pour ChangeMe123).

  • CPU_COUNT : nombre de processeurs disponibles pour chaque instance de base de données de ce cluster de bases de données.

  • MEMORY_SIZE : quantité de mémoire par instance de base de données de ce cluster de bases de données. Nous vous recommandons de définir cette valeur sur 8 gigaoctets par processeur. Par exemple, si vous avez défini cpu sur 2 plus haut dans ce fichier manifeste, nous vous recommandons de définir memory sur 16Gi.

  • DISK_SIZE : taille du disque par instance de base de données, par exemple 10Gi.

Une fois ce fichier manifeste appliqué, votre cluster Kubernetes contient un cluster de bases de données AlloyDB Omni avec la configuration de mémoire, de processeur et de stockage spécifiée. Pour établir une connexion de test avec le nouveau cluster de bases de données, consultez Se connecter à l'aide de psql préinstallé.

Pour en savoir plus sur les fichiers manifestes Kubernetes et sur la façon de les appliquer, consultez Gérer les ressources.

Étapes suivantes