Exécuter et se connecter à AlloyDB Omni

Cette page explique comment exécuter et vous connecter à AlloyDB Omni après l'avoir installé sur votre propre machine ou déployé dans votre cluster Kubernetes.

Avant de commencer

Serveur unique

La plupart des commandes de cette page utilisent la CLI AlloyDB Omni.

Pour installer cet outil de ligne de commande sur votre machine, consultez Installer la CLI AlloyDB Omni.

Kubernetes

Vous devez installer l'opérateur Kubernetes AlloyDB Omni sur votre cluster Kubernetes pour effectuer les tâches décrites sur cette page.

Les instructions spécifiques à Kubernetes de cette page supposent que vous connaissez les principes de base de l'exploitation 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 dans un conteneur sur un seul serveur ou sur un cluster Kubernetes. Cette section répartit ses instructions entre ces styles de déploiement.

Serveur unique

L'installation d'AlloyDB Omni configure un service système appelé alloydb-dataplane, qui est configuré pour se lancer à chaque démarrage de votre machine.

Pour contrôler et surveiller de manière basique AlloyDB Omni, utilisez la commande sudo alloydb, comme illustré dans les sections suivantes.

Kubernetes

Pour contrôler et surveiller AlloyDB Omni, mettez à jour les fichiers manifestes de votre cluster Kubernetes, comme indiqué dans les sections suivantes.

Démarrer AlloyDB Omni

Serveur unique

sudo alloydb database-server start

Pour effectuer un test de connexion, consultez Se connecter à l'aide de psql conteneurisé.

Kubernetes

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

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

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

Vérifier l'état d'AlloyDB Omni

Serveur unique

sudo alloydb database-server status

Kubernetes

kubectl get dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME

Remplacez DB_CLUSTER_NAME par le nom de votre cluster de bases de données.

Arrêter AlloyDB Omni

Serveur unique

sudo alloydb database-server stop

Kubernetes

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

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

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

Désactiver le lancement au démarrage

L'exécution de la commande suivante empêche AlloyDB Omni de démarrer automatiquement au démarrage de votre machine.

Serveur unique

sudo systemctl disable alloydb-dataplane

Kubernetes

Cette tâche ne s'applique pas lorsque vous utilisez l'opérateur Kubernetes AlloyDB Omni.

Réactiver le lancement au démarrage

Serveur unique

sudo systemctl enable alloydb-dataplane

Kubernetes

Cette tâche ne s'applique pas lorsque vous utilisez l'opérateur Kubernetes AlloyDB Omni.

Se connecter à AlloyDB Omni exécuté sur un seul serveur

Le conteneur AlloyDB Omni inclut sa propre copie de psql qui vous permet d'ouvrir une session de shell SQL interactive avec son serveur de base de données.

Vous pouvez également vous connecter à AlloyDB Omni en dehors du conteneur, à l'aide du logiciel compatible avec PostgreSQL de votre choix.

Pour savoir comment vous connecter à un cluster de base de données AlloyDB Omni exécuté sur un cluster Kubernetes, consultez Se connecter à AlloyDB Omni exécuté sur Kubernetes.

Se connecter à l'aide de psql conteneurisé

Pour vous connecter au serveur de base de données AlloyDB Omni à l'aide de sa propre copie conteneurisée de psql, exécutez la commande suivante:

Serveur unique

docker exec -it pg-service psql -h localhost -U postgres

Cette commande 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 à l'aide de vos propres applications

Toute application compatible avec PostgreSQL peut également l'être avec AlloyDB Omni, sans aucune modification.

Pour vous connecter au serveur de base de données AlloyDB Omni, utilisez un client ou une bibliothèque de code compatible avec PostgreSQL pour vous connecter au port 5432 (port de serveur de base de données PostgreSQL par défaut) de la machine exécutant AlloyDB Omni.

Cela fonctionne, car le conteneur AlloyDB Omni expose son propre port 5432 au même port de la machine sur laquelle il s'exécute.

Après vous être connecté au serveur de base de données, vous pouvez définir, interroger et modifier vos bases de données à l'aide de requêtes LMD et SQL à l'aide de protocoles de communication PostgreSQL standards.

Étant donné qu'AlloyDB Omni s'exécute dans votre propre environnement, vous pouvez contrôler la manière dont vous vous connectez à AlloyDB Omni. Cela inclut l'autorisation ou la restriction de l'accès réseau à ce service en fonction des besoins de votre application, comme vous le feriez avec un serveur PostgreSQL ordinaire.

Se connecter à AlloyDB Omni exécuté sur Kubernetes

L'opérateur Kubernetes AlloyDB Omni autorise les connexions au cluster de base de données à partir du même cluster Kubernetes, éventuellement à l'aide de 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 -o jsonpath='{.items[0].metadata.name}'`
kubectl exec -ti $DBPOD -c database -- /bin/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.

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 vous avez fourni la version encodée en base64 en tant que secret Kubernetes lors de la création du cluster de base de données. Par exemple, si vous avez créé le cluster de base 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 à partir d'un pod distinct du même cluster

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

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

Pour établir des connexions de base de données sécurisé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 certificats TLS dans Kubernetes, consultez la section Secrets TLS.

    • Le secret de certificat par défaut que l'opérateur Kubernetes Omni AlloyDB 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 base de données.

  • Chaque fois que votre pod client se connecte au cluster de base 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 approprié.

L'exemple de fichier manifeste suivant montre comment configurer un pod qui installe l'image PostgreSQL officielle, qui inclut le client de ligne de commande psql. L'exemple suppose que vous ne spécifiez aucune configuration secrète 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, nommé dbs-al-cert-DB_CLUSTER_NAME.

apiVersion: v1
kind: Pod
metadata:
  name: postgres
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 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 maintenant utiliser le pod pour vous connecter de manière sécurisée à votre cluster de base de données en procédant comme suit:

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

    kubectl get dbclusters.alloydbomni.dbadmin.goog

    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 à partir du pod client, en définissant les variables d'environnement qui activent et exigent la validation du certificat TLS:

    kubectl exec -it postgres -- 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.

Étape suivante