Crea una implementación en Kubernetes

En este documento, se explica cómo crear una implementación de Spanner Omni en Kubernetes. Esta implementación no está encriptada. Si deseas configurar rápidamente un entorno de prueba o de prueba de concepto para evaluar Spanner Omni, crear una implementación sin encriptación es la forma más rápida de comenzar, ya que no requiere que configures mTLS ni otras medidas de seguridad. Sin embargo, debido a los riesgos de seguridad, como el tráfico de red sin encriptar y el acceso abierto, esta configuración no se recomienda para los entornos de producción. Puedes elegir entre una implementación regional o de un solo servidor en varias zonas.

La versión de vista previa de Spanner Omni no admite la encriptación TLS y deja de escribir datos 90 días después de que creas una implementación. Para obtener acceso anticipado a la edición con todas las funciones, comunícate con Google.

Antes de comenzar

Antes de implementar Spanner Omni, asegúrate de que tu entorno cumpla con los siguientes requisitos:

  • Crea un clúster de Kubernetes. La configuración admite Google Kubernetes Engine (GKE) y Amazon Elastic Kubernetes Service (Amazon EKS). Es posible que debas personalizar la configuración para que funcione en otros entornos.

  • Asegúrate de que el clúster de Kubernetes pueda acceder al artefacto de Artifact Registry que aloja el contenedor de Spanner Omni.

  • Instala y configura la herramienta de línea de comandos de kubectl y Helm.

  • Si configuras el entorno de Kubernetes en máquinas de la plataforma de virtualización de vSphere, inhabilita la virtualización del contador de marcas de tiempo (TSC) agregando monitor_control.virtual_rdtsc = FALSE al archivo de configuración .vmx de la máquina virtual. Esto ayuda a que TrueTime funcione correctamente.

  • Verifica que tu entorno cumpla con los requisitos del sistema de Spanner Omni.

  • Elige una topología para tu implementación.

Prepara la configuración de Helm

Crea una configuración de Helm. Para obtener más información, consulta Crea una configuración de Helm.

Crea la implementación:

Instala el gráfico de Helm con las anulaciones específicas. A continuación, se muestran ejemplos de comandos para las implementaciones más comunes:

Ejemplo 1: Ejecuta Spanner Omni en un solo servidor en GKE con la pila de supervisión

Para ejecutar Spanner Omni en un solo servidor en GKE con la pila de supervisión, ejecuta el siguiente comando:

  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

Ejemplo 2: Ejecuta Spanner Omni en varios servidores en GKE

Para ejecutar Spanner Omni en varios servidores en una sola zona (us-central1-a) en GKE, ejecuta el siguiente comando:

  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

La cantidad de servidores raíz por zona debe ser un número impar entre uno y nueve, inclusive, para garantizar el quórum de coherencia. Si la cantidad de servidores es un número par, es posible que las implementaciones fallen. Cuando configures tus zonas, designa servidores como servidores raíz. Te recomendamos que uses una para el desarrollo o las pruebas, y tres para las zonas de producción con alta disponibilidad.

Ejemplo 3: Implementación regional con alta disponibilidad

Esta implementación mantiene tres copias de los datos, lo que permite que Spanner Omni siga funcionando incluso si una zona experimenta una interrupción. Para crear esta implementación, ejecuta el siguiente comando:

  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

Verifica el estado de los Pods

Para verificar el estado de los pods, ejecuta el siguiente comando:

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

Resultado de ejemplo:

  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

Interactúa con Spanner Omni

Una vez que los pods estén en ejecución, puedes conectarte a tu implementación e interactuar con ella a través de la CLI de Spanner Omni.

  1. Ejecuta el siguiente comando para obtener la dirección del servicio:

    kubectl get service spanner -n spanner-ns
    

    EXTERNAL-IP:PORT es el DEPLOYMENT_ENDPOINT de tu implementación.

  2. Si aún no lo hiciste, descarga la CLI de Spanner Omni desde el bucket de Cloud Storage spanner-omni.

    Ir al bucket de Spanner Omni

  3. Usa la CLI de Spanner Omni para crear una base de datos de GoogleSQL o PostgreSQL, y para interactuar con ella.

    GoogleSQL

    Para crear una base de datos de GoogleSQL y trabajar con ella, ejecuta lo siguiente:

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

    PostgreSQL

    Para crear una base de datos de PostgreSQL y, luego, interactuar con ella, ejecuta el siguiente comando:

     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.
    

Observa la implementación (opcional)

Puedes configurar Spanner Omni con monitoring.enabled=true para configurar Prometheus de modo que ingiera las métricas que exporta Spanner Omni. Esto te ayuda a analizar y depurar problemas con tu implementación. Para obtener más información, consulta los siguientes recursos:

Para obtener los detalles del servicio, ejecuta los siguientes comandos:

  # 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

¿Qué sigue?