Menjalankan dan terhubung ke AlloyDB Omni

Pilih versi dokumentasi:

Halaman ini menjelaskan cara menjalankan dan menghubungkan ke AlloyDB Omni setelah Anda menginstalnya di mesin Anda sendiri atau men-deploy-nya ke cluster Kubernetes Anda.

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.

Mulai AlloyDB Omni

Server tunggal

Untuk memulai container AlloyDB Omni yang dihentikan, jalankan perintah docker container start atau perintah podman container start:

Docker

docker container start CONTAINER_NAME

Ganti CONTAINER_NAME dengan nama yang Anda tetapkan ke container AlloyDB Omni saat Anda menginstalnya.

Podman

podman container start CONTAINER_NAME

Ganti CONTAINER_NAME dengan nama yang Anda tetapkan ke container AlloyDB Omni saat Anda menginstalnya.

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 DB_CLUSTER_NAME \
-p '{"spec":{"primarySpec":{"isStopped":false}}}' --type=merge  -n DB_CLUSTER_NAMESPACE

Ganti kode berikut:

  • DB_CLUSTER_NAME: nama cluster database ini—misalnya, my-db-cluster.
  • DB_CLUSTER_NAMESPACE (Opsional): namespace tempat Anda membuat cluster database ini—misalnya, my-db-cluster-namespace.

Memeriksa status AlloyDB Omni

Server tunggal

Untuk memeriksa status semua container yang sedang Anda jalankan, jalankan perintah docker container ls atau perintah podman container ls:

Docker

docker container ls

Podman

podman container ls

Jika penampung AlloyDB Omni Anda sedang berjalan, namanya akan muncul di kolom NAMES pada tabel output. Baris yang sesuai merangkum status penampung.

Jika nama penampung Anda tidak muncul di kolom NAMES, berarti AlloyDB Omni Anda tidak berjalan.

Kubernetes

kubectl get dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME  -n DB_CLUSTER_NAMESPACE

Ganti kode berikut:

Menghentikan AlloyDB Omni

Server tunggal

Untuk menghentikan container AlloyDB Omni, jalankan perintah docker container stop atau perintah podman container stop:

Docker

 docker container stop CONTAINER_NAME

Ganti CONTAINER_NAME dengan nama yang Anda tetapkan ke container AlloyDB Omni saat Anda menginstalnya.

Podman

 podman container stop CONTAINER_NAME

Ganti CONTAINER_NAME dengan nama yang Anda tetapkan ke container AlloyDB Omni saat Anda menginstalnya.

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 DB_CLUSTER_NAME -p '{"spec":{"primarySpec":{"isStopped":true}}}' --type=merge -n DB_CLUSTER_NAMESPACE

Ganti kode berikut:

  • DB_CLUSTER_NAME: nama cluster database ini—misalnya, my-db-cluster.
  • DB_CLUSTER_NAMESPACE (Opsional): namespace tempat Anda membuat cluster database ini—misalnya, my-db-cluster-namespace.

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:

Docker

  docker exec -it CONTAINER_NAME psql -U postgres

Ganti CONTAINER_NAME dengan nama yang Anda tetapkan ke container AlloyDB Omni saat Anda menginstalnya.

Podman

  podman exec -it CONTAINER_NAME psql -U postgres

Ganti CONTAINER_NAME dengan nama yang Anda tetapkan ke container AlloyDB Omni saat Anda menginstalnya.

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, ekspos jaringan dari penampung docker AlloyDB Omni ke mesin host Anda dengan menambahkan --network=host atau -p 5432:5432 ke perintah docker run atau podman run saat Anda memulai AlloyDB Omni.

Untuk memilih nomor port kustom, gunakan -p [HOST_PORT]:5432 saat Anda memulai AlloyDB Omni. Kemudian, gunakan klien atau library kode yang kompatibel dengan PostgreSQL untuk terhubung ke port 5432 atau nomor port kustom yang Anda tentukan.

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 AlloyDB Omni Kubernetes 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 -n DB_CLUSTER_NAMESPACE -o jsonpath='{.items[0].metadata.name}'`
kubectl exec -ti $DBPOD -n DB_CLUSTER_NAMESPACE -c database -- 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.

Anda dapat melewati penetapan DB_CLUSTER_NAMESPACE, jika Anda membuat cluster database di namespace default.

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 command prompt 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, operator Kubernetes AlloyDB Omni 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 operator Kubernetes AlloyDB Omni 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 file ca.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, operator Kubernetes AlloyDB Omni menggunakan secret TLS default, yang diberi nama dbs-al-cert-DB_CLUSTER_NAME.

apiVersion: v1
kind: Pod
metadata:
  name: postgres
  namespace: DB_CLUSTER_NAMESPACE
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 kode berikut:

  • DB_CLUSTER_NAME: nama cluster database Anda. Nama cluster database ini sama dengan yang Anda deklarasikan saat Anda membuatnya.
  • DB_CLUSTER_NAMESPACE (Opsional): namespace tempat Anda membuat cluster database.

Sekarang Anda dapat menggunakan pod untuk terhubung ke cluster database Anda secara aman menggunakan langkah-langkah berikut:

  1. Tentukan alamat IP internal cluster database Anda:

    kubectl get dbclusters.alloydbomni.dbadmin.goog -n DB_CLUSTER_NAMESPACE

    Outputnya akan terlihat seperti berikut:

    NAME              PRIMARYENDPOINT   PRIMARYPHASE   DBCLUSTERPHASE
    DB_CLUSTER_NAME   IP_ADDRESS        Ready          DBClusterReady
    

    Catat IP_ADDRESS, dan gunakan di langkah berikutnya.

  2. Gunakan psql untuk terhubung ke cluster dari pod klien, dengan menyetel variabel lingkungan yang mengaktifkan dan mewajibkan verifikasi sertifikat TLS:

    kubectl exec -it postgres -n DB_CLUSTER_NAMESPACE -- 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.

Langkah berikutnya