Membuat deployment di Kubernetes

Dokumen ini menjelaskan cara membuat deployment Spanner Omni di Kubernetes. Deployment ini tidak dienkripsi. Jika Anda ingin menyiapkan lingkungan pengujian atau proof-of-concept dengan cepat untuk mengevaluasi Spanner Omni, membuat deployment tanpa enkripsi adalah cara tercepat untuk memulai karena Anda tidak perlu mengonfigurasi mTLS atau langkah keamanan lainnya. Namun, karena risiko keamanan, seperti traffic jaringan yang tidak dienkripsi dan akses terbuka, konfigurasi ini tidak direkomendasikan untuk lingkungan produksi. Anda dapat memilih antara deployment satu server atau regional di beberapa zona.

Versi Pratinjau Spanner Omni tidak mendukung enkripsi TLS. Untuk mendapatkan fitur yang memungkinkan Anda membuat deployment dengan enkripsi TLS, hubungi Google untuk meminta akses awal ke Spanner Omni versi lengkap.

Sebelum memulai

Sebelum men-deploy Spanner Omni, pastikan lingkungan Anda memenuhi persyaratan berikut:

  • Membuat cluster Kubernetes Konfigurasi ini mendukung Google Kubernetes Engine (GKE) dan Amazon Elastic Kubernetes Service (Amazon EKS). Anda mungkin perlu menyesuaikan konfigurasi agar berfungsi di lingkungan lain.

  • Pastikan cluster Kubernetes dapat mengakses artefak Artifact Registry yang menghosting penampung Spanner Omni.

  • Instal dan konfigurasi alat command line kubectl dan Helm.

  • Jika Anda menyiapkan lingkungan Kubernetes di mesin platform virtualisasi vSphere, nonaktifkan virtualisasi Time Stamp Counter (TSC) dengan menambahkan monitor_control.virtual_rdtsc = FALSE ke file konfigurasi .vmx virtual machine. Hal ini membantu TrueTime berfungsi dengan benar.

  • Pastikan lingkungan Anda memenuhi persyaratan sistem Spanner Omni.

  • Pilih topologi untuk deployment Anda.

Menyiapkan konfigurasi Helm

Buat konfigurasi Helm. Untuk mengetahui informasi selengkapnya, lihat Membuat konfigurasi Helm.

Buat deployment

Instal diagram Helm dengan penggantian tertentu. Berikut adalah contoh perintah untuk deployment yang paling umum:

Contoh 1: Menjalankan Spanner Omni di satu server di GKE dengan stack pemantauan

Untuk menjalankan Spanner Omni di satu server di GKE dengan stack pemantauan, jalankan perintah berikut:

  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

Contoh 2: Menjalankan Spanner Omni di beberapa server di GKE

Untuk menjalankan Spanner Omni di beberapa server dalam satu zona (us-central1-a) di GKE, jalankan perintah berikut:

  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

Contoh 3: Deployment regional dengan ketersediaan tinggi

Deployment ini menyimpan tiga salinan data, sehingga Spanner Omni dapat terus berfungsi meskipun suatu zona mengalami gangguan. Untuk membuat deployment ini, jalankan perintah berikut:

  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

Periksa status pod

Untuk memeriksa status pod, jalankan perintah berikut:

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

Contoh output:

  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

Berinteraksi dengan Spanner Omni

Setelah pod berjalan, Anda dapat terhubung ke deployment dan berinteraksi dengannya menggunakan Spanner Omni CLI.

  1. Jalankan perintah berikut untuk mendapatkan alamat layanan:

    kubectl get service spanner -n spanner-ns
    

    EXTERNAL-IP:PORT adalah DEPLOYMENT_ENDPOINT untuk deployment Anda.

  2. Jika Anda belum melakukannya, download Spanner Omni CLI dari bucket Cloud Storage spanner-omni.

    Buka bucket Spanner Omni

  3. Gunakan Spanner Omni CLI untuk membuat database GoogleSQL atau PostgreSQL dan berinteraksi dengannya.

    GoogleSQL

    Untuk membuat dan berinteraksi dengan database GoogleSQL, jalankan perintah berikut:

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

    PostgreSQL

    Untuk membuat dan berinteraksi dengan database PostgreSQL, jalankan berikut:

     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.
    

Mengamati deployment (Opsional)

Anda dapat menyiapkan Spanner Omni dengan monitoring.enabled=true untuk mengonfigurasi Prometheus agar menyerap metrik yang diekspor Spanner Omni. Hal ini membantu Anda menganalisis dan men-debug masalah pada deployment Anda. Untuk mengetahui informasi selengkapnya, lihat:

Untuk mendapatkan detail layanan, jalankan perintah berikut:

  # 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

Langkah berikutnya