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.

Les instructions spécifiques à Kubernetes de cette page partent du principe 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.

Démarrer AlloyDB Omni

Serveur unique

Pour démarrer un conteneur AlloyDB Omni arrêté, exécutez la commande docker container start:

docker container start CONTAINER_NAME

Remplacez CONTAINER_NAME par le nom que vous avez attribué au conteneur AlloyDB Omni lorsque vous l'avez installé.

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

Pour vérifier l'état de tous les conteneurs que vous exécutez, exécutez la commande docker container ls:

docker container ls

Si votre conteneur AlloyDB Omni s'exécute, son nom apparaît dans la colonne NAMES du tableau de sortie. La ligne correspondante résume l'état du conteneur.

Si le nom de votre conteneur n'apparaît pas dans la colonne NAMES, cela signifie qu'AlloyDB Omni n'est pas en cours d'exécution.

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

Pour arrêter un conteneur AlloyDB Omni, exécutez la commande docker container stop:

docker container stop CONTAINER_NAME

Remplacez CONTAINER_NAME par le nom que vous avez attribué au conteneur AlloyDB Omni lorsque vous l'avez installé.

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

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:

docker exec -it CONTAINER_NAME psql -U postgres

Remplacez CONTAINER_NAME par le nom que vous avez attribué au conteneur AlloyDB Omni lorsque vous l'avez installé.

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, exposez la mise en réseau du conteneur Docker AlloyDB Omni sur votre machine hôte en ajoutant --network=host ou -p 5432:5432 à votre commande docker run lorsque vous démarrez AlloyDB Omni.

Pour sélectionner un numéro de port personnalisé, utilisez -p [HOST_PORT]:5432 lorsque vous démarrez AlloyDB Omni. Ensuite, utilisez un client ou une bibliothèque de code compatible avec PostgreSQL pour vous connecter au port 5432 ou au numéro de port personnalisé que vous avez spécifié.

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