vantage-operator と vantage-selfhosted のチャートは、同じバージョンを使用する必要があります。このページの例では、両方のチャートにバージョン 0.70.13 を使用しています。参照アーキテクチャ
サポート対象および検証済みのコンポーネントのバージョンについては、Compatibility を参照してください。インフラストラクチャの完全な一覧とサイジングの基準については、Prerequisites を参照してください。
始める前に
また、次のものも必要です。
$your_vantage_hostnameの DNS レコード (ingress のエントリ ポイントに名前解決されるもの) 。- そのホスト名に対する有効な TLS 証明書。
- レジストリで認証が必要な場合は、Kubernetes の registry pull シークレット。
- Secret aliases に記載されているすべてのアプリケーション シークレット。
- データベース エイリアスごとに一意の論理データベース名。各サービスの マイグレーター は初回実行時にデータベースを作成します。
- TechCore worker 用のラベルが付いたノード。
クラスターの準備
ArgoCD を設定する
Application マニフェストに直接記述するのではなく、既存のシークレット管理システムで管理してください。
サービスメッシュを構成する
$install_namespace のメッシュインジェクションを有効にします。
たとえば、Linkerd の場合:
TechCore ワーカーノードを設定する
Pending のままになります。training-worker の分離とサイジングの基準については、Kubernetes ノード要件を参照してください。
永続ストレージを Configure
StorageClass を作成または選択します。ストレージ実装は、本番環境で必要な可用性、耐久性、容量、拡張性、バックアップ、復旧の要件を満たしている必要があります。
これを Vantage の values で参照します。
StorageClass の名前は Kubernetes ディストリビューションに依存しません。開発クラスターのローカル ストレージ クラスを、損失やフェールオーバーの特性を評価せずに本番環境へそのままコピーしないでください。
データベースを準備する
SqlServer と PostgreSQL です。Postgresql や PostgreSql のような値は、アプリケーションのデータ プロバイダー名と一致しないため、ランタイムで失敗する可能性があります。
すべての Vantage サービスは、それぞれ別個の論理データベースを使用する必要があります。各サービスは独自にマイグレーションを実行するため、複数のサービスを 1 つのデータベースに向けると、マイグレーションの状態が競合します。データベース名と接続文字列を計画するには、Database aliases 配下のデータベース一覧を利用してください。データベースを手動で作成する必要はありません。各サービスのマイグレーターが初回実行時にデータベースを作成します。
PostgreSQL の接続文字列は、先頭・末尾・途中に改行文字を含まない 1 行である必要があります。
Kubernetes Secrets を準備する
$install_namespace 内の Kubernetes ネイティブの Secret リソースを読み取ります。Vantage は Vault やその他の外部シークレットストアに直接接続しません。External Secrets Operator、CSI ドライバー、またはその他の同期ツールを使用する場合は、Vantage をインストールする前に、必要な Kubernetes Secrets が作成されるように設定してください。
Kubernetes provider を選択します。
objects を使用して、エイリアスを別のシークレットにマッピングします:
Database__ConnectionStringキーを使用する場合は、サービスごとに個別のSecretを作成し、各データベース エイリアスをvantage.secrets.kubernetes.objectsを通じてマッピングします。シークレット管理システムでは、共通の接続文字列テンプレートからこれらのSecretを生成できますが、生成される各接続文字列では、それぞれ異なるデータベース名を指定する必要があります。
operator は、事前チェック時にシークレット構成を検証します。対応する
vantage-operatorチャートとvantage-selfhostedチャートでは、Vantage リリースの名前空間でのみバインドされる ClusterRole を通じて、operator に Secrets への読み取りアクセスを付与します。operator の名前空間やコントローラーの ServiceAccount をカスタマイズする場合は、Vantage チャート内の対応するoperator値を、そのインストールに合わせてください。カスタムのresourceNames制限には、Kubernetes provider が参照するすべてのSecretを含める必要があります。レジストリアクセスを設定する
各利用主体が実行される名前空間に、レジストリのシークレットを作成します。values ファイルには、平文のレジストリパスワードを記載しないでください。
OCI 移行では、ソースおよび宛先の認証情報シークレットを参照します。
vantage.serviceAccountName で指定された ServiceAccount の imagePullSecrets に追加します。
コンポーネントの pod が別の ServiceAccount で実行されている場合は、その ServiceAccount にもレジストリのプルアクセスが必要です。名前空間の
default ServiceAccount を変更する前に、pod の spec.serviceAccountName を確認してください。自動スケーリングとメトリクスを設定する
ScaledObject リソースは、この固定アドレスの Prometheus をクエリします。
- KEDA 2.17.3 をインストールします。
observability名前空間に Prometheus Operator と Prometheus インスタンスをインストールします。- それを管理する Service の名前が
prometheus-operatedで、ポート9090を公開していることを確認します。 - Vantage の
ServiceMonitorを検出できるように Prometheus を設定します。
Vantage リソースで KEDA を有効にし、別個のトップレベル observability スタンザでチャートの ServiceMonitor を有効にします:
observability は最上位のキーです。vantage の下にネストしないでください。トリガー戦略、検証、キャパシティプランニングについては、KEDA を使用したオートスケーリングを参照してください。メッシュ固有のスクレイピング設定については、Prometheus による監視を参照してください。
ingress と TLS を設定する
- 信頼できる証明書を使用して、
vantage.dnsRecordの HTTPS を終端すること。 - Vantage UI、API、認証、ヘルプ、SCIM、URL-shortener、ワークスペース、Verification、Try Any Skill の各パスを、それぞれ対応する Service にルーティングすること。
- Vantage で使用される
/api/vN/から/publicapi/vN/への書き換え、および/api/、SCIM、ハートビートの書き換えを適用すること。 - UI のキャッチオールルートよりも前に、より具体的なルートを優先してマッチさせること。
- 元の host とスキームを転送すること。これには、TLS が ingress controller で終端される場合の
X-Forwarded-Proto: httpsも含まれます。
IngressRoute と順序付けされた Middleware リソースで実装します。ルートマニフェストは、バージョン管理される Vantage の構成として扱ってください。別の環境の値をそのままコピーするのではなく、ご利用のリリースに合わせて、hostname、名前空間、証明書用シークレット、生成される Service 名をパラメーター化してください。
ルーティング仕様
$install_namespace 内で生成された Kubernetes Service 名を確認し、以下の順序でこれらのルートを実装します。正規表現ルートと完全一致ルートは、プレフィックスルートおよびキャッチオールルートより優先する必要があります。
チャートに組み込まれている Istio ingress は、クライアントに不要な内部ステータス情報を公開する
/api/status と /api/status/config もブロックします。これらのパスをブロックすることが推奨されますが、Vantage の動作に必須ではありません。使用している ingress コントローラー が直接拒否レスポンスを返せない場合は、一般的な /api ルールの前に、これらのパスを専用の拒否バックエンドにルーティングできます。
HTTPS スキームの転送
X-Forwarded-Proto を認識する必要があります。auth-identity、auth-adminapi2、api-gateway、api-registry のアプリケーションコンテナーに、次の環境変数が設定されていることを確認してください。
http:// エンドポイントが通知され、ブラウザーでのサインインが失敗します。
オペレーターをインストールする
--wait の前にこのオプションをコマンドに追加します:
Vantage をインストールする
vantage-selfhosted チャートをインストールします。
インストールを監視する
Ready になるまで待ちます:
Ready だけで判断しないでください。
Ready を示した後も継続することがあります。
- 生成されたすべての ArgoCD application が
SyncedかつHealthyであること。 - Vantage の pod が実行中で、mesh がインジェクトされていること。
- Prometheus で Vantage の
/metrics-textターゲットがUPと表示されていること。 - KEDA の
ScaledObjectリソースがReadyで、HPA のメトリクス値が<unknown>ではないこと。 - OIDC の Discovery Document とブラウザーのリダイレクトで
https://URL が使用されていること。 https://$your_vantage_hostnameで Vantage にアクセスできること。
次のステップ
シークレット
Kubernetes Secret のエイリアス、認証キーペア、データベース接続文字列。
監視
サービスメッシュ経由で Vantage をスクレイプするように Prometheus を設定します。
トラブルシューティング
operator、データベース、レジストリ、Ingress、オートスケーリングの障害を診断します。
アップグレード
operator と Vantage のチャートをまとめてアップグレードします。
