Creating or configuring a GKE cluster for Hybrid Manager#
GKEクラスター#
Hybrid ManagerHMをインストールするにはGKEクラスターが必要です。必要に応じて、GKEドキュメントの Creating a regional cluster に関するドキュメントに従って、新しいものをセットアップします。
アクセス許可#
roles/container.admin にKubernetes Engine Admin
権限があることを確認します。
さまざまなノードタイプ#
HMは、GKE上のさまざまなノードのセットでの管理サービスハイブリッドマネージャーとPostgreSQLワークロードの実行をサポートしていますが、追加のノードプールが必要です。
さまざまなノードセットを実装するには、次の手順を実行します。
ハイブリッドマネージャーノード#
ハイブリッドマネージャーノードを、独自のノードタイプで実装できる論理グループを作成するには
ラベルで、次を設定します。
edbaiplatform.io/control-plane: "true"
テイントで、次を設定します。
key: edbaiplatform.io/control-plane
value: "true"
effect: NoSchedule
PostgreSQLワークロードノード#
Postgresワークロードノードを、独自のノードタイプで実装できる論理グループにするには
ラベルで、次を設定します。
edbaiplatform.io/postgres: "true"
テイントで、次を設定します。
key: edbaiplatform.io/postgres
value: "true"
effect: NoSchedule
GKE管理対象ノードグループのラベルとテイントを追加する方法の詳細については、ドキュメント here を参照してください。
オブジェクトストレージの構成#
オブジェクトストレージバックエンド
HMバックアップをサポートするには、クラスターを専用のオブジェクトストレージソリューション
STORAGE_CLASS 、例、GCPバケットに接続します。
特に、ハイブリッドマネージャーはこのバケットを使用して以下を保存します。
管理対象ストレージの場所
Postgres WAL + バックアップ
ログPostgresと内部サービスの両方
メトリックPostgresと内部サービスの両方
GCPバケットを作成する#
gcloud CLI をダウンロードしてインストールします。
GCPバケットを作成するための環境変数を設定します。
export GCP_PROJECT_ID="appliance-dev-444915" # change me to your own gcp project id
export GCP_BUCKET_NAME="tq-upm45906" # change me to your preferred bucket name
export GCP_BUCKET_REGION="us" # change me to your preferred location id
HMに使用するGCPバケットをホストするプロジェクトを設定します。
gcloud config set project $GCP_PROJECT_ID
バケットを作成します。
gcloud storage buckets create gs://$GCP_BUCKET_NAME --location=$GCP_BUCKET_REGION
バケットの階層名前空間が無効になっていることを確認します。
バケットユーザーを作成する#
専用バケットを作成した後、バケットにアクセスするために必要な権限roles/storage.admin
を持つハイブリッドマネージャーのサービスアカウントを作成します。
必要な環境変数を設定します。
export SERVICE_ACCOUNT_NAME="tq-upm45906" # change this to your preferred service account name
export SERVICE_ACCOUNT_EMAIL=$SERVICE_ACCOUNT_NAME@$GCP_PROJECT_ID.iam.gserviceaccount.com
サービスアカウントを作成します。
gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME
バケットのサービスアカウントにストレージ管理ロールを割り当てます。
gcloud storage buckets add-iam-policy-binding gs://$GCP_BUCKET_NAME \
--member="serviceAccount:$SERVICE_ACCOUNT_EMAIL" \
--role="roles/storage.admin"
次のユーザー権限でjsonキーを作成します。
gcloud iam service-accounts keys create key-file.json \
--key-file-type=json \
--iam-account=$SERVICE_ACCOUNT_EMAIL
base64エンコードされた資格情報を取得します。
export GCP_CREDENTIAL_BASE64=$(base64 -w0 < key-file.json)
export GCP_CREDENTIAL_BASE64=$(base64 < key-file.json)
バケットアクセスのシークレットを作成する#
バケットへのHMアクセスのための専用ユーザーを準備した後、作成したユーザーをハイブリッドマネージャーに関連付けるシークレットを作成して、オブジェクトストレージへのアクセスを提供します。
apiVersion: v1
kind: Secret
metadata:
# The name must be edb-object-storage
name: edb-object-storage
# The namespace must be default
namespace: default
stringData:
# Specifies the cloud provider. In this case, it is set to gcp.
provider: gcp
# The region where the GCP bucket is located.
location_id: ${GCP_BUCKET_REGION}
# The ID of the GCP project.
project_id: ${GCP_PROJECT_ID}
# The name of the GCP bucket.
bucket_name: ${GCP_BUCKET_NAME}
# The base64 encoded JSON credentials for accessing the GCP bucket.
credentials_json_base64: ${GCP_CREDENTIAL_BASE64}
AES-256キーを作成する#
認証用のAES-256キーを生成します。
export AES_256_KEY=$(openssl rand -base64 32)
HMコンテナイメージをプライベートレジストリに同期する#
HMを使用する要件は、独自の安全で承認された内部レジストリをホストする必要があることです。また、インストールするHMのバージョンを知る必要があります。同期プロセスは、基本的にCloudsmithからすべてのアーティファクトを取得し、関連するHelmチャートでHMをインストールまたはアップグレードする前に、内部レジストリと内部同期することです。
同期プロセスは、コンテナイメージSHA256を保持して、さまざまな環境全体でイメージのセキュリティと不変性を保証します。
プロセスを実行するには
このツールを使用して同期を行うため、 skopeo をインストールします。
同期するHMリリースを構成します。
export EDBPGAI_RELEASE=<your-release-version>
EDB Cloudsmithアクセストークンを構成します。
export CS_EDB_TOKEN=<your-cloudsmith_edb_token>
イメージリストアーティファクトをダウンロードします。
curl -sLO "https://downloads.enterprisedb.com/${CS_EDB_TOKEN}/pgai-platform/raw/names/${EDBPGAI_RELEASE}-images.txt/versions/${EDBPGAI_RELEASE}/images.txt"
EDB Cloudsmithレジストリソースを構成します。
export LOCAL_REGISTRY_URI=<your-local-registry-address>
skopeoを使用してソースレジストリにログインし、要求に応じて必要な資格情報を提供します。
skopeo login docker.enterprisedb.com
skopeoを使用して宛先レジストリにログインし、要求に応じて必要な資格情報を提供します。
skopeo login <your-local-registry-address>
画像リストを解析し、各画像を同期します。
while read -r image; do skopeo --override-os linux copy --multi-arch all docker://$EDB_SOURCE_REGISTRY/${image/: *@/@} docker://$LOCAL_REGISTRY_URI/${image/:* @/@} --retry-times 3; done < images.txt
HMに必要な名前空間と必要なシークレットを作成する#
プリインストールのこのフェーズでは、HMに必要な名前空間と、それに必要なシークレットを作成します。名前空間とシークレットの両方がインストールプロセスで使用されます。
必要なコンテナレジストリ環境変数を設定します。
export CONTAINER_REGISTRY_URI=<local-registry-uri>
export CONTAINER_REGISTRY_USERNAME=<container-registry-username>
export CONTAINER_REGISTRY_PASSWORD=<container-registry-password>
LakeKeeperのPostgres交絡キーとGriptapeのfernetキーを生成および設定します。
PG_CONFOUNDING_KEY=$(dd if=/dev/urandom bs=32 count=1 2>/dev/null | base64)
FERNET_KEY=$(dd if=/dev/urandom bs=32 count=1 2>/dev/null | base64)
必要な名前空間を作成します。
kubectl create ns edbpgai-bootstrap
kubectl create ns upm-replicator
kubectl create ns upm-lakekeeper
kubectl create namespace upm-griptape
HM、UPM-レプリケーター、LakeKeepr、およびGriptapeのシークレットを作成します。
kubectl create secret docker-registry edb-cred \
-n edbpgai-bootstrap \
--docker-server="${CONTAINER_REGISTRY_URI}" \
--docker-username="${CONTAINER_REGISTRY_USERNAME}" \
--docker-password="${CONTAINER_REGISTRY_PASSWORD}"
kubectl create secret docker-registry edb-cred \
-n upm-replicator \
--docker-server="${CONTAINER_REGISTRY_URI}" \
--docker-username="${CONTAINER_REGISTRY_USERNAME}" \
--docker-password="${CONTAINER_REGISTRY_PASSWORD}"
kubectl create secret generic pg-confounding-key \
--from-literal=PG_CONFOUNDING_KEY=${PG_CONFOUNDING_KEY} \
--namespace=upm-lakekeeper
kubectl create secret generic fernet-secret \
--from-literal=FERNET_KEY=${FERNET_KEY} \
--namespace=upm-griptape
シークレットに注釈を付けます。
kubectl annotate secret -n upm-replicator edb-cred replicator.v1.mittwald.de/replicate-to="*" --overwrite
グリップテープのシークレット#
グリップテープシークレットの設定については、 following documentation を参照してください。
カタログシークレット#
カタログシークレットの設定については、 following documentation を参照してください。
シークレットがすべて設定されたので、インストールに必要な setting up the environmental variables に進むことができます。