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.
Jika Anda menyiapkan lingkungan Kubernetes di mesin platform virtualisasi vSphere, nonaktifkan virtualisasi Time Stamp Counter (TSC) dengan menambahkan
monitor_control.virtual_rdtsc = FALSEke file konfigurasi.vmxvirtual 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.
Jalankan perintah berikut untuk mendapatkan alamat layanan:
kubectl get service spanner -n spanner-nsEXTERNAL-IP:PORTadalah DEPLOYMENT_ENDPOINT untuk deployment Anda.Jika belum, download Spanner Omni CLI dari bucket Cloud Storage
spanner-omni.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_ENDPOINTPostgreSQL
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