Exécuter et se connecter à AlloyDB Omni

Sélectionnez une version de la documentation :

Cette page explique comment exécuter AlloyDB Omni et s'y connecter après l'avoir déployé sur votre cluster Kubernetes.

Les instructions spécifiques à Kubernetes sur cette page supposent que vous connaissez les bases de l'utilisation de Kubernetes.

Exécuter AlloyDB Omni

Les procédures que vous utilisez pour exécuter AlloyDB Omni dépendent de si vous exécutez AlloyDB Omni sur un cluster Kubernetes.

Démarrer AlloyDB Omni

Démarrez un cluster de bases de données arrêté en définissant isStopped sur false dans la définition de son fichier manifeste.

Vous pouvez effectuer cette opération en ligne de commande à l'aide de kubectl :

  kubectl patch dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME \
  -p '{"spec":{"primarySpec":{"isStopped":false}}}' --type=merge  -n DB_CLUSTER_NAMESPACE

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 avez créé ce cluster de bases de données, par exemple my-db-cluster-namespace.

Vérifier l'état d'AlloyDB Omni

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

Remplacez les éléments suivants :

Arrêter AlloyDB Omni

Pour arrêter un cluster de bases de données, définissez isStopped sur true dans sa définition de fichier manifeste.

Vous pouvez effectuer cette opération en ligne de commande à l'aide de kubectl :

  kubectl patch dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -p '{"spec":{"primarySpec":{"isStopped":true}}}' --type=merge -n DB_CLUSTER_NAMESPACE

Remplacez les éléments suivants :

*   `DB_CLUSTER_NAME`: the name of this database cluster—for example, `my-db-cluster`.
*   `DB_CLUSTER_NAMESPACE` (Optional): the namespace where you created this database cluster—for example, `my-db-cluster-namespace`.

Se connecter à AlloyDB Omni exécuté sur Kubernetes

L'opérateur Kubernetes AlloyDB Omni permet les connexions au cluster de bases de données à partir du même cluster Kubernetes, en utilisant éventuellement des certificats pour l'authentification.

Se connecter à l'aide de psql préinstallé

Vous pouvez établir une connexion de test à l'aide d'un client psql déjà installé sur le pod exécutant la base de données.

Pour ce faire, exécutez les commandes suivantes :

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

Remplacez DB_CLUSTER_NAME par le nom de votre cluster de bases de données. Il s'agit du même nom de cluster de base de données que vous avez déclaré lors de sa création.

Vous pouvez ignorer la définition de DB_CLUSTER_NAMESPACE si vous avez créé le cluster de bases de données dans l'espace de noms par défaut.

Une fois la commande saisie, le serveur de base de données vous invite à saisir un mot de passe. Saisissez le mot de passe dont la version encodée en base64 a été fournie en tant que secret Kubernetes lors de la création du cluster de bases de données. Par exemple, si vous avez créé le cluster de bases de données avec un secret Q2hhbmdlTWUxMjM=, le mot de passe de connexion à utiliser ici est ChangeMe123.

L'opérateur AlloyDB Omni vous connecte au serveur en tant que rôle utilisateur postgres et affiche une invite de commande postgres=#. Vous pouvez désormais exécuter des commandes psql et des requêtes SQL.

Pour quitter psql, exécutez la commande \q.

Se connecter depuis un autre pod du même cluster

Par défaut, le pod exécutant le cluster de bases de données AlloyDB Omni autorise les connexions depuis le même cluster Kubernetes. Nous vous recommandons de sécuriser toutes les connexions au cluster de bases de données à l'aide de TLS.

Pour fournir votre propre certificat TLS de serveur, spécifiez un secret de certificat lorsque vous configurez votre cluster de bases de données. Si vous ne spécifiez pas de secret de certificat, l'opérateur Kubernetes AlloyDB Omni en crée un pour vous, basé sur un certificat signé par une autorité de certification autosignée. Dans les deux cas, vous pouvez exiger que le pod client de votre base de données exige la validation du certificat à chaque connexion, ce qui garantit la sécurité TLS.

Pour établir des connexions sécurisées à la base de données à l'aide de TLS, procédez comme suit :

  • Dans le fichier manifeste qui définit le pod établissant les connexions client, spécifiez un secret de certificat TLS. Il peut s'agir de l'un des suivants :

    • Un secret de certificat TLS que vous avez déjà créé dans votre cluster Kubernetes. Pour en savoir plus sur l'utilisation des secrets de certificat TLS dans Kubernetes, consultez Secrets TLS.

    • Le secret de certificat par défaut que l'opérateur AlloyDB Omni Kubernetes crée pour vous, nommé DB_CLUSTER_NAME-ca-cert, si vous ne spécifiez pas de secret TLS dans le fichier manifeste de votre cluster de bases de données.

  • Chaque fois que votre pod client se connecte au cluster de bases de données, il doit définir les variables d'environnement suivantes avant d'établir la connexion :

    • Définissez PGSSLMODE sur "verify-ca".

    • Définissez PGSSLROOTCERT sur le chemin absolu, dans le système de fichiers du pod client, du fichier ca.crt concerné.

L'exemple de fichier manifeste suivant montre comment configurer un pod qui installe l'image PostgreSQL officielle, qui inclut le client en ligne de commande psql. L'exemple suppose que vous ne spécifiez aucune configuration de secret TLS dans le fichier manifeste qui définit votre cluster de bases de données. Par conséquent, l'opérateur Kubernetes AlloyDB Omni utilise le secret TLS par défaut, qui est nommé 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

Remplacez les éléments suivants :

  • DB_CLUSTER_NAME : nom de votre cluster de bases de données. Il s'agit du même nom de cluster de base de données que vous avez déclaré lors de sa création.
  • DB_CLUSTER_NAMESPACE (facultatif) : espace de noms dans lequel vous avez créé votre cluster de bases de données.

Vous pouvez maintenant utiliser le pod pour vous connecter de manière sécurisée à votre cluster de bases de données en procédant comme suit :

  1. Déterminez l'adresse IP interne de votre cluster de bases de données :

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

    Le résultat se présente comme suit :

    NAME              PRIMARYENDPOINT   PRIMARYPHASE   DBCLUSTERPHASE
    DB_CLUSTER_NAME   IP_ADDRESS        Ready          DBClusterReady
    

    Notez IP_ADDRESS et utilisez-le à l'étape suivante.

  2. Utilisez psql pour vous connecter à votre cluster depuis le pod client, en définissant les variables d'environnement qui activent et exigent la validation du certificat 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

    Remplacez IP_ADDRESS par l'adresse IP interne que vous avez déterminée à l'étape précédente.

Étapes suivantes