Sebelum memulai
Server tunggal
Sebagian besar perintah di halaman ini menggunakan AlloyDB Omni CLI.
Untuk menginstal alat command line ini di komputer Anda, lihat Menginstal CLI AlloyDB Omni.
Kubernetes
Anda perlu menginstal Operator Kubernetes AlloyDB Omni ke cluster Kubernetes Anda untuk melakukan tugas yang dijelaskan di halaman ini.
Petunjuk khusus Kubernetes di halaman ini mengasumsikan keakraban dasar dengan pengoperasian Kubernetes.
Menjalankan AlloyDB Omni
Prosedur yang Anda gunakan untuk menjalankan AlloyDB Omni bergantung pada apakah Anda menjalankan AlloyDB Omni dalam container di satu server, atau di cluster Kubernetes. Bagian ini membagi petunjuknya di antara gaya deployment ini.
Server tunggal
Menginstal AlloyDB Omni akan menyiapkan layanan sistem yang disebut
alloydb-dataplane
yang dikonfigurasi untuk diluncurkan setiap kali mesin Anda
melakukan booting.
Untuk kontrol dan pemantauan dasar AlloyDB Omni, gunakan perintah
sudo alloydb
, seperti yang ditunjukkan di bagian berikut.
Kubernetes
Untuk mengontrol dan memantau AlloyDB Omni, perbarui manifes cluster Kubernetes Anda, seperti yang ditunjukkan di bagian berikut.
Mulai AlloyDB Omni
Server tunggal
sudo alloydb database-server start
Untuk melakukan uji koneksi, lihat Menghubungkan menggunakan psql
yang di-containerkan.
Kubernetes
Mulai cluster database yang dihentikan dengan menyetel isStopped
ke false
dalam definisi
manifest-nya.
Anda dapat melakukannya di command line menggunakan kubectl
:
kubectl patch dbclusters.alloydbomni.dbadmin.goog dbcluster-sample \
-p '{"spec":{"primarySpec":{"isStopped":false}}}' --type=merge
Memeriksa status AlloyDB Omni
Server tunggal
sudo alloydb database-server status
Kubernetes
kubectl get dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME
Ganti DB_CLUSTER_NAME
dengan nama cluster database
Anda.
Menghentikan AlloyDB Omni
Server tunggal
sudo alloydb database-server stop
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=merge
Menonaktifkan peluncuran saat browser dimulai
Menjalankan perintah berikut akan mencegah AlloyDB Omni dimulai secara otomatis saat komputer Anda melakukan booting.
Server tunggal
sudo systemctl disable alloydb-dataplane
Kubernetes
Tugas ini tidak berlaku saat menggunakan Operator Kubernetes AlloyDB Omni.
Mengaktifkan kembali peluncuran saat browser dimulai
Server tunggal
sudo systemctl enable alloydb-dataplane
Kubernetes
Tugas ini tidak berlaku saat menggunakan Operator Kubernetes AlloyDB Omni.
Menghubungkan ke AlloyDB Omni yang berjalan di satu server
Kontainer AlloyDB Omni menyertakan salinan psql
sendiri yang memungkinkan Anda membuka sesi shell SQL interaktif dengan server databasenya.
Anda juga dapat terhubung ke AlloyDB Omni dari luar penampung, menggunakan software yang kompatibel dengan PostgreSQL pilihan Anda.
Untuk mengetahui informasi tentang cara terhubung ke cluster database AlloyDB Omni yang berjalan di cluster Kubernetes, lihat Menghubungkan ke AlloyDB Omni yang berjalan di Kubernetes.
Menghubungkan menggunakan psql
yang di-container
Untuk terhubung ke server database AlloyDB Omni menggunakan salinan psql
yang di-container-kan, jalankan perintah berikut:
Server tunggal
docker exec -it pg-service psql -h localhost -U postgres
Perintah ini menghubungkan Anda ke server sebagai peran pengguna postgres
, dan menampilkan
prompt perintah postgres=#
. Sekarang Anda dapat menjalankan perintah psql
dan kueri SQL.
Untuk keluar dari psql
, jalankan perintah \q
.
Menghubungkan menggunakan aplikasi Anda sendiri
Aplikasi apa pun yang berfungsi dengan PostgreSQL juga dapat berfungsi dengan AlloyDB Omni, tanpa perlu modifikasi.
Untuk terhubung ke server database AlloyDB Omni, gunakan klien atau library kode yang kompatibel dengan PostgreSQL untuk terhubung ke port 5432
—port server database PostgreSQL default—dari mesin yang menjalankan AlloyDB Omni.
Cara ini berfungsi karena container AlloyDB Omni mengekspos portnya sendiri
5432
ke port yang sama pada mesin tempat container tersebut berjalan.
Setelah terhubung ke server database, Anda dapat menentukan, membuat kueri, dan mengubah database menggunakan kueri DML dan SQL dengan menggunakan protokol komunikasi PostgreSQL standar.
Karena AlloyDB Omni berjalan dalam lingkungan Anda sendiri, Anda dapat mengontrol cara terhubung ke AlloyDB Omni. Hal ini mencakup mengizinkan atau membatasi akses jaringan ke layanan ini sesuai dengan kebutuhan aplikasi Anda, seperti yang akan Anda lakukan dengan server PostgreSQL biasa.
Menghubungkan ke AlloyDB Omni yang berjalan di Kubernetes
Operator Kubernetes AlloyDB Omni memungkinkan koneksi ke cluster database dari dalam cluster Kubernetes yang sama, yang secara opsional menggunakan sertifikat untuk autentikasi.
Menghubungkan menggunakan psql
yang sudah 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 yang sama dengan yang Anda deklarasikan saat Anda membuatnya.
Setelah Anda memasukkan perintah, server database akan meminta sandi Anda.
Masukkan sandi yang versi berenkode base64-nya
Anda berikan sebagai secret Kubernetes saat membuat cluster
database. Misalnya, jika Anda
membuat cluster database dengan secret Q2hhbmdlTWUxMjM=
, maka
sandi login yang akan digunakan di sini adalah ChangeMe123
.
Operator AlloyDB Omni menghubungkan Anda ke server sebagai peran pengguna postgres
dan menampilkan perintah postgres=#
. Anda kini dapat menjalankan perintah psql
dan kueri SQL.
Untuk keluar dari psql
, jalankan perintah \q
.
Menghubungkan dari pod terpisah dalam 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 memberikan sertifikat TLS server Anda sendiri, tentukan secret sertifikat saat mengonfigurasi cluster database Anda. Jika Anda tidak menentukan secret sertifikat, AlloyDB Omni Kubernetes Operator akan membuat secret sertifikat TLS untuk Anda, berdasarkan sertifikat yang ditandatangani oleh certificate authority 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. Nilainya dapat berupa salah satu dari berikut ini:
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 AlloyDB Omni Kubernetes Operator untuk Anda, bernama
DB_CLUSTER_NAME-ca-cert
, jika Anda tidak menentukan secret TLS sebagai bagian dari manifes cluster database Anda.
Setiap kali pod klien Anda terhubung ke cluster database, pod tersebut harus menentukan variabel lingkungan berikut sebelum membuat koneksi:
Tetapkan
PGSSLMODE
ke"verify-ca"
.Tetapkan
PGSSLROOTCERT
ke jalur absolut, pada sistem file pod klien, dari fileca.crt
yang relevan.
Contoh manifes berikut menunjukkan cara mengonfigurasi pod yang menginstal image PostgreSQL resmi, yang mencakup klien command line psql
. Contoh
mengasumsikan bahwa Anda tidak menentukan konfigurasi secret TLS apa pun di manifes
yang menentukan cluster database Anda. Oleh karena itu, AlloyDB Omni Kubernetes Operator 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 membuatnya.
Sekarang Anda dapat menggunakan pod untuk terhubung ke cluster database Anda secara aman menggunakan langkah-langkah berikut:
Tentukan alamat IP internal cluster database Anda:
kubectl get dbclusters.alloydbomni.dbadmin.goog
Outputnya akan terlihat seperti berikut:
NAME PRIMARYENDPOINT PRIMARYPHASE DBCLUSTERPHASE DB_CLUSTER_NAME IP_ADDRESS Ready DBClusterReady
Catat
IP_ADDRESS
, dan gunakan di langkah berikutnya.Gunakan
psql
untuk terhubung ke cluster dari pod klien, dengan menyetel variabel lingkungan yang mengaktifkan dan mewajibkan verifikasi sertifikat TLS:kubectl exec -it postgres -- bash
PGSSLMODE="verify-ca" PGSSLROOTCERT=/DB_CLUSTER_NAME-ca-cert/ca.crt psql -h IP_ADDRESS -p 5432 -U postgres -d postgres
Ganti
IP_ADDRESS
dengan alamat IP internal yang Anda tentukan pada langkah sebelumnya.