Creating an Red Hat OpenShift cluster for use with Hybrid Manager#

installed your system が完了したら、Hybrid ManagerHMで使用するRed Hat OpenShiftRHOSクラスターを作成する準備が整います。

HMインストールのためのOpenShiftクラスターの準備#

Red Hat OpenShiftRHOSオンプレミスクラスターにHMを正常にインストールするには、特定の前提条件と構成を満たしている必要があります。

事前構成のクラスター要件#

  • HMは現在サポートしています

    • OpenShift 4.17 with Kubernetes 1.30

or:

  • OpenShift 4.18 with Kubernetes 1.31

ステップ1ネットワークを構成する#

  • ネットワークポリシーを定義します。 Kubernetesコントロールプレーン、ワーカーノード、外部システム間のトラフィックを管理するために、適切なネットワークポリシーが設定されていることを確認します。

  • イングレス/エグレスルールを定義します。

  • クラスターコンポーネントとHMスタック間の通信が安全であることを確認します。 - 入力/出力ネットワークポリシーを検証して、不要な外部アクセスを制限しながら、クラスターコンポーネントが通信できるようにします。

  • ロードバランサーのセットアップ 外部ロードバランサーを使用する場合、OpenShift APIトラフィックとワーカーノード通信を処理するように構成します。

  • DNSの構成 HMの内部サービス検出を含む、クラスターにDNSレコードが設定されていることを確認します。

  • クラスターにワーカーノード用の適切なプライベートネットワーク分離があることを確認します。 OpenShiftは通常、ソフトウェア定義のネットワークSDN構成を介してこれを処理します。

ステップ2ノードサイズとリソースを構成する#

HMとその関連コンポーネントをサポートするには、OpenShiftクラスター内のノードがリソース要件を満たしている必要があります。

ノードのサイジング#

  • マスターノード OpenShiftコントロールプレーンノードは、リソース割り当ての標準要件CPU、メモリ、ディスクサイズなどを満たしている必要があります。

    • 一般的な推奨事項

      • 3つのマスターノードそれぞれに次のものが含まれます。

        • CPU

          • 最小値4つのvCPU最大10のワーカーノードの場合

          • 推奨 中規模のクラスター10〜50のワーカーノード用の8 vCPU

          • 50ワーカーノードの場合 16+ vCP Us

        • メモリ

          • 最小 32 GB RAM最大10の場合ワーカーノード)

          • 推奨 大規模なワークロード10〜50ワーカーノードの場合は64 GB RAM以上

          • 50ワーカーノードの場合 64+ GB RAM

        • Disk

          • 最小100 GB SSD

          • 推奨 大規模なワークロードの場合は200 GB SSDs

          • 50ワーカーの場合ノード >200 GB SSD

  • ワーカーノード HM制御コンポーネントとPostgresクラスターを処理するために十分なリソースをワーカーノードに割り当てます。小規模なワークロードには、HM制御コンポーネント用に3つのワーカーノードとPostgresワークロード用の3つのワーカーノードをお勧めします。5〜20のPostgresクラスター)。ここからPostgresワークロードをスケールアップすると、Postgresワークロード用により多くのワーカーノードが必要になり、最終的にはPostgresワークロードワーカーノードの数の増加をサポートするためにさらに多くの制御ワーカーノードが必要になる場合があります。

    • 一般的な推奨事項

    • 6つのワーカーノードそれぞれ:

      • CPU :

        • 最小4 vCPUこれは、ワークロードの種類によっては高くなる場合があります

      • メモリ

        • 最小 ノードごとに32 GBのRAM

      • ディスク

        • 最小 ノードごとに100 GBの永続ストレージ データベースとロギングの要件に基づいて調整します)。最適なパフォーマンスを得るには、高速ディスクSSDを使用します。

HM制御ノードとPostgresワークロードをホストするHM Postgresデータノードに異なるタイプのノードをオプションで使用するには、RHOSに追加のマシンセットが必要です。

  • 制御ノードマシンセット

