AlloyDB Omni を実行して接続する

ドキュメントのバージョンを選択してください。

このページでは、Kubernetes クラスタにデプロイした後の AlloyDB Omni の実行方法と接続方法について説明します。

このページの Kubernetes 特有の手順は、Kubernetes の操作に関する基本的な知識があることを前提としています。

AlloyDB Omni を実行する

AlloyDB Omni の実行手順は、AlloyDB Omni を Kubernetes クラスタで実行するかどうかによって異なります。

AlloyDB Omni を起動する

マニフェスト定義で isStoppedfalse に設定して、停止したデータベース クラスタを起動します。

これは、コマンドラインで kubectl を使用して実行します。

  kubectl patch dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME \
  -p '{"spec":{"primarySpec":{"isStopped":false}}}' --type=merge

DB_CLUSTER_NAME は、このデータベース クラスタの名前に置き換えます。例: my-db-cluster

AlloyDB Omni のステータスを確認する

    kubectl get dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME

DB_CLUSTER_NAME は、実際のデータベース クラスタの名前に置き換えます。

AlloyDB Omni を停止する

データベース クラスタを停止するには、マニフェスト定義で isStoppedtrue に設定します。

これは、コマンドラインで kubectl を使用して実行します。

kubectl patch dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -p '{"spec":{"primarySpec":{"isStopped":true}}}' --type=merge

DB_CLUSTER_NAME は、このデータベース クラスタの名前に置き換えます(例: my-db-cluster)。

Kubernetes で実行されている AlloyDB Omni に接続する

AlloyDB Omni Kubernetes Operator を使用すると、同じ Kubernetes クラスタ内からデータベース クラスタに接続できます。必要に応じて、認証に証明書を使用できます。

プリインストールされている psql を使用して接続する

データベースを実行している Pod にすでにインストールされている psql クライアントを使用して、テスト接続を行うことができます。

この操作を行うには、次のコマンドを実行します。

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 -- psql -h localhost -U postgres

DB_CLUSTER_NAME は、実際のデータベース クラスタの名前に置き換えます。これは、作成時に宣言したデータベース クラスタ名と同じです。

コマンドを入力すると、データベース サーバーがパスワードを要求します。データベース クラスタを作成するときに Kubernetes Secret として指定した Base64 でエンコードされたパスワードを入力します。たとえば、Q2hhbmdlTWUxMjM= の Secret を使用してデータベース クラスタを作成した場合、ここで使用するログイン パスワードは ChangeMe123 です。

AlloyDB Omni Operator により、postgres ユーザーロールとしてサーバーに接続され、postgres=# コマンド プロンプトが表示されます。これで、psql コマンドと SQL クエリを実行できるようになりました。

psql を終了するには、\q コマンドを実行します。

同じクラスタ内の別の Pod から接続する

AlloyDB Omni データベース クラスタを実行している Pod は、デフォルトで同じ Kubernetes クラスタ内からの接続を許可します。ベスト プラクティスとして、TLS を使用してデータベース クラスタへのすべての接続を保護することをおすすめします。

独自のサーバー TLS 証明書を指定するには、データベース クラスタを構成するときに証明書 Secret を指定します。証明書 Secret を指定しない場合、AlloyDB Omni Kubernetes Operator は、自己署名認証局によって署名された証明書に基づいて TLS 証明書 Secret を作成します。どちらの場合も、データベース クライアント Pod ですべての接続で証明書の検証を必須にすることで、TLS セキュリティを確保できます。

TLS を使用して安全なデータベース接続を確立するには、次の操作を行います。

  • クライアント接続を行う Pod を定義するマニフェストで、TLS 証明書 Secret を指定します。これは次のいずれかになります。

    • Kubernetes クラスタですでに作成した TLS 証明書 Secret。Kubernetes で TLS 証明書 Secret を操作する方法については、TLS Secret をご覧ください。

    • データベース クラスタのマニフェストの一部として TLS Secret を指定しない場合、AlloyDB Omni Kubernetes Operator が作成するデフォルトの証明書 Secret(DB_CLUSTER_NAME-ca-cert という名前)。

  • クライアント Pod がデータベース クラスタに接続するたびに、接続を確立する前に次の環境変数を定義する必要があります。

    • PGSSLMODE"verify-ca" に設定します。

    • PGSSLROOTCERT を、関連する ca.crt ファイルのクライアント Pod のファイルシステム上の絶対パスに設定します。

次のマニフェストの例は、psql コマンドライン クライアントを含む公式の PostgreSQL イメージをインストールする Pod の構成方法を示しています。この例では、データベース クラスタを定義するマニフェストに TLS Secret 構成を指定していないことを前提としています。したがって、AlloyDB Omni Kubernetes Operator は、dbs-al-cert-DB_CLUSTER_NAME という名前のデフォルトの TLS Secret を使用します。

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

DB_CLUSTER_NAME は、実際のデータベース クラスタの名前に置き換えます。これは、作成時に宣言したデータベース クラスタ名と同じです。

これで、次の手順で Pod を使用してデータベース クラスタに安全に接続できるようになりました。

  1. データベース クラスタの内部 IP アドレスを確認します。

    kubectl get dbclusters.alloydbomni.dbadmin.goog

    出力は次のようになります。

    NAME              PRIMARYENDPOINT   PRIMARYPHASE   DBCLUSTERPHASE
    DB_CLUSTER_NAME   IP_ADDRESS        Ready          DBClusterReady
    

    IP_ADDRESS をメモします。これは、次のステップで使用します。

  2. psql を使用してクライアント Pod からクラスタに接続し、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

    IP_ADDRESS は、前のステップで確認した内部 IP アドレスに置き換えます。

次のステップ