Halaman ini menjelaskan cara menjalankan dan terhubung ke AlloyDB Omni setelah Anda men-deploy-nya ke cluster Kubernetes.
Sebelum memulai
Anda harus menginstal Operator Kubernetes AlloyDB Omni ke cluster Kubernetes untuk melakukan tugas yang dijelaskan di halaman ini.
Petunjuk khusus Kubernetes di halaman ini mengasumsikan pengetahuan dasar tentang pengoperasian Kubernetes.
Menjalankan AlloyDB Omni
Prosedur yang Anda gunakan untuk menjalankan AlloyDB Omni bergantung pada apakah Anda menjalankan AlloyDB Omni di cluster Kubernetes.
Untuk mengontrol dan memantau AlloyDB Omni, perbarui manifes cluster Kubernetes Anda, seperti yang ditunjukkan di bagian berikut.
Memulai AlloyDB Omni
Mulai cluster database yang dihentikan dengan menetapkan isStopped ke false dalam definisi manifesnya.
Anda dapat melakukannya di command line menggunakan kubectl:
kubectl patch dbclusters.alloydbomni.dbadmin.goog dbcluster-sample \
-p '{"spec":{"primarySpec":{"isStopped":false}}}' --type=mergeMemeriksa status AlloyDB Omni
kubectl get dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAMEGanti DB_CLUSTER_NAME dengan nama cluster database
Anda.
Menghentikan AlloyDB Omni
Kubernetes
Untuk menghentikan cluster database, tetapkan isStopped ke true dalam definisi manifesnya.
Anda dapat melakukannya di command line menggunakan kubectl:
kubectl patch dbclusters.alloydbomni.dbadmin.goog dbcluster-sample -p '{"spec":{"primarySpec":{"isStopped":true}}}' --type=mergeMenghubungkan ke AlloyDB Omni yang berjalan di Kubernetes
Operator Kubernetes AlloyDB Omni memungkinkan koneksi ke cluster database dari dalam cluster Kubernetes yang sama, secara opsional menggunakan sertifikat untuk autentikasi.
Menghubungkan menggunakan psql yang telah diinstal
Anda dapat membuat koneksi pengujian menggunakan klien psql yang sudah diinstal di pod yang menjalankan database.
Untuk melakukannya, jalankan perintah berikut:
export DBPOD=`kubectl get pod --selector=alloydbomni.internal.dbadmin.goog/dbcluster=DB_CLUSTER_NAME,alloydbomni.internal.dbadmin.goog/task-type=database -o jsonpath='{.items[0].metadata.name}'`kubectl exec -ti $DBPOD -c database -- /bin/psql -h localhost -U postgres
Ganti DB_CLUSTER_NAME dengan nama cluster database Anda. Nama cluster database ini sama dengan yang Anda deklarasikan saat Anda membuatnya.
Setelah Anda memasukkan perintah, server database akan meminta sandi.
Masukkan sandi yang versi base64-nya
Anda berikan sebagai secret Kubernetes saat membuat cluster
database. Misalnya, jika Anda membuat cluster database dengan secret Q2hhbmdlTWUxMjM=, sandi login yang akan digunakan di sini adalah ChangeMe123.
Operator AlloyDB Omni menghubungkan Anda ke server sebagai peran pengguna postgres
dan menampilkan perintah postgres=#. Sekarang Anda dapat menjalankan psql
perintah
dan kueri SQL.
Untuk keluar dari psql, jalankan perintah \q.
Menghubungkan dari pod terpisah di cluster yang sama
Pod yang menjalankan cluster database AlloyDB Omni memungkinkan koneksi dari dalam cluster Kubernetes yang sama, secara default. Sebagai praktik terbaik, sebaiknya amankan semua koneksi ke cluster database menggunakan TLS.
Untuk menyediakan sertifikat TLS server Anda sendiri, tentukan secret sertifikat saat mengonfigurasi cluster database. Jika Anda tidak menentukan secret sertifikat, Operator Kubernetes AlloyDB Omni akan membuat secret sertifikat TLS untuk Anda, berdasarkan sertifikat yang ditandatangani oleh otoritas sertifikat yang ditandatangani sendiri. Dalam kedua kasus tersebut, Anda dapat mewajibkan pod klien database untuk mewajibkan validasi sertifikat pada setiap koneksi, sehingga memastikan keamanan TLS.
Untuk membuat koneksi database yang aman menggunakan TLS, lakukan tindakan berikut:
Dalam manifes yang menentukan pod yang membuat koneksi klien, tentukan secret sertifikat TLS. Secret ini dapat berupa salah satu hal berikut:
Secret sertifikat TLS yang telah Anda buat di cluster Kubernetes. Untuk mengetahui informasi selengkapnya tentang cara menggunakan secret sertifikat TLS di Kubernetes, lihat Secret TLS.
Secret sertifikat default yang dibuat oleh Operator Kubernetes AlloyDB Omni untuk Anda, yang diberi nama
DB_CLUSTER_NAME-ca-cert, jika Anda tidak menentukan secret TLS sebagai bagian dari manifes cluster database.
Setiap kali pod klien terhubung ke cluster database, pod tersebut harus menentukan variabel lingkungan berikut sebelum membuat koneksi:
Tetapkan
PGSSLMODEke"verify-ca".Tetapkan
PGSSLROOTCERTke jalur absolut, pada sistem file pod klien, dari fileca.crtyang relevan.
Contoh manifes berikut menunjukkan cara mengonfigurasi pod yang menginstal image PostgreSQL resmi, yang mencakup klien command line psql. Contoh
ini mengasumsikan bahwa Anda tidak menentukan konfigurasi secret TLS apa pun dalam manifes
yang menentukan cluster database Anda. Oleh karena itu, Operator Kubernetes AlloyDB Omni menggunakan secret TLS default, yang diberi nama
dbs-al-cert-DB_CLUSTER_NAME.
apiVersion: v1
kind: Pod
metadata:
name: postgres
spec:
containers:
- image: "docker.io/library/postgres:latest"
command:
- "sleep"
- "604800"
imagePullPolicy: IfNotPresent
name: db-client
volumeMounts:
- name: ca-cert
mountPath: "/DB_CLUSTER_NAME-ca-cert"
readOnly: true
volumes:
- name: ca-cert
secret:
secretName: dbs-al-cert-DB_CLUSTER_NAME
restartPolicy: Always
Ganti DB_CLUSTER_NAME dengan nama cluster database Anda. Nama cluster database ini sama dengan yang Anda deklarasikan saat Anda membuatnya.
Sekarang Anda dapat menggunakan pod untuk terhubung dengan aman ke cluster database menggunakan langkah-langkah berikut:
Tentukan alamat IP internal cluster database Anda:
kubectl get dbclusters.alloydbomni.dbadmin.googOutputnya akan terlihat seperti berikut:
NAME PRIMARYENDPOINT PRIMARYPHASE DBCLUSTERPHASE DB_CLUSTER_NAME IP_ADDRESS Ready DBClusterReadyPerhatikan
IP_ADDRESS, dan gunakan di langkah berikut.Gunakan
psqluntuk terhubung ke cluster dari pod klien, dengan menetapkan variabel lingkungan yang mengaktifkan dan mewajibkan verifikasi sertifikat TLS:kubectl exec -it postgres -- bashPGSSLMODE="verify-ca" PGSSLROOTCERT=/DB_CLUSTER_NAME-ca-cert/ca.crt psql -h IP_ADDRESS -p 5432 -U postgres -d postgresGanti
IP_ADDRESSdengan alamat IP internal yang Anda tentukan pada langkah sebelumnya.