spec:
    replicas: 3
    template:
    spec:
        metadata:
        labels:
            edbaiplatform.io/control-plane: "true"
    taints:
    - key: edbplatform.io/control-plane
        value: "true
        effect: NoSchedule
  • Postgresワークロードマシンセットをホスティングするデータノード

spec:
    replicas: 3
    template:
    spec:
        metadata:
        labels:
            edbaiplatform.io/control-plane: “true”
        taints:
        - key: edbplatform.io/control-plane
            value: "true"
            effect: NoSchedule

リソース予約#

  • HMワークロードとの競合を防ぐには、システムコンポーネント用にCPUとメモリを予約します。

  • HMモニタリングおよび可観測性ツールたとえば、Grafana、Loki、およびPrometheusに追加リソースを割り当てます。

  • ノードプール構成

    • 必要に応じて、テイントと寛容を使用して、特定のノードでHMワークロードを分離します。

    • 特定のタスクたとえば、「モニタリング」、「データベース」のノードにラベルを付けて、リソース割り当てを最適化します。

  • スケーリング

  • 自動スケーリングを設定して、クラスターが需要の増加を動的に処理できるようにします。 OpenShiftのホリゾンタルポッドオートスケーラーHPAを使用して、必要に応じてポッドをスケーリングできます。

ネットワーキング帯域幅#

各ノードに、HM通信と外部データ転送S3バックアップなどを処理するための十分なネットワーク容量があることを確認します。

ベースラインの推奨事項

Component

Recommended bandwidth

Justification

K8s control plane nodes

1 Gbps+ per node

Handles internal Kubernetes traffic, API server requests, logs/metrics, and orchestration tasks.

Worker nodes (HM)

1 Gbps+ per node

For HM control components, PostgreSQL replication, internode communication, and metrics/logs.

External bandwidth

1-20 Gbps (aggregated)

S3 backups and inter-cluster replication may require high throughput.

ステップ3必要なCSIドライバーをインストールする#

HMは、CSIドライバーに依存するストレージおよびスナップショット機能を使用します。次のドライバーがOpenShiftクラスターにインストールされ、適切に構成されていることを確認します。

  • 永続的ストレージドライバー ストレージバックエンドたとえば、OpenShift Container Storage、Ceph、またはその他のオンプレミスソリューションなどと互換性のあるストレージクラスドライバーをインストールします。

  • スナップショットコントローラ ボリュームスナップショット管理用にCSIスナップショットコントローラを構成します。

ステップ4ストレージクラスを構成する#

デフォルトのストレージクラス HMワークロードに最適化されたデフォルトのストレージクラスを設定します。

カスタムストレージクラス 特定のワークロードでカスタム構成が必要な場合、追加のストレージクラスを作成します。

ローカルストレージオプショナル 共有外部ストレージが不足しているオンプレミスクラスターの場合、LVM Storage Operatorを使用してローカルストレージを管理します。この方法は、ワーカーノード上のローカルディスクから直接、高性能、低レイテンシーの永続ボリュームをプロビジョニングします。詳細については、 LVM storage installation を参照してください。

ステップ5名前空間とシークレットを準備する#

HMの名前空間 HMコンポーネントの専用の名前空間を作成して、分離と管理性を保証します。

oc create ns edbpgai-bootstrap

シークレット オブジェクトストレージ資格情報、データベースアクセストークン、またはその他の機密情報など、必要な資格情報のKubernetesシークレットを作成します。以下は、HM固有のシークレットと構成です。最初のImagePullSecretは、HMが適切に機能するために必要です。カタログのグリップテープとDeltaLakeオブジェクトストレージとシークレットは、GenAI Builderまたはカタログのどちら用にクラスターを設定するかによって異なるため、オプショナル。

  • ImagePullSecretと名前空間の構成 HMに必要

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

OC Registryにもっと簡単にログインできるように、設定するコンテナレジストリ変数がいくつかあります。

