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 principes de base de l'utilisation de Kubernetes.
Exécuter AlloyDB Omni
Les procédures que vous utilisez pour exécuter AlloyDB Omni dépendent de l'exécution ou non d'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 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 DB_CLUSTER_NAME \
-p '{"spec":{"primarySpec":{"isStopped":false}}}' --type=merge -n DB_CLUSTER_NAMESPACERemplacez les éléments suivants :
DB_CLUSTER_NAME: nom de ce cluster de bases de données, par exemplemy-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_NAMESPACERemplacez les éléments suivants :
DB_CLUSTER_NAME: nom de votre cluster de bases de données.DB_CLUSTER_NAMESPACE(facultatif) : espace de noms dans lequel vous avez créé votre cluster de bases de données.
Le résultat ressemble à ce qui suit :
NAME PRIMARYENDPOINT PRIMARYPHASE DBCLUSTERPHASE
DB_CLUSTER_NAME IP_ADDRESS Ready DBClusterReady
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 sur la 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_NAMESPACERemplacez les éléments suivants :
DB_CLUSTER_NAME: nom de ce cluster de bases de données, par exemplemy-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).
Se connecter à AlloyDB Omni exécuté sur Kubernetes
L'opérateur Kubernetes AlloyDB Omni permet de se connecter au cluster de bases de données depuis le même cluster Kubernetes, en utilisant éventuellement des certificats pour l'authentification.
Se connecter à l'aide de psql préinstallé
Vous pouvez effectuer une connexion 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 bases de données que celui que vous avez déclaré lorsque vous l'avez créé.
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 vous avez fourni la version encodée en base64 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 maintenant 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 dans le même cluster
Le pod exécutant le cluster de bases de données AlloyDB Omni autorise par défaut les connexions provenant du 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 lors de la configuration de votre cluster de bases de données. Si vous ne spécifiez pas de secret de certificat, l'opérateur Kubernetes AlloyDB Omni 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 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 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 certificat TLS dans Kubernetes, consultez Secrets TLS.
Le secret de certificat par défaut que l'opérateur Kubernetes AlloyDB Omni 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 base de données, il doit définir les variables d'environnement suivantes avant d'établir la connexion :
Définissez
PGSSLMODEsur"verify-ca".Définissez
PGSSLROOTCERTsur le chemin absolu, dans le système de fichiers du pod client, du fichierca.crtconcerné.
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 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, 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 bases de données que celui que vous avez déclaré lorsque vous l'avez créé.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 base de données en procédant comme suit :
Déterminez l'adresse IP interne de votre cluster de bases de données :
kubectl get dbclusters.alloydbomni.dbadmin.goog -n DB_CLUSTER_NAMESPACELe résultat se présente comme suit :
NAME PRIMARYENDPOINT PRIMARYPHASE DBCLUSTERPHASE DB_CLUSTER_NAME IP_ADDRESS Ready DBClusterReadyNotez
IP_ADDRESSet utilisez-le à l'étape suivante.Utilisez
psqlpour 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 -n DB_CLUSTER_NAMESPACE -- bashPGSSLMODE="verify-ca" PGSSLROOTCERT=/DB_CLUSTER_NAME-ca-cert/ca.crt psql -h IP_ADDRESS -p 5432 -U postgres -d postgresRemplacez
IP_ADDRESSpar l'adresse IP interne que vous avez déterminée à l'étape précédente.Facultatif. Personnalisez le port sur lequel la base de données accepte les requêtes de connexion entrantes. Pour remplacer le port par défaut
5432, utilisez l'attributport. Les valeurs doivent être comprises entre1024et65535.L'exemple suivant montre la configuration d'une ressource DBCluster AlloyDB Omni lorsque vous personnalisez le port de la base de données.
apiVersion: v1 kind: Secret metadata: name: db-pw-dbcluster-sample type: Opaque data: dbcluster-sample: "Q2hhbmdlTWUxMjM=" # Password is ChangeMe123 --- apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: dbcluster-sample spec: databaseVersion: "18.4.0" primarySpec: port: 6789 adminUser: passwordRef: name: db-pw-dbcluster-sample resources: memory: 5Gi cpu: 1 disks: - name: DataDisk size: 10Gi
Étapes suivantes