Gathering your system requirements#
概要#
前提条件#
フェーズ1 アーキテクチャの計画 完成品
結果#
*フェーズ3で使用するコンピューティング、ネットワーク、およびストレージインフラストラクチャの検証された高レベルのインベントリ フェーズ3Kubernetesクラスターの展開 *
フェーズ4で使用する準備ができているとして検証された多数の要件 :ref:`Preparing your environment <Preparing your environment>` 、およびHM Helmチャートに定義された多数の初期入力 ``values.yaml`` フェーズ4終了時の``values.yaml`` :ref:`Preparing your environment <Preparing your environment>` 。
注釈
EDBのセールスエンジニアリングとプロフェッショナルサービスは、セールスサイクル中または作業ステートメントSoWを介して、詳細な展開要件を伝達および明確にするための主要なリソースです。 公式ドキュメントには、包括的なチェックリストも提供されています。
次のフェーズ フェーズ3 フェーズ3Kubernetesクラスターの展開
アーキテクチャへの接続#
フェーズ2のために以下にリストされている要件は、すべてが汎用的なものではありません。多くは、 ** フェーズ1 アーキテクチャの計画 ** で行われた決定の直接の結果です。
ローカリティの決定 は、コントロールプレーンとデータプレーン間のレイテンシー要件を決定します。
ディザスターリカバリー目標 は、特定のオブジェクトストレージ構成レプリケーション用の必要性を決定します。
アクティブ度アクティブ/アクティブ は、 Postgres Distributedに必要な特殊なネットワーキングが必要かどうかを判断します。
重要
このドキュメントは包括的な技術チェックリストとして機能しますが、 **EDB Professional Services**は、複雑な展開アーキテクチャを検証するための主要なリソースです。フェーズ1の「ターゲット状態」にマルチリージョンの冗長性または高スケールの要件が含まれる場合、インフラストラクチャを調達する前に作業ステートメントSoWを介してこれらの詳細な要件を明確にすることをお勧めします。
導入準備状況チェックリスト#
このチェックリストを使用して、必要なインフラストラクチャコンポーネントをすべて利用できることを高レベルで確認します。
:ref:` <#1-management-workstation-bastion-host>`
:ref:` <#2-kubernetes-platform-verification>`
:ref:` <#3-compute-node-requirements>`
3.1 3.1コントロールプレーンノード
3.2 3.2データプレーンノード
3.3 AIモデルノード
:ref:` <#4-local-networking>`
:ref:` <#5-ingress>`
5.2 Domain Name Service
5.3 Portal certificate management/TLS
:ref:` <#6-block-storage-database--logs>`
:ref:` <#7-object-storage>`
:ref:` <#8-container-registry>`
:ref:` <#9-identity-provider-idp>`
:ref:` <#10-key-management-service-kms>`
1.管理ワークステーションBastionホスト#
展開をオーケストレーションするには、指定されたマシンが必要です。 これは、ラップトップパブリッククラスターの場合またはクラウドベースのBastionホストプライベートクラスターの場合です。
注釈
Kubernetes API、ポータル、およびPostgreSQLエンドポイントへの安全なプライベートアクセスには、 **Bastion host**またはジャンプホスト/ボックスを強くお勧めします。このホストは、インストールと検証アクティビティのための専用の操作ワークステーションとして機能します。 EDBリモートDBAまたはマネージドサービス契約の場合、専用のBastionは**必須**です。
一般的な要件#
オペレーティングシステム Linux AMD64/ARM64またはmacOS。 **注:*Windowsユーザーは WSL2 Linux用Windowsサブシステムを使用する必要があります。
ネットワークアクセス *** Kubernetes API: クラスターAPIサーバー通常はポート6443へのネットワーク接続が必要です。* インターネット/レジストリ** Container Registryに到達して、Helmチャートとイメージをプルできる必要があります。
ストレージ 最小限構成ファイルと証明書を保持するのに十分な。
必要な工具在庫#
この段階ではこれらのツールをインストールする必要はありません。 ただし、ワークステーション環境で、次のフェーズフェーズ3で次のバイナリのインストールと実行が許可されていることを確認する必要があります。
コアインストールツール
edbctlEDBハイブリッドマネージャーCLIkubectlKubernetes CLI +cnpgプラグインhelmKubernetesパッケージマネージャーyqコマンドラインYAMLプロセッサー
ユーティリティ
curlダウンロードユーティリティopenssl証明書管理htpasswd静的ユーザーを使用する場合にのみ必要
プラットフォームCLI環境に依存します
awsAWS CLIgcloudGoogle Cloud CLIocOpenShift CLI
操作ツールインストール後
pgdcliPostgres Distributed管理sentinelモニタリングとフェイルオーバー管理
2. Kubernetesプラットフォームの検証#
プロビジョニングするクラスターが ** フェーズ1 アーキテクチャの計画 ** フェーズで選択したプラットフォームと一致することを確認します。
サポートされているディストリビューション クラウドサービスプロバイダープラットフォーム Microsoft Azure Amazon EKS Google GKE
オンプレミスプラットフォーム Rancher RKE2 * Red Hat OpenShift RHOS
プロビジョニング制約
専用クラスター クラスターはハイブリッドマネージャー専用である必要があります。他のワークロードとのマルチテナントは サポートされていません 。
関係 1:1 1つのクラスターごとに1つのHM展開。
ライフサイクル Kubernetesレイヤーのプロビジョニング、アップグレード、およびスケーリングは自分の責任です。
構成の依存関係#
プラットフォームの選択は、 values.yaml
ファイルの特定の値を示します。
次のフェーズに向けてこれらを記録します。
Parameter |
YAML Key |
Required Value |
|---|---|---|
System Flavor |
system |
eks, gke, rke2, or rhos |
Provider |
beaconAgent.provisioning.provider |
AWS or GCP (If on cloud) |
OpenShift |
beaconAgent.provisioning.openshift |
Set to true only if using Red Hat OpenShift. |
3.コンピューティングノードの要件#
ワーカーノードが ** フェーズ1 アーキテクチャの計画 ** フェーズで定義されたとおりに、目的の展開トポロジの最小サイズとフル機能を満たしていることを確認します。
ハイブリッドマネージャーコンポーネントには、 AMD64/x86-64ノード が必要です。 PostgreSQL自分自身はARM64で実行できますが、混合アーキテクチャクラスターARM64 + AMD64は、HMではサポートされていません。
ノードロールの概要#
Node type |
Purpose |
Count |
Kubernetes nodes |
Required label |
|---|---|---|---|---|
Control plane |
Runs HM control plane & telemetry. |
3+ |
Control or Worker |
edbaiplatform.io/control-plane: "true" |
Data plane |
Runs Postgres databases. |
0 or 3+ |
Worker |
edbaiplatform.io/postgres: "true" |
AI model (GPU) |
Optional: Runs AI/ML workloads. |
0 or 2+ |
Worker |
nvidia.com/gpu: "true" |
ノードプールAWSノードグループ、RHOSマシンセットなどを使用して、リソースを管理し、必要なラベル/テイントを適用します。
ほとんどの場合、HMはクラウド環境のKubernetesワーカーノードで実行され、管理対象制御ノードへのアクセスがないため。EKSコントロールプレーンアクセスを参照してください。オンプレミスクラスターの制御ノード
see Kubernetes control plane documentation またはワーカーノードで実行できます。
3.1コントロールプレーンノード#
コントロールプレーンのリソース要件は、監視するデータベースの数に応じて増加します。注テレメトリースタックは、モニタリング負荷に応じてスケーリングします。
サイズガイドライン
Resource |
Minimum (Up to 10 DBs) |
Standard (10–50 DBs) |
Large (>50 DBs) |
|---|---|---|---|
CPU |
8 vCPUs |
16 vCPUs |
16+ vCPUs |
Memory |
32 GB RAM |
64 GB RAM |
64+ GB RAM |
Disk |
100 GB SSD |
200 GB SSD |
>200 GB SSD |
Quantity |
3 nodes |
3 nodes |
3+ nodes |
3.2データプレーンノード#
データプレーンノードは、ユーザーがプロビジョニングした PostgreSQL データベースクラスターをホストするようにサイズを調整する必要があります。
サイジング 予想されるデータベースワークロード、ストレージ要件、および フェーズ1 アーキテクチャの計画 で定義されたパフォーマンスSLAに完全に依存します。
3.3 AIモデルノード#
サイジング 現在の推奨事項では、 Nvidia B200 GPU または同等のサポートされているハードウェアが必要です。
ノードの抽象化#
HMコントロールプレーンが専用リソースで実行され、Postgresワークロードが独立したリソースで実行されるように保証、またはAIワークロードの専用リソースを分割するには、 フェーズ3Kubernetesクラスターの展開 の前にこれらのノードプールに特定の構成を適用する必要があります。
4.ローカルネットワーキング#
ローカルネットワークの要件#
HMは、ローカルネットワーキングロジックについて厳密な意見を持っていません。 アベイラビリティーゾーン間で 低レイテンシーと高帯域幅 を提供する場合、主要なクラウドサービスプロバイダーAWS、Azure、GCPが提供する標準のネットワーキング機能で十分です。
オンプレミス 高可用性を保証には、スイッチング、リンクボンディング、およびリンクの冗長性に関するベストプラクティスに従う必要があります。
プロトコル IPv4のみ 。 KubernetesはIPv4用に構成する必要があります。 IPv6は、ハイブリッドマネージャー用に完全には製品化されていません。 IPv6が必要な場合、内部通信がIPv4のままであるように、ロードバランサーの背後でマスクする必要があります。
定義されたネットワークアドレス空間CIDR クラスターは、次の個別の非オーバーラップIPレンジで構成する必要があります。 ポッドネットワーク clusterCIDR すべてのポッドにIPが割り当てられるIPレンジ。 サービスネットワークserviceCIDR すべての内部サービスClusterIPに仮想IPが割り当てられるIP範囲。 *ファンクションDNSおよびNTP クラスターの内部DNSサービス通常はCoreDNSが実行されており、内部クラスターサービスたとえばkubernetes.defaultと外部アドレスの両方を解決できる必要があります。
コンテナネットワークインターフェイスCNI
機能的なCNIは、ポッド間ネットワーキングの厳密な要件です。
例 キャリコ、シリウム、フランネル
コンテキスト Ciliumは、非常に多くのポッドでより効率的であることが知られています。ただし、 Postgresはハイブリッドマネージャーの中心であるため、データベースI/Oと比較して、極端なポッド密度がボトルネックになることはほとんどありません。スタックを最適化してわずかに良い結果を達成するための追加の努力。顧客のユースケースによっては、それが正当化される場合があります。ただし、多くの場合、優れたソリューションデザインは、インフラストラクチャの制限のほとんどに適応できます。
検証 CNIセットアップとCIDRの割り当てを確認します。
kubectl get nodes -o custom-columns=NAME:.metadata.name,PODCIDR:.spec.podCIDR
kubectl get svc
5.Ingress#
インフラストラクチャ機能に合ったイングレス戦略を選択する必要があります。 次の表は、DNS管理、エンドポイントタイプ、およびSSLターミネーションのサポートされている組み合わせを定義しています。
Scenario |
DNS Management |
Endpoint Type |
Portal SSL/TLS Termination |
|---|---|---|---|
CSP LB (ELB, ALB) |
Manual portal, dynamic postgres |
Dynamic via Load Balancer Controller |
Istio Ingress Gateway |
F5 + F5 K8s Controller |
Manual portal, dynamic postgres |
Dynamic via Load Balancer Controller |
Istio Ingress Gateway |
MetalLB |
Manual |
Dynamic via Load Balancer Controller |
Istio Ingress Gateway |
NodePort (Conventional LB) |
Manual (A record against LB) |
Static (manual) |
Istio Ingress Gateway |
NodePort (No LB) |
Manual (Round Robin against Nodes) |
Static (manual) |
Istio Ingress Gateway |
5.1ロードバランサーコントローラー#
ロードバランサーコントローラの例は、AWS Load BalancerコントローラからMetalLBまたはDNS機能とそのF5ロードバランサーコントローラと組み合わせたBigIP F5まであります。
一般要件
TCP ロードバランサーは TCPパススルーTCPのみ 用に構成する必要があり、SSLを終端しないでください。 SSLはHM Ingress Gatewayによって終端されます。
ファイアウォールの注釈 特定のプロバイダースキームAWSインターネット接続を使用する場合、ロードバランサーを正しくプロビジョニングするための正しい
resourceAnnotationsがわかっています。
AWSの例のアノテーション
resourceAnnotations:
- name: istio-ingressgateway
kind: Service
annotations:
service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing
構成の依存関係
Parameter |
YAML Key |
Value / Format |
|---|---|---|
Enable LB |
beaconAgent.provisioning.loadBalancersEnabled |
true |
Annotations |
resourceAnnotations |
Provider-specific list (see below). |
スポット検証
コントローラがアクティブであることを確認するには、次のコマンドを使用します。
kubectl get pods -A | grep -i load\|lb\|router\|metallb\|gateway
HMコントロールプレーンポート
以下は、ハイブリッドマネージャーコントロールプレーンのポートです。
Port |
Protocol |
Description |
|---|---|---|
443 |
HTTPS |
HMポータルHTTPSイングレス |
8444 |
TCP |
HM内部API |
9443 |
gRPC |
ビーコン gRPC API |
9445 |
TCP |
Spire TLS |
Postgresポートデータプレーン
適切なロードバランサーが設定されている場合、次はPostgresポートです。
Port |
Protocol |
Description |
|---|---|---|
5432 |
TCP |
デフォルトPSQL |
6432 |
TCP |
PGD接続マネージャーPSQL |
5.1.2 NodePort代替#
ロードバランサーが利用できない場合、 NodePort 戦略を使用する必要があります。
構成 HM Helmチャートの
values.yaml構成でbeaconAgent.provisioning.loadBalancersEnabled: falseを構成し、nodePortDomainを定義する必要があります。コンテキスト デフォルトでは、HMコンポーネントは特定のNodePort値でサービスを公開します。 NodePortを直接使用するか、これらのポートを MetalLB ソフトウェアロードバランサーまたは ハードウェアロードバランサー でフロントして、よりわかりやすいDNS名とフェールオーバーを向上させることができます。
デフォルトのノードポートの割り当て
入力にNodePortを使用する場合、次の特定のポートは NodePort を使用する必要があります。
コンストレイン
nodePortDomainベースDNS名を定義する必要があります。コンテキスト HMコンポーネントは、特定のNodePort値でサービスを公開します。 NodePortを直接使用するか、これらのポートのフロントにハードウェアロードバランサーを使用できます。
構成の依存関係
Parameter |
YAML Key |
Value / Format |
|---|---|---|
Enable LB |
beaconAgent.provisioning.loadBalancersEnabled |
false |
Domain |
nodePortDomain |
Base DNS domain (e.g., nodes.myorg.com). |
デフォルトのノードポートの割り当て
NodePort Variable |
Port |
Description |
|---|---|---|
ingress_http_node_port |
32542 |
HMポータルHTTP |
ingress_https_node_port |
30288 |
HMポータルHTTPS |
ingress_grpc_tls_node_port |
30290 |
ビーコン gRPC |
ingress_spire_tls_node_port |
30292 |
Spire TLS |
ingress_beacon_spire_tls_node_port |
30294 |
ビーコンスパイアTLS |
ingress_thanos_query_tls_node_port |
30296 |
ThanosクエリTLSクラスター間メトリック |
ingress_fluent_bit_tls_node_port |
30298 |
Fluent-bit TLS クラスター間ログ |
enable_server_session |
n/a |
サーバーストアドセッションを有効にする "true"または"false" |
Postgresノードポート
Postgresクラスターは、 NodePortDomain
を使用し、ポート範囲30000+
でプロビジョニングされたポートでインクリメントします。
5.2 DNS#
クラスター内と外部アクセスの両方で適切なDNS解決を保証する必要があります。
内部クラスターDNSおよびNTP#
CoreDNS クラスターの内部DNSサービス通常はCoreDNSが実行されており、内部クラスターサービス
kubernetes.defaultなどと外部インターネットアドレスの両方を解決できる必要があります。NTP: 機能的NTPは、ノード間の時間の同期を保証するために必要です。
Container Registry DNSサービスは、コンテナレジストリローカルまたはEDBのDNSエントリを解決できなければなりません。
構成の依存関係#
次のドメインをプロビジョニングおよび制御する必要があります。これらは、次のフェーズでのHM
Helmチャート values.yaml の構成への入力です。
Domain Purpose |
YAML key |
Description |
|---|---|---|
Portal Domain |
parameters.global.portal_domain_name |
HMポータル UIのホスト名。 |
Agent Domain |
parameters.upm-beacon.server_host |
Beacon Server APIが到達可能なホスト名。 |
Migration Domain |
parameters.transporter-rw-service:domain_name |
内部Transporter移行サービスのドメイン名。 |
Migration URL |
parameters.transporter-dp-agent:rw_service_url |
上記のドメインから派生した完全なURL https://<Migration Domain>/transporter |
NodePort Base |
beaconAgent.provisioning.nodePortDomain |
シナリオBのみ NodePortを使用する場合のPostgresアクセスのベースドメイン。 |
NodePortアプローチの場合、上記のDNSエントリは、Kubernetesノードでコントロールプレーンラベルが適用されるコンピューティングIPでラウンドロビンである必要があります。
DNS構成戦略#
DNS構成は、Ingressの選択によって異なります。
シナリオAロードバランサー推奨
依存関係 values.yaml
でbeaconAgent.provisioning.loadBalancersEnabled:がtrue`であることを確認します。ポータル AWS ELBまたはDNS機能を備えたF5のような最適なロードバランサーコントローラの場合、
istio-ingressの結果のロードバランサーIPをポイントするようにDNSを手動で構成します。 KubernetesのイングレスサービスがHTTPS要求のホスト名に従ってトラフィックを適切にルーティングできるように、ドメイン名は ローカルルーティング可能なIP に解決可能である必要があります。Postgres すべてのデータベースのDNSを手動で管理する必要はありません。
Postgres DNSレコードは、ロードバランサーコントローラがそのPostgresクラスター専用の名前空間のサービスのステータスを更新する機能として、自動的に入力されます。
シナリオB:ノードポートの代替
前提条件 ロードバランサーを無効にし、Ingressセクションで
nodePortDomainを定義しました。ポータル DNSエントリは、 コントロールプレーンノード
edbaiplatform.io/control-planeのラベル付けのノードのコンピューティングIPをポイントする ラウンドロビンAレコード である必要があります。Postgres
nodePortDomain値は、すべてのPostgresインスタンスのベースURLとして使用されます。これは、Postgresクラスターが実行されている ワーカーノード のIPアドレスを指す ラウンドロビンDNSレコード である必要があります。
5.3 証明書管理#
安全な通信には、ポータルとAPIエンドポイントのTLS証明書が必要です。 インストールする前に、証明書管理戦略を決定する必要があります。
決定マトリックス#
Option |
Description |
Typical Use Case |
|---|---|---|
A. Custom cert-manager issuer |
既存の`cert-manager`発行者を使用します。 |
Production (Recommended). |
B. Customer CA |
独自のCAを使用して内部証明書に署名します。 |
Enterprises with internal PKI. |
C. Customer Certificate |
独自の事前生成されたx.509証明書とプライベートキーをKubernetesシークレットとして提供します。 |
Specific organization-issued cert. |
D. Self-signed |
インストーラーは自己署名証明書を生成します。 |
Test/Non-Production only. |
戦略別の構成の依存関係#
ストラテジーを選択したら、values.yaml
の対応する値を後で、または既に開始している場合はファイルに記録します。
オプションA:カスタム証明書マネージャー発行者
values.yaml でIssuer またはClusterIssuer
の種類と名前を指定することにより、証明書の自動処理にcert-managerを活用できます。
Parameter |
YAML Key |
Value / Format |
|---|---|---|
Issuer kind |
parameters.global.portal_certificate_issuer_kind: |
<ClusterIssuer or Issuer> |
Issuer name |
portal_certificate_issuer_name: |
<my_issuer> |
オプションBカスタムCABYO CA
独自のカスタム証明書マネージャー発行者がない場合は、代わりに独自の認証局CAを使用できます。
この戦略では、Kubernetesクラスターを展開した後、Kubernetesシークレットを作成し、
values.yamlで指定します。
Parameter |
YAML Key |
Value / Format |
|---|---|---|
CA Secret |
parameters.global.ca_secret_name |
Name of the pre-created K8s Secret. |
オプションC カスタム証明書BYO証明書
カスタマー証明書マネージャー発行者またはカスタムCAを使用することを選択しない場合、カスタム証明書を使用する必要があります。
この戦略では、Kubernetesクラスターを展開した後、Kubernetesシークレットを作成し、
values.yamlで指定します。
Parameter |
YAML Key |
Value / Format |
|---|---|---|
Cert Secret |
parameters.global.portal_certificate_secret |
Name of the pre-created K8s Secret. |
このシークレットには、公開証明書ファイルの証明書チェーン全体と暗号化されていないプライベートキーのエクスポートが必要です。
オプションD 自己署名証明書
構成の依存関係
該当なし、デフォルト
6.ブロックストレージデータベース&ログ#
永続ストレージボリュームPVCを提供するKubernetes StorageClass
を定義する必要があります。
values.yaml の構成は、 HMコントロールプレーン
に使用されるデフォルトクラスを定義します。同じストレージクラスは、すべてのPostgresインスタンスの展開のオプションでもあります。ただし、
データプレーン
Postgres展開の場合、クラスター内に任意の数の追加ストレージクラスを確立できます。
それらはすべてPostgres展開で使用可能なオプションであり、重要なまたは集中的なワークロードに必要な柔軟性を提供します。
コントロールプレーンの要件#
HMコントロールプレーンのブロックストレージの要求は比較的軽いです。 AWS gp2 の機能とほぼ同等のストレージクラスで十分です。
データプレーンの要件Postgres#
Postgresワークロードは、特定のI/Oパターンによっては、特殊な構成が必要になる場合があります。
レイテンシーの感度 Postgresは、一般に生のスループットよりもレイテンシー、特にレイテンシーの 一貫性 に対してより敏感です。
例分析 分析機能は、PVCごとに約 16,000 IOPS 容量で予想通りに実行されます。
例Azure Azureでは、標準レベルと比較して非常に一貫したレイテンシーのため、低IOPS容量をプロビジョニングする場合でも、IOPS対応ストレージプレミアムSSDが非常に優先されます。
重要な考慮事項#
ハイブリッドマネージャーとコンテナ化されたPostgresは、 ローカルストレージ を活用するのに特に適しています。従来のアプリケーションとは異なり、これらのソリューションは、ストレージプロバイダーによってKubernetesクラスター全体で複製されるPVCに厳密には依存しません。 Postgresインスタンスが基になるノードおよびローカルディスクを失った場合、新しいポッドは古いPVCを再マウントする必要はありません。 代わりに、ハイブリッドマネージャーの高可用性HAロジックは、ピアまたはバックアップから新しいノードを再構築します。
構成の依存関係#
構成の依存関係
Parameter |
YAML Key |
Value / Format |
|---|---|---|
Storage Class |
parameters.global.storage_class |
The exact name of your K8s StorageClass. |
検証#
使用可能なストレージクラスを確認します。
kubectl get sc
6.1ボリュームのスナップショット#
オプション 最適なエクスペリエンスに必要です。これがないとバックアップは制限されます。
基になるストレージプロバイダーは ボリュームスナップショットをサポートする必要があります 。プラットフォームのバックアップおよびリカバリー機能を有効にします。
メカニズム 機能がKubernetes APIを介して公開されている場合、ハイブリッドマネージャーはボリュームスナップショットを自動的に利用します。
実装ノート *** クラウド: 通常はCSPのCSIドライバーAWS EBS CSIによって処理されますが、多くの場合「スナップショットコントローラ」アドオンのインストールが必要です。* オンプレミス:** ストレージバックエンドはCSIスナップショッター仕様をサポートする必要があり、それにマップする
VolumeSnapshotClassを定義する必要があります。
検証#
スナップショットクラスが構成され、使用可能なことを確認します。
kubectl get volumesnapshotclass
7.オブジェクトストレージ#
オブジェクトストレージは、ディザスターリカバリーとデータモビリティのバックボーンです。次の目的で使用されます。
VeleroバックアップクラスターDR
Postgres WALアーカイブポイントインタイムリカバリー
GenAI / AIDBの非構造化データ
Lake Keeper用の寄木細工ファイル
一般的な要件#
プロトコル 完全な S3互換 である必要があります。
一貫性 複数の場所の展開では、オブジェクトストレージ構成はすべての場所で等しく利用できる必要があります。詳細については、
multi-dc guidance を参照してください。
注釈
default 名前空間に`edb-object-storage` という名前のKubernetes Secretをプロビジョニングする必要があります。 このシークレットの内容は、すべてのクラスターで同一である必要があります。 プロセスのこの時点では、kubectl create secret を実行する必要はありません。 ここでは、生の資格情報APIキー、証明書、パスワードを収集しているため、 Preparing your environment のクラスターに注入する準備が整います。
重要
オブジェクトストレージは完全にハイブリッドマネージャー専用である必要があります。 オブジェクトストレージに存在する以前のデータは、HMの正常なオペレーションを妨げます。 同様に、HMを削除して再インストールした場合、新しいインストールを開始する前にオブジェクトストレージを空にする必要があります。
認証戦略#
プロバイダーがサポートする認証方法を選択します
Provider |
Auth Method |
Example Use Case |
|---|---|---|
AWS (EKS/ROSA) |
Workload Identity (IAM) |
Native AWS integration (Recommended). |
AWS (Other K8s) |
Static Keys |
Generic Kubernetes connecting to AWS S3. |
Azure Blob |
Static Keys |
Connect via Connection String/Key. |
GCP Storage |
Static Keys |
Base64-encoded Service Account JSON. |
S3 Compatible |
Static Keys |
On-Premises (MinIO, Ceph, etc.). |
構成の依存関係#
構成ファイル#
これらは、フェーズ3で作成するvalues.yaml の影響を受けるキーです。
Parameter |
YAML Key |
Value / Format |
|---|---|---|
Storage Class |
parameters.global.storage_class |
The exact name of your K8s StorageClass. |
8.コンテナレジストリ#
HMおよびPostgresイメージをホストするには、Kubernetesクラスターからアクセス可能なコンテナレジストリが必要です。
目的 コントロールプレーンとデータプレーンに必要な特定のアプリケーションイメージを提供すること。
アクセス要件 クラスターは、このレジストリからイメージをプルできる必要があります。
権限 使用される認証資格情報には、 リポジトリのリスト 、 タグのリスト 、および タグマニフェストの読み取り に対する権限が必要です。
環境がパブリックEDBリポジトリにアクセスできない場合は、アーティファクトをプルし、
edbctl
を使用してローカルのプライベートレジストリにプッシュする必要があります。
サポートされているプロバイダーと認証#
Registry provider |
Supported Auth |
Recommended Auth |
|---|---|---|
Azure (ACR) |
Token, Basic |
Token |
Amazon (ECR) |
EKS Managed Identity |
EKS Managed Identity |
Google (GAR) |
Token, Basic |
Basic |
EDB Repo |
Token |
Token (PoC/Pilot only!) |
構成の依存関係#
プロビジョニングアクション#
イメージをローカルコンテナレジストリに同期する プライベートレジストリを使用する場合、
edbctlを使用してイメージを同期する必要があります。 * Syncing images to a local private registry
** ガイド edbctl
を使用してプラットフォームとオペレーターイメージをミラーリングします。
*
シークレット プル資格情報を使用してKubernetesシークレットをプロビジョニングする必要があります。実装の詳細については、 フェーズ4環境の準備 を参照してください。
注釈
イメージ検出の構成 イメージがローカルレジストリに同期したら、それらを見つけるようにインストーラーを構成する必要があります。 これにより、クラスターは正しい場所ローカルレジストリ対パブリックレジストリからアーティファクトをプルします。
**SOP: Image discovery configuration**
** ガイダンス:レジストリミラーとプルポリシーの構成。*
次のフェーズフェーズ3でvalues.yaml
に設定するには、これらの特定の値を収集する必要があります。
Parameter |
YAML Key |
Value / Format |
|---|---|---|
Bootstrap Image |
bootstrapImageName |
<Registry Domain>/pgai-platform/edbpgai-bootstrap/bootstrap-<K8s_Flavor> |
Global Registry |
containerRegistryURL |
<Registry Domain>/pgai-platform |
Discovery Registry |
beaconAgent.provisioning.imagesetDiscoveryContainerRegistryURL |
<Registry Domain>/pgai-platform |
Discovery Auth |
beaconAgent.provisioning.imagesetDiscoveryAuthenticationType |
<Auth Type> (e.g., token, basic, eks_managed_identity) |
TLS Validation |
imagesetDiscoveryAllowInsecureRegistry |
Set to true if using TL without certificate validation. |
9.IDプロバイダーIdP#
ハイブリッドマネージャーは、ユーザー認証を直接提供することを目的としたものではありません**。 外部IDプロバイダーIdPに依存して、ユーザーアクセスを安全に管理します。
9.1外部IdP推奨#
オプショナル 最適なエクスペリエンスとセキュリティのために必要です。
メカニズム OIDCを介して既存のディレクトリサービスに接続します。
サポートされているバックエンド LDAPまたはSAML。
Preparing your environment フェーズ4用に次の値とアーティファクトを準備する必要があります。
構成の依存関係#
構成ファイル#
Parameter |
YAML Key / Resource Name |
Value / Format |
|---|---|---|
Client Secret |
pgai.portal.authentication.clientSecret |
The OIDC client secret string. |
Connector Config |
pgai.portal.authentication.idpConnectors |
List of connector configurations. |
Connector Type |
...idpConnectors[0].type |
Must be ldap or saml (parameters vary by type). |
プロビジョニングアクション#
CAバンドルシークレット K8sシークレット
beaconator-ca-bundleIdPトラストチェーンを含む すべての名前空間 に作成します。Dex Secret K8s Secret
upm-dexupm-dex名前空間に作成します。
9.2 静的ユーザーの代替#
警告
この方法は、運用環境では**強くお勧めしません**。パイロットまたは概念実証アクティビティにのみ使用する必要があります。
コンテキスト インストールのために作成される必須の静的
User-0が1つあります。
プロビジョニング時に追加の静的ユーザーを作成できますが、これは安全なパターンではないため、それらを管理するための UIは提供されません 。
最小アクション 必須静的ユーザー
User-0のパスワードを設定する必要があります。
構成の依存関係#
構成ファイル#
このパスを選択する場合、values.yaml で次を構成する必要があります。
Parameter |
YAML Key |
Value / Format |
|---|---|---|
Password Hash |
pgai.portal.authentication.staticPasswords.hash |
Bcrypt hash string of the password. |
User Email |
pgai.portal.authentication.staticPasswords.email |
A valid email address (e.g., admin@example.com). |
Username |
pgai.portal.authentication.staticPasswords.username |
The login username (e.g., admin). |
User ID |
pgai.portal.authentication.staticPasswords.userID |
A unique string identifier (e.g., user-0). |
10.キー管理サービスKMS#
Postgresデータベースの 透過的データ暗号化TDE を有効にするには、外部キー管理サービスKMSを統合する必要があります。
オプション 最適なセキュリティとコンプライアンスのために必要です。
メカニズム ハイブリッドマネージャーは、クラウドプロバイダーまたは外部ボールトと統合して、暗号化キーを安全に管理します。
サポートされている認証
ワークロードID ネイティブクラウド認証EKS / GKE / AKSで推奨。
資格情報 Kubernetesシークレットに保存されている静的キー。
構成の依存関係#
構成ファイル#
フェーズ4ガイド のvalues.yaml には以下を準備する必要があります。
Parameter |
YAML Key |
Value / Format |
|---|---|---|
KMS Providers |
beaconAgent.transparentDataEncryptionMethods |
List of enabled providers (e.g., aws-kms, google-cloud-kms). |
Auth Strategy |
auth_type (nested under provider) |
workloadIdentity or credentials. |
認証シークレット
credentialsモードを使用する場合、特定のKubernetesシークレットをAPIキーでプロビジョニングする必要があります。
構成への影響#
このドキュメントで詳細に説明されているインフラストラクチャ仕様は、フェーズ1でのアーキテクチャの決定と組み合わせて、次のフェーズで使用する値を決定します。
フェーズ3に進む前に、この マスターインベントリ を使用して、必要な値がすべてあることを確認します。
一般&プラットフォーム#
Source |
Requirement |
YAML Key |
Condition |
|---|---|---|---|
Phase 1 |
K8s Flavor |
system |
Required (e.g., eks, gke, rhos) |
Phase 1 |
Provider |
beaconAgent.provisioning.provider |
Required (e.g., AWS, GCP) |
Phase 1 |
OpenShift |
beaconAgent.provisioning.openshift |
Required if using RHOS (true) |
Phase 1 |
Location |
parameters.upm-beacon.beacon_location_id |
Required (String ID) |
ネットワーキングとIngress#
Source |
Requirement |
YAML Key |
Condition |
|---|---|---|---|
Phase 2 |
Portal Domain |
global.portal_domain_name |
Required |
Phase 2 |
Agent Domain |
upm-beacon.server_host |
Required |
Phase 2 |
Migration Domain |
transporter-rw-service:domain_name |
Required |
Phase 2 |
Migration URL |
transporter-dp-agent:rw_service_url |
Required |
Phase 2 |
Load Balancer |
beaconAgent.provisioning.loadBalancersEnabled |
Required (true or false) |
Phase 2 |
LB Annotations |
resourceAnnotations |
Required if using CSP LB (e.g., AWS) |
Phase 2 |
NodePort Domain |
nodePortDomain |
Required if loadBalancersEnabled is false |
ストレージとレジストリ#
Source |
Requirement |
YAML Key |
Condition |
|---|---|---|---|
Phase 2 |
Storage Class |
parameters.global.storage_class |
Required |
Phase 2 |
Global Registry |
containerRegistryURL |
Required |
Phase 2 |
Bootstrap Image |
bootstrapImageName |
Required |
Phase 2 |
Discovery Reg. |
beaconAgent.provisioning.imagesetDiscoveryContainerRegistryURL |
Required |
Phase 2 |
Registry Auth |
`beaconAgent.provisioning.imagesetDiscoveryAuthenticationType ` |
Required |
Phase 2 |
Insecure TLS |
imagesetDiscoveryAllowInsecureRegistry |
Optional (If using self-signed registry) |
セキュリティとID#
Source |
Requirement |
YAML Key |
Condition |
|---|---|---|---|
Phase 2 |
IDP Secret |
pgai.portal.authentication.clientSecret |
Required (if using OIDC) |
Phase 2 |
IDP Config |
pgai.portal.authentication.idpConnectors |
Required (if using OIDC) |
Phase 2 |
Static User |
pgai.portal.authentication.staticPasswords.* |
PoC Only (if no IdP) |
Phase 2 |
TDE Keys |
beaconAgent.transparentDataEncryptionMethods |
Optional (if using TDE) |
証明書 (戦略を1つ選択してください)#
いずれか 戦略A、B、C、またはDを選択し、対応する値を記録します。
Strategy |
YAML Key |
Description |
|---|---|---|
A. Cert Manager |
parameters.global.portal_certificate_issuer_kind |
必須。 リソース種類たとえば ClusterIssuer |
A. Cert Manager |
portal_certificate_issuer_name |
必須。 リソース名たとえば letsencrypt-prod |
B. BYO CA |
parameters.global.ca_secret_name |
必須。 CAシークレットの名前。 |
C. BYO Cert |
parameters.global.portal_certificate_secret |
必須。 証明書シークレットの名前。 |
D. Self-signed |
N/A |
デフォルトの動作 構成は必要ありません。 |
例 values.yaml#
前の手順で行った決定に従って、values.yaml
は既に開始している場合、これらの選択を反映する必要があります。
これは、すべてのオプションを使用してインストールするための運用指向のvalues.yaml
の例です。「最適なエクスペリエンスに必要」。
これから始める場合、または既にvalues.yaml
を開始している場合、上記の最適なエクスペリエンスに必要なオプションを使用していない場合、構成ファイルは異なる場合があります。
system: <Kubernetes>
bootstrapImageName: <Container Registry Domain>/pgai-platform/edbpgai-bootstrap/bootstrap-<Kubernetes>
bootstrapImageTag: <Version>
containerRegistryURL: "<Container Registry Domain>/pgai-platform"
parameters:
global:
portal_domain_name: <Portal Domain>
storage_class: <Block Storage>
portal_certificate_issuer_kind: <ClusterIssuer>
portal_certificate_issuer_name: <my-issuer>
trust_domain: <Portal Domain>
upm-beacon:
beacon_location_id: <Location>
server_host: <Agent Domain>
transporter-rw-service:
domain_name: <Migration Domain>
transporter-dp-agent:
rw_service_url: https://<Migration Domain>/transporter
beaconAgent:
provisioning:
imagesetDiscoveryAuthenticationType: <Authentication Type for the Container Registry>
imagesetDiscoveryContainerRegistryURL: "<Container Registry Domain>/pgai-platform"
transparentDataEncryptionMethods:
- <available_encryption_method>
pgai:
portal:
authentication:
idpConnectors:
- config:
caData: <base64 encyrption of Certificate Authority from SSO provider>
emailAttr: email
groupsAttr: groups
entityIssuer: https://<Portal Domain>/auth/callback
redirectURI: https://<Portal Domain>/auth/callback
ssoURL: https://login.microsoft.com/<azure service identifier>/saml2
usernameAttr: name
id: azure
name: Azure
type: saml
resourceAnnotations:
- name: istio-ingressgateway
kind: Service
annotations:
service.beta.kubernetes.io/aws-load-balancer-scheme: internal
service.beta.kubernetes.io/load-balancer-source-ranges: 10.0.0.0/8
次のフェーズ#
これで、完全なインベントリとデプロイメント戦略と、HM Helmチャート
values.yaml
へのいくつかの入力ができました。途中でファイルをビルドする場合は今すぐ追加します、または
Preparing your environment の最後にファイルをビルドするための入力として使用します。
** フェーズ3Kubernetesクラスターの展開 に進んで、Kubernetesクラスターをプロビジョニングおよび展開します。**