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-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 server tunggal atau regional di beberapa zona.

Versi Pratinjau dari Spanner Omni tidak mendukung enkripsi TLS dan berhenti menulis data 90 hari setelah Anda membuat deployment. Untuk mendapatkan akses awal ke edisi dengan fitur lengkap, hubungi Google.

Sebelum memulai

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

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

  • Pastikan cluster Kubernetes dapat mengakses artefak Artifact Registry yang menghosting container 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 a topologi untuk deployment Anda.

Menyiapkan konfigurasi Helm

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

Membuat 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

Jumlah server root per zona harus berupa bilangan ganjil antara satu dan sembilan, inklusif, untuk memastikan kuorum demi konsistensi. Jika jumlah server adalah bilangan genap, deployment mungkin akan gagal. Saat mengonfigurasi zona, tetapkan server sebagai server root. Sebaiknya gunakan satu untuk pengembangan atau pengujian dan tiga untuk zona produksi yang sangat tersedia.

Contoh 3: Deployment regional yang sangat tersedia

Deployment ini menyimpan tiga salinan data, sehingga Spanner Omni dapat terus berfungsi meskipun 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

Memeriksa 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 belum, 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 perintah 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 dapat menerima metrik yang diekspor Spanner Omni. Hal ini membantu Anda menganalisis dan melakukan proses debug masalah pada deployment. 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