Kubernetes に AlloyDB Omni をインストールする

このページでは、AlloyDB Omni Kubernetes オペレーターの概要と、これを使用して AlloyDB Omni を Kubernetes クラスタにデプロイする手順について説明します。このページでは、Kubernetes のオペレーションについて基本的な知識があることを前提としています。

標準の Linux 環境に AlloyDB Omni をインストールする手順については、AlloyDB Omni をインストールするをご覧ください。

概要

AlloyDB Omni を Kubernetes クラスタにデプロイするには、Google が提供する Kubernetes API の拡張機能である AlloyDB Omni オペレーターをインストールします。

Kubernetes ベースの AlloyDB Omni データベース クラスタを構成して制御するには、他の Kubernetes ベースのデプロイと同様に、宣言マニフェスト ファイルを kubectl ユーティリティとペア設定します。AlloyDB Omni CLI は使用しません。これは、Kubernetes クラスタではなく、個々の Linux マシンへのデプロイを目的としています。

AlloyDB Omni オペレーター 1.1.0(以降)の互換性

AlloyDB Omni オペレーター バージョン 1.1.0 は、AlloyDB Omni のバージョン 15.5.3 および 15.5.4 と互換性がありません。これらのバージョンの AlloyDB Omni を使用している場合、次のようなエラーが発生することがあります。

Error from server (Forbidden): error when creating "[...]/dbcluster.yaml": admission webhook "vdbcluster.alloydbomni.dbadmin.goog" denied the request: unsupported database version 15.5.3

始める前に

次のアクセス権が必要です。

Kubernetes クラスタ内の各ノードには、次のものが必要です。

  • 2 基以上の x86 または AMD64 CPU。
  • 8 GB 以上の RAM。
  • Linux カーネル バージョン 4.18 以降。
  • コントロール グループ v2(cgroup v2)が有効になっている。

AlloyDB Omni オペレーターをインストールする

