Créer un déploiement sur Kubernetes

Ce document explique comment créer un déploiement Spanner Omni sur Kubernetes. Ce déploiement n'est pas chiffré. Si vous souhaitez configurer rapidement un environnement de test ou de validation de concept pour évaluer Spanner Omni, la création d'un déploiement sans chiffrement est le moyen le plus rapide de commencer, car elle ne nécessite pas de configurer mTLS ni d'autres mesures de sécurité. Toutefois, en raison des risques de sécurité (trafic réseau non chiffré, accès ouvert, etc.), cette configuration n'est pas recommandée pour les environnements de production. Vous pouvez choisir entre un déploiement sur un seul serveur ou un déploiement régional sur plusieurs zones.

La version Preview de Spanner Omni n'est pas compatible avec le chiffrement TLS. Pour bénéficier des fonctionnalités qui vous permettent de créer des déploiements avec chiffrement TLS, contactez Google afin de demander un accès anticipé à la version complète de Spanner Omni.

Avant de commencer

Avant de déployer Spanner Omni, assurez-vous que votre environnement répond aux exigences suivantes :

  • Créez un cluster Kubernetes La configuration est compatible avec Google Kubernetes Engine (GKE) et Amazon Elastic Kubernetes Service (Amazon EKS). Vous devrez peut-être personnaliser la configuration pour qu'elle fonctionne dans d'autres environnements.

  • Assurez-vous que le cluster Kubernetes peut accéder à l'artefact Artifact Registry qui héberge le conteneur Spanner Omni.

  • Installez et configurez l'outil de ligne de commande kubectl et Helm.

  • Si vous configurez l'environnement Kubernetes sur des machines de la plate-forme de virtualisation vSphere, désactivez la virtualisation du compteur d'horodatage (TSC) en ajoutant monitor_control.virtual_rdtsc = FALSE au fichier de configuration .vmx de la machine virtuelle. Cela permet à TrueTime de fonctionner correctement.

  • Vérifiez que votre environnement répond à la configuration système requise pour Spanner Omni.

  • Choisissez une topologie pour votre déploiement.

Préparer la configuration Helm

Créez une configuration Helm. Pour en savoir plus, consultez Créer une configuration Helm.

Créer le déploiement

Installez le chart Helm avec les remplacements spécifiques. Voici des exemples de commandes pour les déploiements les plus courants :

Exemple 1 : Exécuter Spanner Omni sur un seul serveur sur GKE avec la pile de surveillance

Pour exécuter Spanner Omni sur un seul serveur sur GKE avec la pile de surveillance, exécutez la commande suivante :

  kubectl create ns monitoring
  helm upgrade --install spanner-omni oci://us-central1-docker.pkg.dev/spanner-omni/helm-charts/spanner-omni --version 0.1.0 \
    --set global.platform=gke \
    --set deployment.singleServer=true \
    --set monitoring.enabled=true \
    --namespace spanner-ns \
    --create-namespace

Exemple 2 : Exécuter Spanner Omni sur plusieurs serveurs dans GKE

Pour exécuter Spanner Omni sur plusieurs serveurs dans une même zone (us-central1-a) dans GKE, exécutez la commande suivante :

  kubectl create ns monitoring
  helm upgrade --install spanner-omni oci://us-central1-docker.pkg.dev/spanner-omni/helm-charts/spanner-omni --version 0.1.0 \
    --set global.platform=gke \
    --set deployment.replicasPerZone=5 \
    --set deployment.rootServersPerZone=3 \
    --set-json 'locations=[{"name":"us-central1","zones":[{"name":"us-central1-a","shortName":"a"}]}]' \
    --set monitoring.enabled=true \
    --namespace spanner-ns \
    --create-namespace

Exemple 3 : Déploiement régional à disponibilité élevée