export CONTAINER_REGISTRY_URI=<local-registry-uri>
export CONTAINER_REGISTRY_USERNAME=<container-registry-username>
export CONTAINER_REGISTRY_PASSWORD=<container-registry-password>
  1. プルシークレットファイルを準備します。

イメージプルシークレットのディレクトリを準備します。

tmpdir=$(mktemp -d /tmp/hm-pull-secret)
chmod 0700 "${tmpdir}"
  1. レジストリにログインし、シークレットを更新します。

OCレジストリにログインします。

oc registry login \
--registry="${CONTAINER_REGISTRY_URI}" \
--auth-basic="${CONTAINER_REGISTRY_USERNAME}:${CONTAINER_REGISTRY_PASSWORD}" \
--to="$tmpdir/pull-secret"

次に、シークレットを更新します。

oc set data secret/pull-secret -n openshift-config \
    --from-file=.dockerconfigjson="$tmpdir/pull-secret"
  1. クリーンアップ。

シークレット用に作成した一時ディレクトリをクリーンアップします。

rm -rf $tmpdir

Create a secret for Griptape and configure DeltaLake object storage GenAI Builderのオプショナル**

Create a secret for Catalog カタログを使用する場合のオプショナル**

Create custom secrets for Migration Portal Migration Portalとの内部通信を保護するオプション**

ステップ6認証キーとセキュリティキーを構成する#

HMとその基になるコンポーネントには、コンポーネント間の適切な通信を保証し、機密データを保護するために、安全な認証メカニズムが必要です。

  1. AES-256暗号化キーを生成します。

HMは、AES-256暗号化を使用して、通信中または保存中の機密データたとえば、データベース資格情報、トークンなどを保護します。ランダムなAES-256暗号化キーを生成するには

export AES_256_KEY=$(openssl rand -base64 32)
  1. キーをKubernetesに保存します。

HMおよび関連サービスがキーにアクセスできるようにするには、適切な名前空間にKubernetesシークレットを作成します。

  1. 次のコマンドを実行してシークレットを作成します。

kubectl create secret generic hm-auth-key \
    --namespace <hm-namespace> \
    --from-literal=aes-256-key=$AES_256_KEY
  1. シークレットを確認します。

kubectl get secret hm-auth-key --namespace <hm-namespace>

ステップ7オブジェクトストレージを構成する#

オブジェクトストレージバックエンド HMバックアップをサポートするには、クラスターを専用のオブジェクトストレージソリューションたとえば、MinIO、Ceph Object Gateway、またはAWS S3互換ストレージに接続します。

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

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

  • Postgres WAL + バックアップ

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

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

バケットを作成する#

MinIO または Ceph bucket を作成します。

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

プロバイダーでハイブリッドマネージャー用の専用バケットを作成した後、バケットへの完全なアクセスを持つIDユーザーと、IDユーザーのAWS静的資格情報を作成して、バケットへのハイブリッドマネージャーにアクセスを付与します。

MinIO Client をダウンロードします。

  1. MinIO展開名を取得し、ユーザー名とパスワードを作成します。

export MINIO_DEPLOYMENT_NAME=<minio_deployment_name> # deployment name to minio
export BUCKET_NAME=<minio_bucket_name> # bucket name
export AWS_ACCESS_KEY_ID=<minio_user_name> # user name
export AWS_SECRET_ACCESS_KEY=<minio_user_password> # password to the user
export MINIO_POLICY_NAME=<minio_policy_name> # policy to minio
  1. 新しいユーザーを作成します。

mc admin user add ${MINIO_DEPLOYMENT_NAME} ${AWS_ACCESS_KEY_ID} ${AWS_SECRET_ACCESS_KEY}
  1. MinIOポリシーを1つ作成します。

