> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Helm チャート

> vantage-operator と vantage-selfhosted の Helm チャートの関係、主に設定する値、およびオペレーターによる TechCore worker のデプロイ方法について説明します。

Vantage 3.0 セルフホスト版は、`vantage-operator` (`Vantage` カスタムリソースを監視するコントローラー) と `vantage-selfhosted` (選択したインストール先の名前空間に `Vantage` リソースと関連マニフェストを作成するチャート) の 2 つの Helm チャートで提供されます。このページでは、両方のチャートと、主に設定する値について説明します。

CRD の field レベルの詳細については、[APIリファレンス](https://docs.abbyy.com/ja/vantage/self-hosted/v3.0/reference/latest/api-reference.md)を参照してください。インストール手順については、[Azure](https://docs.abbyy.com/ja/vantage/self-hosted/v3.0/providers/azure.md) または [セルフマネージド Kubernetes](https://docs.abbyy.com/ja/vantage/self-hosted/v3.0/providers/self-managed.md) のいずれかを選択してください。

> [!NOTE]
>
> `vantage-operator` と `vantage-selfhosted` は、同じバージョンのものをインストールしてください。このページに記載しているデフォルト値は、最新リリースのものです。以前のアーティファクトバージョンでは使用できない値もあります。各リリースのすべての値とデフォルト値は、そのリリースの Helm チャートの値に関するページに記載されています。該当するリリースは [リリース](https://docs.abbyy.com/ja/vantage/self-hosted/v3.0/reference/releases.md) で確認してください。

## `vantage-operator`

クラスターごとに1回、任意の名前空間にインストールします。オペレーターは、`Vantage` カスタムリソースで定義された Vantage のインストールをリコンサイルします。

> [!WARNING]
>
> **このチャートは、クラスターごとに1つのインスタンスのみインストールしてください。** このチャートの ClusterRole と ClusterRoleBinding はクラスタースコープのリソースであり、固定の名前を使用します。詳細については、[既知の制限事項](https://docs.abbyy.com/ja/vantage/self-hosted/v3.0/known-limitations.md#one-operator-instance-per-cluster)を参照してください。

### トップレベルのスタンザ

* **`nameOverride` / `fullnameOverride`**: チャートのフルネームを部分的に上書き (リリース名は維持) するか、完全に上書きします。デフォルトでは未設定です。
* **`manager`**: オペレーターの Deployment です。`image`、コンテナーの `args` (リーダー選出はデフォルトで有効) 、`env` (downward API 経由で取得する pod 名と名前空間) 、`imagePullSecrets`、pod とコンテナーのセキュリティコンテキスト (非root、権限昇格なし、読み取り専用の root ファイルシステム) 、`resources`、スケジューリング (`affinity`、`nodeSelector`、`tolerations`) を設定します。
* **`rbacHelpers`**: カスタムリソースを管理するためのオプションの admin/editor/viewer ロールです。デフォルトでは無効です。
* **`crd`**: CRD ライフサイクルを設定します。チャートと一緒に CRD をインストールするかどうか (`enable`) と、チャートのアンインストール時に CRD を残すかどうか (`keep`) を指定します。
* **`metrics`**: RBAC で保護された `/metrics` エンドポイントです。
* **`certManager`**: TLS 証明書を管理するための cert-manager 連携です。webhook 証明書とメトリクスエンドポイントの証明書に必要です。デフォルトでは無効です。
* **`prometheus`**: メトリクスのスクレイピングに使用する Prometheus `ServiceMonitor` です。クラスターに prometheus-operator がインストールされている必要があります。デフォルトでは無効です。

### 主な値

デフォルト値は最新リリースのものです。チャートのバージョンで指定可能な値を表示するには、[使用可能な値の確認](#inspecting-available-values)を参照してください。

| 値 | 用途 |
| - | - |
| `manager.replicas` | デフォルトは `1` です。 |
| `manager.image.repository` / `tag` / `pullPolicy` | オペレーターのコンテナーイメージです。`pullPolicy` のデフォルトは `IfNotPresent` です。 |
| `manager.imagePullSecrets` | レジストリで認証が必要な場合に使用する、オペレーターイメージ用のプルシークレットです (例: `--set "manager.imagePullSecrets[0].name=my-pull-secret"`) 。デフォルトは `[]` です。AKS で kubelet ID に `AcrPull` が付与されている場合は不要です。[イメージ プル アクセス](https://docs.abbyy.com/ja/vantage/self-hosted/v3.0/providers/azure.md#image-pull-access)を参照してください。 |
| `manager.args` | コンテナーの引数です。デフォルトは `[--leader-elect]` (リーダー選出が有効) です。 |
| `manager.env` | オペレーターコンテナーの環境変数です。デフォルト: `metadata.name` から取得する `POD_NAME` と、`metadata.namespace` から取得する `POD_NAMESPACE` (field 参照) 。 |
| `manager.podSecurityContext` / `manager.securityContext` | オペレーターの pod およびコンテナーのセキュリティコンテキストです。デフォルト: pod は `runAsNonRoot: true` と `seccompProfile.type: RuntimeDefault`、コンテナーは `allowPrivilegeEscalation: false`、`capabilities.drop: [ALL]`、`readOnlyRootFilesystem: true` です。 |
| `manager.resources` | CPU/メモリのリクエストと上限です。デフォルト: リクエストは CPU `10m` / メモリ `64Mi`、上限は CPU `500m` / メモリ `128Mi` です。 |
| `manager.affinity` / `manager.nodeSelector` / `manager.tolerations` | オペレーター pod 用の標準的な Kubernetes スケジューリング設定です。デフォルトでは空です。 |
| `rbacHelpers.enable` | CRD 用の補助的な admin/editor/viewer ロールをインストールします。デフォルトは `false` です。 |
| `crd.enable` | チャートと一緒に `vantages.vantage.abbyy.com` CRD をインストールします。デフォルトは `true` です。 |
| `crd.keep` | チャートをアンインストールしても CRD を保持します。デフォルトは `true` です。 |
| `metrics.enable` / `metrics.port` | RBAC で保護された `/metrics` エンドポイントを公開します。デフォルトは `true` / `8443` です。 |
| `certManager.enable` | TLS 証明書用の cert-manager 連携です。webhook 証明書およびメトリクスエンドポイント証明書に必須です。デフォルトは `false` です。 |
| `prometheus.enable` | メトリクスのスクレイピング用に Prometheus の `ServiceMonitor` を作成します。クラスターに prometheus-operator が導入されている必要があります。デフォルトは `false` です。 |

Vantage アプリケーションの設定は、`vantage-selfhosted` チャートによって作成される `Vantage` カスタムリソースで管理されます。

## `vantage-selfhosted`

任意の名前空間にインストールします。このチャートには、`Vantage` カスタムリソース、Vantage のワークロードデータとその関連 RBAC を含む ConfigMap、および ABBYY のアップストリームのインフラストラクチャリポジトリから取得した Vantage 関連の CRD とロールが含まれています。

ほとんどの値は、`Vantage` カスタムリソースのフィールドに直接マッピングされます。フィールド単位の仕様については、[APIリファレンス](https://docs.abbyy.com/ja/vantage/self-hosted/v3.0/reference/latest/api-reference.md)を参照してください。

### トップレベルのスタンザ

* **`operator`**: オペレーターのインストール先へのポインター (`namespace` と `controllerManagerServiceAccount`) 。
* **`ingress`**: チャートの組み込み Ingress。`ingress.type` で種類を選択します。Traefik などを使用して Ingress を独自に管理する場合は、`enabled: false` を設定します。
* **`mesh`**: Istio メッシュのリソース (`mesh.istio.enabled`) 。これはトップレベルの設定セクションであり、`Vantage.spec` の field ではありません。
* **`serviceAccounts`**: Vantage ワークロード、OCI 移行ジョブ、および個々のワークロード用にチャートが作成する ServiceAccount。これはトップレベルの設定セクションであり、`Vantage.spec` の field ではありません。
* **`vantage`**: `Vantage.spec` のペイロード (`argocd`、`databaseProvider`、`debug`、`dnsRecord`、`idReadingEnabled`、`keda`、`mailFrom`、`minimalInstall`、`ociMigration`、`platformAdminEmail`、`reportingEnabled`、`reverseProxy`、`secrets`、`serviceAccountName`、`smtp`、`storage`、`techcore`、`updatePolicy`、`vantageVersion`、`workloads`) 。これらの値は `Vantage` カスタムリソースにそのまま渡されます。
* **`defaultSkills`**: 同梱のカタログに含まれるデフォルトSkill のうち、skill-installer-operator がインストールするものを指定します。これはトップレベルの設定セクションであり、`Vantage.spec` の field ではありません。
* **`observability`**: チャートがレンダリングする Prometheus `ServiceMonitor` の設定。これはトップレベルの設定セクションであり、`Vantage.spec` の field ではありません。
* **`workloadsConfigMap`**: チャートに同梱される workloads ConfigMap を制御します。`create` でチャートが ConfigMap を作成するかどうかを切り替え、`additionalMetadata` でチャートごとの高度なオーバーライドを指定します。これはトップレベルの設定セクションであり、`Vantage.spec` の field ではありません。

### 必須の値

| 値 | マッピング先 | 用途 |
| - | - | - |
| `operator.namespace` | N/A | `vantage-operator` をインストールした名前空間。デフォルトは `vantage-operator-system` です。 |
| `operator.controllerManagerServiceAccount` | N/A | オペレーターの controller-manager の ServiceAccount。デフォルトは `vantage-operator-controller-manager` です。 |
| `ingress.tls.secretName` | N/A | `kubernetes.io/tls` Secret の名前。デフォルトは `vantage-ingress-tls` です。`ingress.enabled` と `ingress.tls.enabled` が `true` の場合に使用されます。`ingress.type: istio` の場合、Secret は Istio のイングレスゲートウェイの名前空間に配置する必要があります。`gateway` の場合は、Vantage の名前空間、または `ingress.gateway.certificateRef.namespace` で指定した名前空間に作成します。`gateway` かつ `ingress.gateway.create: false` の場合、チャートはこの値を使用せず、既存の Gateway が証明書を提供します。 |
| `vantage.dnsRecord` | `Vantage.spec.dnsRecord` | Vantage へのアクセスに使用する DNS ホスト名。 |
| `vantage.mailFrom` | `Vantage.spec.mailFrom` | 送信メールの差出人。 |
| `vantage.platformAdminEmail` | `Vantage.spec.platformAdminEmail` | プラットフォーム管理者のメールアドレス。 |
| `vantage.secrets.azure` または `vantage.secrets.kubernetes` | `Vantage.spec.secrets` | シークレットプロバイダーを 1 つだけ指定する必要があります。[シークレットと Key Vault](https://docs.abbyy.com/ja/vantage/self-hosted/v3.0/secrets-and-keyvault.md) を参照してください。 |
| `vantage.secrets.azure.keyVaultName` / `tenantId` | `Vantage.spec.secrets.azure` | Azure Key Vault provider を使用する場合は必須です。シークレットを格納する Key Vault と、その Key Vault を所有する Azure AD テナントを指定します。 |

### オプションの値

| 値 | 用途 |
| - | - |
| `ingress.enabled` | `ingress.type` に対応する Ingress リソースを作成します。デフォルトは `true` です。Traefik の `IngressRoute` を使用する場合など、Ingress を自分で管理する場合は `false` に設定します。 |
| `ingress.type` | `ingress.enabled` が `true` の場合にチャートが作成する Ingress リソースです。`istio` (デフォルト。Istio の `Gateway` と `VirtualService`) 、`kubernetes` (Kubernetes の `Ingress`) 、`gateway` (Gateway API の `Gateway` と `HTTPRoute`) 、`native` (クラスターが Gateway API を提供している場合は `gateway`、それ以外は `kubernetes`) のいずれかを指定します。`native` はクラスターの API バージョンから Gateway API を検出するため、`helm template` には `--api-versions` が必要です。また、同じリリースでインストールされる Gateway API CRD は、初回インストール時には検出されません。Gateway API の CRD とコントローラー、または Ingress コントローラーは、事前にインストールしておく必要があります。`gateway` を使用する場合は、`vantage.reverseProxy: true` も設定してください。`kubernetes` を使用する場合は、ingress コントローラーが TLS を終端するときにこれを設定してください。 |
| `ingress.tls.enabled` | `ingress.tls.secretName` で指定した Secret を使用して TLS を終端します。デフォルトは `true` です。ingress コントローラーが証明書を提供する場合は `false` に設定します。 |
| `ingress.istio.ingressGatewaySelector` | Istio のイングレスゲートウェイを選択するためのラベルです。デフォルトは `istio: aks-istio-ingressgateway-external` です。 |
| `ingress.istio.gateway.labels` / `annotations` | Istio の `Gateway` に付与する追加のラベルとアノテーションです。デフォルトは `{}` です。 |
| `ingress.istio.internalDNSResolution.enabled` / `destination.host` | `vantage.dnsRecord` にパブリック DNS レコードがない場合に、メッシュ内部から `vantage.dnsRecord` への呼び出しを Istio のイングレスゲートウェイ経由でルーティングします。Istio の [DNS プロキシ](https://istio.io/latest/docs/ops/configuration/traffic-management/dns-proxy)が必要です。可能な限り、パブリック DNS レコードを持つ `vantage.dnsRecord` を使用してください。デフォルトは `false` / `aks-istio-ingressgateway-external.aks-istio-ingress.svc.cluster.local` です。 |
| `ingress.kubernetes.ingressClassName` | チャートの `Ingress` リソースを実装する `IngressClass` です。デフォルトは `""` です。パスの書き換えは nginx のアノテーションに依存するため、クラスが `nginx` の場合、または `ingress.kubernetes.nginx: true` の場合にのみ行われます。nginx では、書き換えられるルートごとに個別の `Ingress` が作成されます。他のコントローラーでは、書き換え対象のルートは元のパスのまま適切なバックエンドに到達し、正規表現ルートには代わりに最も近いプレフィックスが使用されます。 |
| `ingress.kubernetes.nginx` | AKS のアプリケーションルーティングなど、名前が `nginx` ではない Ingress クラスを nginx 互換として扱います。デフォルトは `false` です。 |
| `ingress.kubernetes.labels` / `annotations` | チャートの `Ingress` リソースに付与する追加のラベルとアノテーションです。ingress コントローラー経由で TLS を制御する場合などに使用します。デフォルトは `{}` です。 |
| `ingress.gateway.create` | Gateway API の `Gateway` を作成します。デフォルトは `true` です。`ingress.gateway.parentRefs` を使用して `HTTPRoute` を既存の Gateway にアタッチする場合は `false` に設定します。 |
| `ingress.gateway.parentRefs` | `create` が `false` の場合に `HTTPRoute` に指定する `parentRefs` です。たとえば、共有 Gateway 上のリスナーの `name`、`namespace`、`sectionName` を指定します。Gateway の `allowedRoutes` で、リリースの名前空間からのルートを許可しておく必要があります。デフォルトは `[]` です。 |
| `ingress.gateway.name` / `gatewayClassName` | チャートが作成する Gateway の名前と `GatewayClass` です。デフォルトは `vantage-gateway` / `""` です。`create` が `true` の場合、`gatewayClassName` は必須です。 |
| `ingress.gateway.meshIntegrated` | Istio 自身の Gateway API 実装など、GatewayClass の実装が Istio メッシュに参加する場合は `true` に設定します。この場合、`mesh.istio.enabled: true` であれば、チャートは `STRICT` mTLS を使用します (`mesh.istio.enabled` を参照) 。サイドカーインジェクションを有効にした kgateway など、Vantage の名前空間でゲートウェイの pod に Istio サイドカーが注入される実装では設定しないでください。デフォルトは `false` です。 |
| `ingress.gateway.regexCatchAll` | `/` のキャッチオールルートを、`PathPrefix` マッチではなく `RegularExpression` マッチ (`/.*`) としてレンダリングします。Istio のように、すべての `PathPrefix` マッチを `RegularExpression` マッチより優先する実装では `true` に設定します。このような実装では、`/` プレフィックスによって正規表現ルートが隠れてしまいます。デフォルトは `false` です。 |
| `ingress.gateway.labels` / `annotations` | `Gateway` に付与する追加のラベルとアノテーションです。たとえば、cert-manager に `ingress.tls.secretName` の証明書を発行させる場合は `cert-manager.io/cluster-issuer` を指定します。デフォルトは `{}` です。 |
| `ingress.gateway.infrastructure` | Gateway の `spec.infrastructure` です。ロードバランサーの Service など、実装が作成するリソースに伝播されるラベル、アノテーション、`parametersRef` を指定します。デフォルトは `{}` です。 |
| `ingress.gateway.listeners.httpsPort` / `httpPort` | Gateway の HTTPS リスナーと HTTP リスナーのポートです。デフォルトは `443` / `80` です。`ingress.tls.enabled` または `listeners.controllerSuppliedTls` が `true` の場合は Gateway に HTTPS リスナーが、それ以外の場合は HTTP リスナーが作成されます。 |
| `ingress.gateway.listeners.httpRedirect` | Gateway に HTTPS リスナーがある場合に、リクエストを HTTPS にリダイレクトする HTTP リスナーを追加します。`create` が `true` の場合にのみ適用されます。デフォルトは `false` です。 |
| `ingress.gateway.listeners.controllerSuppliedTls` / `tlsOptions` | `ingress.tls.enabled: false` の場合に、証明書を自ら提供する実装向けとして、HTTP リスナーの代わりに `certificateRefs` を持たない HTTPS リスナーを作成します。`tlsOptions` は HTTPS リスナーの実装固有の `tls.options` を設定するもので、`controllerSuppliedTls: true` の場合は必須です。デフォルトは `false` / `{}` です。 |
| `ingress.gateway.certificateRef.namespace` / `createReferenceGrant` | `ingress.tls.secretName` の Secret がリリースの名前空間以外にある場合の、その名前空間です。Gateway が別の名前空間の Secret を使用するには、その名前空間に `ReferenceGrant` が必要です。`createReferenceGrant: true` を指定するとチャートがこれを作成し、それ以外の場合は自分で作成する必要があります。`create` と `ingress.tls.enabled` が `true` の場合にのみ適用されます。デフォルトは `""` / `false` です。 |
| `ingress.gateway.route.labels` / `annotations` | チャートの `HTTPRoute` リソースに付与する追加のラベルとアノテーションです。デフォルトは `{}` です。 |
| `ingress.gateway.route.timeouts` | すべての `HTTPRoute` ルールに適用する `timeouts` です。デフォルトは `request: 0s` (リクエストタイムアウトなし) です。実装が `HTTPRouteRequestTimeout` をサポートしている必要があります。実装のデフォルトをそのまま使用するには `{}` に設定します。 |
| `mesh.istio.enabled` | 推奨される Istio メッシュ構成をデプロイします。デフォルトは `true` です。チャートの `PeerAuthentication` モードは、Istio Ingress またはメッシュ統合 Gateway (`ingress.gateway.meshIntegrated`) を使用する場合は `STRICT`、それ以外の場合は `PERMISSIVE` になります。`ingress.type: kubernetes` の場合、対応する Istio の `AuthorizationPolicy` を用意せずにこの `PERMISSIVE` 構成を本番環境で使用することは推奨されません。サービスメッシュとして Istio を使用する場合は、Istio Ingress またはメッシュ統合 Gateway を使用してください。 |
| `vantage.vantageVersion` | インストールする Vantage のバージョンです。`Vantage.spec.vantageVersion` にマッピングされます。デフォルトは `""` です。 |
| `vantage.databaseProvider` | Vantage サービスで使用するデータベースエンジンです。指定可能な値は `SqlServer` (デフォルト) または `PostgreSQL` です (case-sensitive) 。 |
| `vantage.secrets.azure.clientId` | Key Vault への読み取りアクセス権を持つユーザー割り当てマネージドIDのクライアントIDです。`identityMode: workloadIdentity` (デフォルト) の場合、各ワークロードは ServiceAccount の `azure.workload.identity/client-id` アノテーションを使用し、これがない場合は `clientId` にフォールバックします。`Vantage.spec.secrets.azure.clientId` にマッピングされます。 |
| `vantage.secrets.azure.identityMode` | `workloadIdentity` (デフォルト) 、`podIdentity`、`vmManagedIdentity` のいずれかです。[シークレットと Key Vault](https://docs.abbyy.com/ja/vantage/self-hosted/v3.0/secrets-and-keyvault.md#azure-key-vault-provider) を参照してください。 |
| `vantage.secrets.azure.userAssignedIdentityID` | `identityMode` が `vmManagedIdentity` の場合に使用する UAMI のクライアントIDです。 |
| `vantage.secrets.azure.objects` | 名前がエイリアスと一致しない Key Vault オブジェクト用の、シークレットのエイリアス → `{objectName, objectType, objectVersion}` のマップです。 |
| `vantage.secrets.kubernetes` | Azure Key Vault の代わりに、既存の Kubernetes `Secret` リソースを使用します。オプションの `objects` マッピングを使用すると、デフォルトのシークレット名を上書きできます。 |
| `vantage.smtp.host` / `port` / `useSSL` / `login` / `password` | 送信用 SMTP。設定した場合にのみ使用されます。デフォルトは SendGrid です。`Vantage.spec.smtp` にマッピングされます。`port` のデフォルトは `587`、`useSSL` (TLS) のデフォルトは `false` です。 |
| `vantage.serviceAccountName` | Vantage ワークロードのデフォルト ServiceAccount。`Vantage.spec.serviceAccountName` にマッピングされます。デフォルトは `default` です。プル Secret を使用してイメージをプルするには、この ServiceAccount と、`vantage.workloads.serviceAccounts` で指定されたすべての ServiceAccount の `imagePullSecrets` に Secret を追加します (チャートで ServiceAccount を作成する場合は `serviceAccounts.imagePullSecrets` を設定します) 。[Azure のイメージプルアクセス](https://docs.abbyy.com/ja/vantage/self-hosted/v3.0/providers/azure.md#image-pull-access)または[自己管理型レジストリへのアクセス](https://docs.abbyy.com/ja/vantage/self-hosted/v3.0/providers/self-managed.md#configure-registry-access)を参照してください。 |
| `serviceAccounts.vantage.create` / `name` / `labels` / `annotations` / `imagePullSecrets` | Vantage ワークロード用の ServiceAccount をチャートで作成します。デフォルトは `create: false` です。名前のデフォルトはリリース名で、`vantage.serviceAccountName` として設定されます。 |
| `serviceAccounts.ociMigration.create` / `name` / `labels` / `annotations` / `imagePullSecrets` | OCI 移行ジョブ用の ServiceAccount をチャートで作成します。デフォルトは `create: false` です。名前のデフォルトは `<release name>-oci-migration` で、`vantage.ociMigration.serviceAccountName` として設定されます。 |
| `serviceAccounts.labels` / `annotations` / `imagePullSecrets` | チャートが作成するすべての ServiceAccount に追加されます。ラベルとアノテーションは、個々の ServiceAccount に設定された値が優先されます。プルシークレットは、各 ServiceAccount に設定済みのものに追加されます。デフォルトは空です。 |
| `serviceAccounts.workloads.<chart>.<kind>` | 特定のワークロードに、`vantage` ServiceAccount ではなく専用の ServiceAccount を割り当てます。キーはチャート名とワークロードの種類 (`migrator`、`deployment`、または `statefulSet`) の 2 階層です。各エントリでは `create` (デフォルト `true`) 、`name` (デフォルト `<chart name without -helm>-<kind>`、例: `mail-migrator`。`create` が `false` の場合は必須) 、`labels`、`annotations`、`imagePullSecrets`、`roles` を指定できます。各 ServiceAccount は `roles` にバインドされます。`roles` のデフォルトは、マイグレーターの場合は `migration-writer` と `serviceversion-reader`、それ以外の場合は `migration-reader` と `serviceversion-reader` です。同じ名前を指定すると、複数のワークロードで ServiceAccount を共有できます。その場合、共有 ServiceAccount を作成するエントリはすべて同一の設定にする必要があります。`Vantage.spec.workloads.serviceAccounts` を設定します。デフォルトは `{}` です。 |
| `vantage.workloads.configMap` / `metadataTemplateKey` / `secretsKey` / `workloadsKey` / `additionalMetadataKey` | チャートに同梱される workloads ConfigMap のキー。`workloadsConfigMap.create` が `true` (デフォルト) の場合、チャートは ConfigMap にチャートバージョンに基づく名前を付け、`configMap` (デフォルト `vantage-workloads`) は名前のプレフィックスとしてのみ使用します。`additionalMetadataKey` (デフォルト `additional-metadata.yml`) は、`workloadsConfigMap.additionalMetadata` のオーバーライドを格納するキーの名前です。`Vantage.spec.workloads` にマッピングされます。 |
| `vantage.workloads.pods.labels` / `vantage.workloads.pods.charts.<chart>.<kind>.labels` | すべてのワークロード、または特定のワークロードの pod に追加されるラベル (例: `azure.workload.identity/use: "true"`) 。チャートごとのラベルが優先されます。`Vantage.spec.workloads.pods` にマッピングされます。`<chart>` は workloads ConfigMap 内の完全なチャート名 (例: `mail-helm`) です。`<kind>` は `migrator`、`deployment`、または `statefulSet` です。 |
| `vantage.storage.custom.storageClass` / `size` | Azure Blob の代わりに、Kubernetes の `StorageClass` をバックエンドとするストレージを使用します。`Vantage.spec.storage.custom` にマッピングされます。`size` のデフォルトは `300Gi` です。 |
| `vantage.idReadingEnabled` | ID 読み取り機能を有効にします。`Vantage.spec.idReadingEnabled` にマッピングされます。デフォルトは `false` です。`worker-id-reading` チャートはオペレーターによってデプロイされません。[TechCore ワーカーのデプロイメント](#techcore-worker-deployment)を参照してください。 |
| `vantage.minimalInstall` | 最小限のリソース構成で Vantage ワークロードをデプロイします。`Vantage.spec.minimalInstall` にマッピングされます。デフォルトは `false` です。制御対象はワークロードのサイズのみです。`defaultSkills.mode: minimal` または `custom` と組み合わせて使用してください。 |
| `vantage.debug` | Vantage ワークロードをデバッグモードでデプロイします。`Vantage.spec.debug` にマッピングされます。デフォルトは `false` です。 |
| `defaultSkills.mode` | `all` (デフォルト。すべてのデフォルトSkillのすべてのバージョン) 、`minimal` (各 Skill の最新バージョンと、チャートで固定されたバージョン) 、または `custom` (`defaultSkills.skills` のみ) 。安全なデフォルト値は `all` だけです。デフォルトSkillから派生した Skill は、元のデフォルトSkillがインストールされていないと動作しなくなるため、セットを絞り込む場合は必ず明示的に選択してください。インストール済みのデフォルトSkillは削除できないため、初回インストールの前にセットを決定してください。`workloadsConfigMap.additionalMetadata` 内の `skill-installer-def-installation` のオーバーライドが優先されます。 |
| `defaultSkills.skills` | `custom` モードでインストールする Skill を `{id, versions}` エントリとして指定します。他のモードでは無視されます。最新バージョンのみの場合は `versions` を省略し、すべてのバージョンの場合は `all` を設定します。または、バージョン番号を列挙します。不明な ID やバージョンを指定するとレンダリングが失敗します。デフォルトは `[]` です。 |
| `workloadsConfigMap.create` | Vantage のインストールに必要なチャートとイメージの情報を含む ConfigMap を、関連する RBAC とともに作成します。デフォルトは `true` です。ConfigMap 名にはチャートバージョンが含まれるため、チャートをアップグレードするたびに `Vantage.spec.workloads.configMap` が変わり、オペレーターが Vantage をインプレースで更新します。これは `helm upgrade` でも、`helm template` でレンダリングする GitOps ツールでも同様です。 |
| `workloadsConfigMap.additionalMetadata` | レンダリングされたワークロードメタデータにマージされる、チャートごとの高度なオーバーライド。デフォルトは `{}` です。`charts.skill-installer-def-installation.values.defaultSkills` のエントリは `defaultSkills.mode` より優先されます。[追加のワークロードメタデータ](https://docs.abbyy.com/ja/vantage/self-hosted/v3.0/performance/additional-workloads-metadata.md)を参照してください。 |
| `vantage.reportingEnabled` | SQL Server のレポート機能を有効または無効にします。デフォルトは `false` です。PostgreSQL を使用する場合は `false` のままにしてください。 |
| `vantage.reverseProxy` | TLS を終端するリバースプロキシの背後で動作するように Vantage アプリケーションサービスを構成します。デフォルトは `false` です。`ingress.type: gateway` を使用する場合、および Ingress コントローラーまたは顧客管理のプロキシが TLS を終端する場合 (`ingress.type: kubernetes` ではよくある構成です) は `true` に設定します。`Vantage.spec.reverseProxy` にマッピングされます。[転送された HTTPS スキーム](https://docs.abbyy.com/ja/vantage/self-hosted/v3.0/providers/self-managed.md#forwarded-https-scheme)を参照してください。 |
| `vantage.argocd.project` | オペレーターが生成する Application 用の Argo CD プロジェクト。デフォルトは `default` です。このプロジェクトで宛先クラスターと名前空間が許可されている必要があります。`Vantage.spec.argocd.project` にマッピングされます。 |
| `vantage.updatePolicy.manual` / `auto` | アップグレードポリシー。`Vantage.spec.updatePolicy` にマッピングされます。デフォルトは `manual: {}` で、新しいチャートバージョンをインストールした場合にのみ Vantage がアップグレードされます。ポリシーは必ず 1 つだけ指定する必要があります。自動更新はまだサポートされていないため、CRD は `auto` を拒否します。[`updatePolicy`](https://docs.abbyy.com/ja/vantage/self-hosted/v3.0/reference/latest/api-reference#vantagespecupdatepolicy) を参照してください。 |
| `vantage.ociMigration.enabled` | OCI 移行ジョブを実行します。デフォルトは `true` です。 |
| `vantage.ociMigration.serviceAccountName` | OCI 移行ジョブの実行に使用する ServiceAccount。`Vantage.spec.ociMigration.serviceAccountName` にマッピングされます。プルシークレットを使用してジョブイメージをプルするには、この ServiceAccount の `imagePullSecrets` にシークレットを追加します。 |
| `vantage.ociMigration.imagePullSecrets` | OCI 移行ジョブを実行するオペレーターイメージ用のプルシークレット。 |
| `vantage.ociMigration.sources[]` | Vantage アーティファクトのコピー元となるソースレジストリ。`sources[0].host` と `sources[0].repository` には ABBYY のソースレジストリを設定します。`sources[].credentialsRef.name` には、`username` キーと `password` キーを持つ Secret、または `kubernetes.io/dockerconfigjson` Secret を設定します。 |
| `vantage.ociMigration.sources[].username` / `password` | ソースレジストリの平文の認証情報。デフォルトは `""` です。本番環境では `sources[].credentialsRef.name` を使用してください (こちらが優先されます) 。 |
| `vantage.ociMigration.destination.host` / `repository` | アーティファクトのコピー先となる宛先レジストリ。`enabled` が `true` の場合は必須です。ホストのデフォルトは `abbyy.com` です。`host` にはレジストリのホスト名 (ポートは任意) を指定し、スキームやパスは含めません。パスは `repository` に指定します (例: `vantage/images`) 。 |
| `vantage.ociMigration.destination.username` / `password` / `credentialsRef.name` | 宛先レジストリの認証情報。`username` と `password` は平文で、デフォルトは `""` です。本番環境では、`credentialsRef.name` に `username` キーと `password` キーを持つ Secret、または `kubernetes.io/dockerconfigjson` Secret を設定してください。`credentialsRef` は `username` および `password` より優先されます。`Vantage.spec.ociMigration.destination` にマッピングされます。 |
| `vantage.ociMigration.concurrency` | OCI 移行ジョブが並列でコピーするアーティファクトの数。デフォルトは `5` です。 |
| `vantage.ociMigration.resources` | OCI 移行ジョブのコンテナーのリクエストと制限。デフォルト: リクエストは CPU `100m` / メモリ `128Mi`、制限はメモリ `512Mi`、CPU 制限なし。値を指定すると、デフォルトは部分的にではなく全体が置き換えられます。 |
| `vantage.keda.enabled` | Vantage ワークロードのオートスケーリングに [KEDA](https://keda.sh/) を使用するかどうかを設定します。デフォルトは `false` です。現在の Vantage ワークロードチャートには KEDA 2.17.x が必要です。[KEDA によるオートスケーリング](https://docs.abbyy.com/ja/vantage/self-hosted/v3.0/performance/autoscaling.md)を参照してください。 |
| `observability.prometheus.namespace` | Prometheus インスタンスがインストールされている名前空間。デフォルトは `observability` です。Vantage の KEDA オートスケーラーは `prometheus-operated.observability.svc.cluster.local:9090` で Prometheus にリクエストを送信するため、Prometheus は `observability` 名前空間から移動しないでください。 |
| `observability.prometheus.serviceMonitor.create` | Vantage アプリケーションメトリクスをスクレイプするための Prometheus `ServiceMonitor` リソースを作成します。デフォルトは `false` です。 |
| `observability.prometheus.serviceMonitor.selectorMatchLabels` | Prometheus インスタンスが `ServiceMonitor` を登録する際に必要とするラベル。`Prometheus` リソースの `spec.serviceMonitorSelector.matchLabels` と一致させてください。デフォルトは `{}` です。 |
| `observability.prometheus.serviceMonitor.interval` | Prometheus が Vantage のメトリクスをスクレイプする間隔。KEDA はこれらのメトリクスを読み取るため、この間隔によって、キューに入った処理に TechCore worker が反応できる速さも制限されます。デフォルトは `15s` で、`vantage.minimalInstall` が `true` の場合は `60s` です。[KEDA によるオートスケーリング](https://docs.abbyy.com/ja/vantage/self-hosted/v3.0/performance/autoscaling.md#scale-out-responsiveness)を参照してください。 |
| `observability.prometheus.serviceMonitor.scheme` | `ServiceMonitor` のスクレイプエンドポイントのスキーム。デフォルトでは未設定 (HTTP) です。Istio の `STRICT` mTLS 環境、または認可ポリシーによって平文のスクレイプがブロックされる Linkerd 環境では、`tlsConfig` とあわせて `https` を設定してください。Istio の `PERMISSIVE` mTLS 環境では未設定のままにしてください。[Prometheus による監視](https://docs.abbyy.com/ja/vantage/self-hosted/v3.0/monitoring/prometheus.md#istio-mtls)を参照してください。 |
| `observability.prometheus.serviceMonitor.tlsConfig` | `ServiceMonitor` のスクレイプエンドポイント用の Prometheus `tlsConfig` (`caFile`、`certFile`、`keyFile`、`insecureSkipVerify`)。デフォルトでは未設定です。`scheme: https` と併用してください。 |
| `vantage.techcore.versions` | デプロイする TechCore のバージョン。指定可能な値: `2`、`3`、`4`。デフォルトは `[3, 4]` です。最も新しいバージョンが現行バージョンとなります。[TechCore worker のデプロイメント](#techcore-worker-deployment)を参照してください。 |
| `vantage.techcore.nnTrainingWorkers.enabled` / `gpu` | 現行 (最新) バージョンの TechCore 用に、ニューラルネットワークのトレーニングワーカーをデプロイします。`gpu: true` を指定すると、CPU 版ではなく GPU 版がデプロイされます。デフォルトは `false` / `false` です。 |

## 使用可能な値の確認

`vantage-operator` チャートは Kubebuilder Helm プラグインによって生成されます。一方、`vantage-selfhosted` チャートの `Vantage` カスタムリソースと workloads ConfigMap のテンプレートは手動で管理されています。チャートの各バージョンで使用できる値を表示するには、次のコマンドを実行します。

```bash theme={null}
# vantage-operator
helm show values $charts_uri/vantage-operator --version $operator_version

# vantage-selfhosted
helm show values $chart_uri/vantage-selfhosted --version $selfhosted_version
```

`$charts_uri`、`$chart_uri`、およびバージョン変数は、[インストール変数](https://docs.abbyy.com/ja/vantage/self-hosted/v3.0/providers/azure.md#install-variables)で説明されている規則に従います。

適用する前に、レンダリングされたマニフェストを確認するには、次のようにします。

```bash theme={null}
helm template $release_name $chart_uri/vantage-selfhosted \
  --version $selfhosted_version \
  --namespace $install_namespace \
  -f my-values.yaml
```

## オペレーターの設定と Vantage の設定

| 対象 | 設定場所 |
| - | - |
| オペレーターのランタイム (イメージ、プルシークレット、スケジューリング、CRD ライフサイクル、メトリクス) | `vantage-operator` の Helm 値 |
| Vantage アプリケーション (シークレット、SMTP、ワークロード、ストレージ、techcore) | `vantage-selfhosted` の Helm 値 → `Vantage.spec` |

## TechCore worker のデプロイメント

`vantage-selfhosted` チャートは `Vantage` カスタムリソースを適用します。続いてオペレーターが、`spec.techcore.*` の設定に応じて TechCore worker チャートの一部をデプロイします。デプロイされるチャートは、以下のマトリックスのとおりです。

### 命名規則

ワーカーチャートの名前は `vtc-{version}-worker-{name}-helm` という形式で、`{version}` には `spec.techcore.versions` に記載されたバージョンが入ります。バージョン番号は単なる名前のプレフィックスであり、オペレーターにとって特別な意味はありません。利用可能なワーカーの一覧は、`vantage-selfhosted` チャートに同梱されている workloads ConfigMap によって決まります。

### 2 回のデプロイメントパス

| パス | バージョン | 対象となるチャート |
| - | - | - |
| 現在のバージョン | `spec.techcore.versions` 内で最も新しいバージョン | `vtc-{version}-worker*` |
| 以前のバージョン | `spec.techcore.versions` 内のその他すべてのバージョン | `vtc-{version}-worker*` |

`spec.techcore.versions` に記載されていないバージョンのワーカーチャートはデプロイされません。以前の TechCore バージョンのワーカーを現在のバージョンと並行して稼働させ続けるには、両方のバージョンを記載してください。チャートのデフォルト値 `[3, 4]` では、TechCore 4 が現在のバージョン、TechCore 3 が以前のバージョンとしてデプロイされます。

### インクルージョンマトリクス: 現行バージョン

| チャートパターン | 含まれる条件 |
| - | - |
| `worker-id-reading` | 含まれない (すべての構成で除外) |
| `nn-extraction-training` | `nnTrainingWorkers.enabled: true` かつ `nnTrainingWorkers.gpu: false` |
| `nn-extraction-training-gpu` | `nnTrainingWorkers.enabled: true` かつ `nnTrainingWorkers.gpu: true` |
| `nn-nlp-model-train` | `nnTrainingWorkers.enabled: true` かつ `nnTrainingWorkers.gpu: false` |
| `nn-nlp-model-train-gpu` | `nnTrainingWorkers.enabled: true` かつ `nnTrainingWorkers.gpu: true` |
| その他すべてのワーカー | 常に |

### インクルージョンマトリクス：以前のバージョンのパス

`spec.techcore.versions` に含まれるバージョンのうち、最上位を除くすべてのバージョンに対して実行されます。

| チャートパターン | 含まれる条件 |
| - | - |
| `worker-id-reading` | 含まれない |
| `nn-extraction-training*` (CPU および GPU) | 含まれない (NN 学習は現在のバージョンでのみ実行されます) |
| `nn-nlp-model-train*` (CPU および GPU) | 含まれない (NN 学習は現在のバージョンでのみ実行されます) |
| その他すべてのワーカー | 常に |

> [!NOTE]
>
> ID reading は TechCore ではなく、プラットフォームレベルで扱われる機能です。そのフラグである `spec.idReadingEnabled` は `spec.techcore` の外部で定義されます。`worker-id-reading` チャートがデプロイされることはありません。[`Vantage.spec` リファレンス](https://docs.abbyy.com/ja/vantage/self-hosted/v3.0/reference/latest/api-reference#vantagespec)を参照してください。

このマトリクスが判定するのは、選択されたバージョンの workloads ConfigMap に存在するワーカーを対象に、どれを含めるかという点のみです。そのバージョンのワークロードに存在しないチャートは、そもそもデプロイできません。たとえば、`worker-ocr-join` は現時点では `vtc-2` のワークロードセットにのみ含まれているため、`spec.techcore.versions` に `2` が含まれる場合に限り、`vtc-2-worker-ocr-join-helm` としてデプロイされます。

## 次のステップ

> [card] [APIリファレンス](https://docs.abbyy.com/ja/vantage/self-hosted/v3.0/reference/latest/api-reference.md)
>
> `Vantage` カスタムリソースの各フィールドに関するリファレンスです。

> [card] [Azure へのインストール](https://docs.abbyy.com/ja/vantage/self-hosted/v3.0/providers/azure.md)
>
> これらのチャートを使用した具体的なインストール手順です。

> [card] [セルフマネージド Kubernetes](https://docs.abbyy.com/ja/vantage/self-hosted/v3.0/providers/self-managed.md)
>
> お客様が管理する Ingress、メッシュ、シークレット、ストレージ、データサービスを使用してインストールします。