Ce déploiement conserve trois copies des données, ce qui permet à Spanner Omni de continuer à fonctionner même si une zone connaît une panne. Pour créer ce déploiement, exécutez la commande suivante :

  kubectl create ns monitoring
  helm upgrade --install spanner-omni oci://us-central1-docker.pkg.dev/spanner-omni/helm-charts/spanner-omni --version 0.1.0 \
    --set global.platform=gke \
    --set-json 'locations=[{"name":"us-central1","zones":[{"name":"us-central1-a","shortName":"a"},{"name":"us-central1-c","shortName":"b"},{"name":"us-central1-d","shortName":"c"}]}]' \
    --set monitoring.enabled=true \
    --namespace spanner-ns \
    --create-namespace

Vérifier l'état des pods

Pour vérifier l'état des pods, exécutez la commande suivante :

  kubectl get pods --watch --namespace spanner-ns

Exemple de résultat :

  NAME          READY   STATUS    RESTARTS   AGE
  spanner-a-0   1/1     Running   0          4m
  spanner-a-1   1/1     Running   0          4m
  spanner-a-2   1/1     Running   0          4m
  spanner-a-3   1/1     Running   0          4m
  spanner-a-4   1/1     Running   0          4m
  spanner-b-0   1/1     Running   0          4m
  spanner-b-1   1/1     Running   0          4m
  spanner-b-2   1/1     Running   0          4m
  spanner-b-3   1/1     Running   0          4m
  spanner-b-4   1/1     Running   0          4m
  spanner-c-0   1/1     Running   0          4m
  spanner-c-1   1/1     Running   0          4m
  spanner-c-2   1/1     Running   0          4m
  spanner-c-3   1/1     Running   0          4m
  spanner-c-4   1/1     Running   0          4m

Interagir avec Spanner Omni

Une fois les pods en cours d'exécution, vous pouvez vous connecter à votre déploiement et interagir avec lui à l'aide de la CLI Spanner Omni.

  1. Exécutez la commande suivante pour obtenir l'adresse du service :

    kubectl get service spanner -n spanner-ns
    

    EXTERNAL-IP:PORT correspond à DEPLOYMENT_ENDPOINT pour votre déploiement.

  2. Si ce n'est pas déjà fait, téléchargez la CLI Spanner Omni depuis le bucket Cloud Storage spanner-omni.

    Accéder au bucket Spanner Omni

  3. Utilisez la CLI Spanner Omni pour créer une base de données GoogleSQL ou PostgreSQL et interagir avec elle.

    GoogleSQL

    Pour créer une base de données GoogleSQL et interagir avec elle, exécutez les commandes suivantes :

    spanner databases create DATABASE_NAME --deployment_endpoint DEPLOYMENT_ENDPOINT
    spanner sql --database=DATABASE_NAME --deployment_endpoint DEPLOYMENT_ENDPOINT
    

    PostgreSQL

    Pour créer une base de données PostgreSQL et interagir avec elle, exécutez la commande suivante :

     spanner databases create POSTGRESQL_DATABASE_NAME --database_dialect POSTGRESQL --deployment_endpoint DEPLOYMENT_ENDPOINT
     spanner sql --database=POSTGRESQL_DATABASE_NAME --deployment_endpoint DEPLOYMENT_ENDPOINT
     ```
    
    You can also interact with a PostgreSQL database by following
    the instructions in [Connect using PGAdapter](/spanner-omni/pgadapter)
    to configure PGAdapter and use PostgreSQL tools, such as
    `psql`, with your PostgreSQL-dialect databases.
    

Observer le déploiement (facultatif)

Vous pouvez configurer Spanner Omni avec monitoring.enabled=true pour configurer Prometheus afin d'ingérer les métriques exportées par Spanner Omni. Cela vous aide à analyser et à déboguer les problèmes liés à votre déploiement. Pour en savoir plus, consultez les pages suivantes :

Pour obtenir les détails du service, exécutez les commandes suivantes :

  # Prometheus service details. Default port is 9090.
  kubectl get service prometheus-service -n monitoring

  # Grafana service details. Default port is 3000.
  kubectl get service grafana -n monitoring

Étapes suivantes