cat << EOF > policy.json
{
    "Version" : "2012-10-17",
    "Statement": [
        {
            "Effect" : "Allow",
            "Action" : [
                "s3:*"
            ],
            "Resource" : [
                "arn:aws:s3:::${BUCKET_NAME}",
                "arn:aws:s3:::${BUCKET_NAME}/*"
            ]
        }
    ]
}
EOF
  1. ポリシーを適用します。

mc admin policy create ${MINIO_DEPLOYMENT_NAME} ${MINIO_POLICY_NAME} ./policy.json
  1. ポリシーをユーザーにアタッチします。

mc admin policy attach ${MINIO_DEPLOYMENT_NAME} ${MINIO_POLICY_NAME} --user ${AWS_ACCESS_KEY_ID}

Cephのコマンドラインインターフェイス Radosgw-admin utility をダウンロードします。

  1. バケットといくつかの環境変数を取得します。

export BUCKET_NAME=<bucket_name> # bucket name
export USER_NAME=<user_name> # user name
  1. ユーザーを作成します。

radosgw-admin user create --uid ${USER_NAME} --display-name= ${USER_NAME} > user.json

export AWS_ACCESS_KEY_ID=$(cat user.json | jq -r .keys[0].access_key)
export AWS_SECRET_ACCESS_KEY=$(cat user.json | jq -r .keys[0].secret_key)
  1. ユーザーにバケットへのアクセスを付与します。

radosgw-admin bucket link --bucket ${BUCKET_NAME} --uid ${USER_NAME}

バケットアクセスのシークレットを作成する#

バケットへのHMアクセスのための専用ユーザーを準備した後、作成したユーザーをハイブリッドマネージャーに関連付けるシークレットを作成して、オブジェクトストレージへのアクセスを提供します。

apiVersion: v1
kind: Secret
metadata:
  name: edb-object-storage # name cannot be changed
  namespace: default # namespace cannot be changed
stringData:
    auth_type: credentials

    # Optional: Used only when the object storage servers certificate is not issued by a well-known CA
    #
    # Base64 string of the CA bundle for the certificate used by the object storage server
    aws_ca_bundle_base64: xxx

    # Required: Endpoint URL to the object storage
    aws_endpoint_url_s3: xxx

    # Required: AWS Static Credentials - AWS_ACCESS_KEY_ID
    aws_access_key_id: xxx

    # Required: AWS Static Credentials - AWS_SECRET_ACCESS_KEY
    aws_secret_access_key: xxx

    # Required: Bucket name
    bucket_name: xxx

    # Required: Region of the bucket
    aws_region: xxx

    # Optional: true or false
    #
    # When server-side encryption is disabled, set this to true. By default, its value is false, indicating that server-side encryption is enabled.
    server_side_encryption_disabled: bool

ステップ8ネットワークセキュリティを検証する#

  • ファイアウォールルール OpenShiftクラスター、外部オブジェクトストレージ、およびHMの外部依存関係の間で必要な通信がファイアウォールルールで許可されていることを確認します。

  • 上り/下りルール 必要なエンドポイントとIP範囲のみにアクセスを制限して、露出を最小限に抑えます。

ステップ9クラスター構成を調整する#

一部のデフォルトのOpenShift構成は調整が必要になる場合があります。

  • ノードプールの調整 リソースの割り当て、テイント/トレランスを含む、HMワークロードのノード構成を最適化します。

  • ストレージクラスの調整 必要に応じて、デフォルトのストレージクラスを置き換えまたは変更します。

  • ネットワークポリシー ネットワーク構成を調整して、HM要件との互換性を保証します。

ステップ10必要なアドオンをインストールする#

  • 必要なOpenShiftオペレーターまたはアドオンのインストールと構成

    • サービスメッシュ HMはistioサービスに依存しています Mesh.

    • モニタリングとロギング OpenShiftモニタリングおよびロギングソリューションを設定して、HM可観測性コンポーネントと統合します。

必要な環境変数の設定に進みます。#

クラスターが構成されたら、プレインストールの次のフェーズ setting the necessary environmental variables for installation に進みます。