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 suppose une connaissance de base du fonctionnement de Kubernetes.

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

Compatibilité de l'opérateur AlloyDB Omni 1.1.0

L'opérateur AlloyDB Omni version 1.1.0 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, vous pouvez recevoir une erreur semblable à la suivante :

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 mémoire RAM.
  • Linux Kernel 4.18 ou une version ultérieure.
  • Le groupe de contrôle v2 (cgroup v2) 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. Nettoyez l'installation 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 connecté GDC

Pour installer l'opérateur AlloyDB Omni sur GDC connecté, vous devez suivre des étapes supplémentaires pour configurer le stockage, car les clusters GDC connectés 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 en savoir plus sur la modification de la valeur par défaut pour toutes les autres classes de stockage, consultez Modifier la ressource StorageClass par défaut.

Étapes 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. Dans le cas contraire, veuillez 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 Red Hat OpenShift a activé OwnerReferencesPermissionEnforcement. Sans l'autorisation de mettre à jour les finaliseurs d'instance, le contrôleur StatefulSet ne parvient pas à créer la revendication de volume persistant (PVC) de la base de données avec le message d'erreur suivant, qui se trouve 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 la base de données, le conteneur d'initialisation s'exécute en tant que racine et les autres conteneurs s'exécutent avec des ID utilisateur spécifiques. Sans l'autorisation d'utiliser anyuid, le contrôleur StatefulSet ne parvient pas à créer la PVC de la base de données avec le message d'erreur suivant, qui se trouve 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 pour exécuter un serveur AlloyDB Omni, y compris le serveur principal, les réplicas et toutes vos données.

Une fois que vous avez 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 de 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.

Pour en savoir plus sur les fichiers manifestes Kubernetes et sur la manière de les appliquer, consultez Gérer les ressources.

Étape suivante