このページでは、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 クラスタ。
- Kubernetes バージョン 1.21 以降。
cert-manager
サービス。
kubectl
ユーティリティ。helm
パッケージ マネージャー。- Google Cloud CLI。gcloud CLI をインストールしたら、
gcloud auth login
を実行して Google Cloud アカウントを認証する必要があります。
Kubernetes クラスタ内の各ノードには、次のものが必要です。
- 2 基以上の x86 または AMD64 CPU。
- 8 GB 以上の RAM。
- Linux カーネル バージョン 4.18 以降。
- コントロール グループ v2(cgroup v2)が有効になっている。
AlloyDB Omni オペレーターをインストールする
AlloyDB Omni オペレータをインストールする手順は次のとおりです。
いくつかの環境変数を定義します。
export GCS_BUCKET=alloydb-omni-operator
export HELM_PATH=$(gcloud storage cat gs://$GCS_BUCKET/latest)
export OPERATOR_VERSION="${HELM_PATH%%/*}"
AlloyDB Omni オペレーターをダウンロードします。
gcloud storage cp gs://$GCS_BUCKET/$HELM_PATH ./ --recursive
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
ダウンロードした 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 データベース クラスタを作成する前に、次の手順を完了する必要があります。それ以外の場合は、これらの手順をスキップできます。
次のように
system:controller:statefulset-controller
クラスタロールを編集して、AlloyDB Omni インスタンスのファイナライザを更新する権限を追加します。kubectl edit clusterrole system:controller:statefulset-controller
テキスト エディタで、クラスタロールの末尾に次の行を追加します。
- 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
次のように、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 ギガバイトに設定することをおすすめします。たとえば、このマニフェストの前半でcpu
を2
に設定した場合は、memory
を16Gi
に設定することをおすすめします。DISK_SIZE
: データベース インスタンスあたりのディスクサイズ(例:10Gi
)。
このマニフェストを適用すると、Kubernetes クラスタに、指定されたメモリ、CPU、ストレージ構成を持つ AlloyDB Omni データベース クラスタが含まれます。新しいデータベース クラスタとのテスト接続を確立するには、事前インストールされた psql
を使用して接続するをご覧ください。
Kubernetes マニフェストとその適用方法の詳細については、リソースの管理をご覧ください。