Installer AlloyDB Omni sur Kubernetes

Cette page présente l'opérateur Kubernetes AlloyDB Omni, avec des instructions pour l'utiliser afin de déployer AlloyDB Omni sur un cluster Kubernetes. Cette page part du principe que vous connaissez les principes de base 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 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é avec l'opérateur AlloyDB Omni 1.1.0 (et versions ultérieures)

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:

  • Deux processeurs x86 ou AMD64 minimum
  • Au moins 8 Go de RAM
  • Version du noyau Linux 4.18 ou ultérieure
  • 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, le résultat suivant s'affiche:

    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 se nomme 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 un cluster connecté à GDC, vous devez suivre des étapes supplémentaires pour configurer le stockage, car les clusters connectés à GDC 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 base de données AlloyDB Omni.

Pour savoir comment définir Symcloud Storage comme classe de stockage par défaut, consultez la section 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 la section Modifier la ressource StorageClass par défaut.

Procédure de rapprochement Red Hat OpenShift

Si vous utilisez Red Hat OpenShift 4.12 ou une 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 base 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 ce qui suit à 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 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 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 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:DB_CLUSTER_NAMESPACE: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 d'initialisation s'exécute en tant que root et les autres conteneurs s'exécutent avec des ID utilisateur spécifiques. Sans autorisation d'utiliser anyuid, le contrôleur StatefulSet ne parvient pas à créer le PVC de la base de données, avec 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 base de données

Un cluster de base 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 éventuels 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 base 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
  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

Remplacez les éléments suivants :

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

  • DB_CLUSTER_NAMESPACE (facultatif): espace de noms dans lequel vous souhaitez créer le cluster de base de données (par exemple, my-db-cluster-namespace).

  • ENCODED_PASSWORD: mot de passe de connexion à la base de données pour le rôle utilisateur postgres par défaut, encodé en tant que 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 Go par processeur. Par exemple, si vous avez défini cpu sur 2 plus tôt 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).

Après avoir appliqué ce fichier manifeste, votre cluster Kubernetes contient un cluster de base 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 base de données, consultez Se connecter à l'aide de psql préinstallé.

Pour en savoir plus sur les fichiers manifestes Kubernetes et comment les appliquer, consultez la section Gérer les ressources.

Étape suivante