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ワークロードの実行をサポートしていますが、追加のノードプールが必要です。

さまざまなノードセットを実装するには、次の手順を実行します。

ハイブリッドマネージャーノード#

ハイブリッドマネージャーノードを、独自のノードタイプで実装できる論理グループを作成するには

  1. ラベルで、次を設定します。

edbaiplatform.io/control-plane: "true"
  1. テイントで、次を設定します。

key: edbaiplatform.io/control-plane
value: "true"
effect: NoSchedule

PostgreSQLワークロードノード#

Postgresワークロードノードを、独自のノードタイプで実装できる論理グループにするには

  1. ラベルで、次を設定します。

edbaiplatform.io/postgres: "true"
  1. テイントで、次を設定します。

key: edbaiplatform.io/postgres
value: "true"
effect: NoSchedule

GKE管理対象ノードグループのラベルとテイントを追加する方法の詳細については、ドキュメント here を参照してください。

オブジェクトストレージの構成#

オブジェクトストレージバックエンド HMバックアップをサポートするには、クラスターを専用のオブジェクトストレージソリューション STORAGE_CLASS 、例、GCPバケットに接続します。

特に、ハイブリッドマネージャーはこのバケットを使用して以下を保存します。

  • 管理対象ストレージの場所

  • Postgres WAL + バックアップ

  • ログPostgresと内部サービスの両方

  • メトリックPostgresと内部サービスの両方

GCPバケットを作成する#

gcloud CLI をダウンロードしてインストールします。

  1. 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
  1. HMに使用するGCPバケットをホストするプロジェクトを設定します。

gcloud config set project $GCP_PROJECT_ID
  1. バケットを作成します。

gcloud storage buckets create gs://$GCP_BUCKET_NAME --location=$GCP_BUCKET_REGION

バケットの階層名前空間が無効になっていることを確認します。

バケットユーザーを作成する#

専用バケットを作成した後、バケットにアクセスするために必要な権限roles/storage.admin を持つハイブリッドマネージャーのサービスアカウントを作成します。

  1. 必要な環境変数を設定します。

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
  1. サービスアカウントを作成します。

gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME
  1. バケットのサービスアカウントにストレージ管理ロールを割り当てます。

gcloud storage buckets add-iam-policy-binding gs://$GCP_BUCKET_NAME \
  --member="serviceAccount:$SERVICE_ACCOUNT_EMAIL" \
  --role="roles/storage.admin"
  1. 次のユーザー権限でjsonキーを作成します。

gcloud iam service-accounts keys create key-file.json \
  --key-file-type=json \
  --iam-account=$SERVICE_ACCOUNT_EMAIL
  1. 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)

コンテナイメージの同期#

続行する前に、 Sync container images to your registry の説明に従って、ハイブリッドマネージャーコンテナイメージをプライベートレジストリに同期していることを確認してください。これはインストールの必須前提条件です。

HMに必要な名前空間と必要なシークレットを作成する#

プリインストールのこのフェーズでは、HMに必要な名前空間と、それに必要なシークレットを作成します。名前空間とシークレットの両方がインストールプロセスで使用されます。

  1. 必要なコンテナレジストリ環境変数を設定します。

export CONTAINER_REGISTRY_URI=<local-registry-uri>
export CONTAINER_REGISTRY_USERNAME=<container-registry-username>
export CONTAINER_REGISTRY_PASSWORD=<container-registry-password>
  1. 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)
  1. 必要な名前空間を作成します。

kubectl create ns edbpgai-bootstrap
kubectl create ns upm-replicator
kubectl create ns upm-lakekeeper
kubectl create namespace upm-griptape
  1. 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
  1. シークレットに注釈を付けます。

kubectl annotate secret -n upm-replicator edb-cred replicator.v1.mittwald.de/replicate-to="*" --overwrite

グリップテープのシークレット#

グリップテープシークレットの設定については、 following documentation を参照してください。

カタログシークレット#

カタログシークレットの設定については、 following documentation を参照してください。

シークレットがすべて設定されたので、インストールに必要な setting up the environmental variables に進むことができます。