AlloyDB Omni オペレータをインストールする手順は次のとおりです。

  1. いくつかの環境変数を定義します。

    export GCS_BUCKET=alloydb-omni-operator
    export HELM_PATH=$(gcloud storage cat gs://$GCS_BUCKET/latest)
    export OPERATOR_VERSION="${HELM_PATH%%/*}"
  2. AlloyDB Omni オペレーターをダウンロードします。

    gcloud storage cp gs://$GCS_BUCKET/$HELM_PATH ./ --recursive
  3. AlloyDB Omni オペレーターをインストールします。

    helm install alloydbomni-operator alloydbomni-operator-${OPERATOR_VERSION}.tgz \
    --create-namespace \
    --namespace alloydb-omni-system \
    --atomic \
    --timeout 5m

    インストールが正常に完了すると、次の出力が表示されます。

    NAME: alloydbomni-operator
    LAST DEPLOYED: CURRENT_TIMESTAMP
    NAMESPACE: alloydb-omni-system
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None
    
  4. ダウンロードした AlloyDB Omni オペレータのインストール ファイルを削除してクリーンアップします。ファイル名は alloydbomni-operator-VERSION_NUMBER.tgz で、現在の作業ディレクトリにあります。

GDC 接続ストレージを構成する

GDC に接続された AlloyDB Omni オペレータをインストールするには、GDC に接続されたクラスタではデフォルトのストレージ クラスが設定されないため、追加の手順でストレージを構成する必要があります。AlloyDB Omni データベース クラスタを作成する前に、デフォルトのストレージ クラスを設定する必要があります。

Symcloud Storage をデフォルトのストレージ クラスとして設定する方法については、Symcloud Storage をデフォルトのストレージ クラスとして設定するをご覧ください。

他のすべてのストレージ クラスのデフォルトを変更する方法については、デフォルトの StorageClass を変更するをご覧ください。

Red Hat OpenShift の調整手順

Red Hat OpenShift 4.12 以降を使用している場合は、AlloyDB Omni オペレーターをインストールしてから、Kubernetes クラスタに AlloyDB Omni データベース クラスタを作成する前に、次の手順を完了する必要があります。それ以外の場合は、これらの手順をスキップできます。

  1. 次のように system:controller:statefulset-controller クラスタロールを編集して、AlloyDB Omni インスタンスのファイナライザを更新する権限を追加します。

    kubectl edit clusterrole system:controller:statefulset-controller
  2. テキスト エディタで、クラスタロールの末尾に次の行を追加します。

    - apiGroups:
      - alloydbomni.internal.dbadmin.goog
      resources:
      - instances/finalizers
      verbs:
      - update
    - apiGroups:
      - alloydbomni.internal.dbadmin.goog
      resources:
      - backuprepositories/finalizers
      verbs:
      - update
    

    Red Hat OpenShift では OwnerReferencesPermissionEnforcement が有効になっているため、StatefulSet コントローラには、クラスタロールに追加されたインスタンスのファイナライザを更新するための追加の権限が必要です。インスタンスのファイナライザを更新する権限がないと、StatefulSet コントローラはデータベース Persistent Volume Claim(PVC)を作成できず、データベース StatefulSet イベントに次のエラー メッセージが表示されます。

    Warning  FailedCreate  [...] cannot set blockOwnerDeletion if an ownerReference refers to a resource you can't set finalizers on
    
  3. 次のように、Red Hat OpenShift プロジェクトの default サービス アカウントに anyuid セキュリティ コンテキストの制約を追加します。

    oc adm policy add-scc-to-user anyuid system:serviceaccount:DB_CLUSTER_NAMESPACE:default

    データベース Pod 内で、init コンテナは root として実行され、他のコンテナは特定のユーザー ID で実行されるため、default サービス アカウントに anyuid セキュリティ コンテキスト制約を使用する権限を付与する必要があります。anyuid を使用する権限がないと、StatefulSet コントローラはデータベース PVC を作成できず、データベース StatefulSet イベントに次のエラー メッセージが表示されます。

    Warning  FailedCreate  [...]    unable to validate against any security context constraint
    

データベース クラスタを作成する

AlloyDB Omni データベース クラスタには、プライマリ サーバー、レプリカ、すべてのデータなど、AlloyDB Omni サーバーの実行に必要なすべてのストレージ リソースとコンピューティング リソースが含まれています。

Kubernetes クラスタに AlloyDB Omni オペレーターがインストールされたら、次のようなマニフェストを適用して、Kubernetes クラスタに AlloyDB Omni データベース クラスタを作成できます。

apiVersion: v1
kind: Secret
metadata:
  name: db-pw-DB_CLUSTER_NAME
  namespace: DB_CLUSTER_NAMESPACE
type: Opaque
data:
  DB_CLUSTER_NAME: "ENCODED_PASSWORD"
---
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
  name: DB_CLUSTER_NAME
  namespace: DB_CLUSTER_NAMESPACE
spec:
  databaseVersion: "15.7.0"
  primarySpec:
    adminUser:
      passwordRef:
        name: db-pw-DB_CLUSTER_NAME
    resources:
      cpu: CPU_COUNT
      memory: MEMORY_SIZE
      disks:
      - name: DataDisk
        size: DISK_SIZE

次のように置き換えます。

  • DB_CLUSTER_NAME: このデータベース クラスタの名前(例: my-db-cluster)。

  • DB_CLUSTER_NAMESPACE(省略可): データベース クラスタを作成する Namespace。例: my-db-cluster-namespace

  • ENCODED_PASSWORD: デフォルトの postgres ユーザーロールのデータベース ログイン パスワード。base64 文字列としてエンコードされます(例: ChangeMe123 の場合は Q2hhbmdlTWUxMjM=)。

  • CPU_COUNT: このデータベース クラスタ内の各データベース インスタンスで使用できる CPU の数。

  • MEMORY_SIZE: このデータベース クラスタのデータベース インスタンスあたりのメモリ量。CPU ごとに 8 ギガバイトに設定することをおすすめします。たとえば、このマニフェストの前半で cpu2 に設定した場合は、memory16Gi に設定することをおすすめします。

  • DISK_SIZE: データベース インスタンスあたりのディスクサイズ(例: 10Gi)。

このマニフェストを適用すると、Kubernetes クラスタに、指定されたメモリ、CPU、ストレージ構成を持つ AlloyDB Omni データベース クラスタが含まれます。新しいデータベース クラスタとのテスト接続を確立するには、事前インストールされた psql を使用して接続するをご覧ください。

Kubernetes マニフェストとその適用方法の詳細については、リソースの管理をご覧ください。

次のステップ