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 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_NAMESPACE
Remplacez 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.
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
: 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 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 fichierca.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 :
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.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.