> ## 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.

# Azure

> Azure Kubernetes Service、Azure Key Vault、Secrets Store CSI driver、Azure Workload Identity を使用して、Vantage 3.0 セルフホスト型をデプロイします。

Azure Key Vault を使用する Azure Kubernetes Service (AKS) は、Vantage 3.0 セルフホスト型で検証済みのプロバイダーです。このページでは、Azure へのインストールに必要な一連の内容をまとめて説明します。具体的には、前提条件、identity の設定、Helm のインストール コマンド、運用上の注意事項です。各コンポーネントでは、CRD が対応している場合、[Kubernetes Secrets provider](/ja/vantage/self-hosted/v3.0/secrets-and-keyvault#kubernetes-secrets-provider) や [custom storage](/ja/vantage/self-hosted/v3.0/api-reference#vantagespecstoragecustom) などの Kubernetes ネイティブな代替手段も利用できます。

<div id="prerequisites">
  ## 前提条件
</div>

このページの手順を進める前に、[プラットフォームの前提条件](/ja/vantage/self-hosted/v3.0/prerequisites)が満たされていることを確認してください。Kubernetes、ArgoCD、Helm、および基盤となる SQL / Redis / SMTP / OCI レジストリ / オブジェクト ストレージ サービスが必要です。以下の Azure 固有の項目は、それらに追加して必要となります。

| コンポーネント                                                                                                                  | テスト済みバージョン                                                              | 注記                                                                                                                                                                                                                                                                                                                                                                                              |
| ------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Azure Kubernetes Service (AKS)                                                                                           | 1.33.6                                                                  | CRD と operator チャートがクラスターにインストールされています。                                                                                                                                                                                                                                                                                                                                                         |
| Azure SQL                                                                                                                | 12.0.2000.8 (compatibility level 170, General Purpose Serverless Gen 5) | Vantage データベースのバックエンドです。connection string のエイリアスごとに 1 つずつ存在します (現在は 23 個) 。[データベース接続文字列](#database-connection-strings)を参照してください。                                                                                                                                                                                                                                                                |
| Azure Managed Redis                                                                                                      | 7.4 (EnterpriseCluster)                                                 | キャッシュ、ロック、およびクライアント キャッシュに使用します。                                                                                                                                                                                                                                                                                                                                                                |
| Azure Container Registry                                                                                                 | n/a                                                                     | OCI 移行の宛先レジストリです。ワークロードはここから Vantage イメージを取得します。移行の認証方式は、認証なし、basic auth、または Workload Identity + Azure RBAC です。イメージ取得については、[イメージ プル アクセス](#image-pull-access)を参照してください。                                                                                                                                                                                                                         |
| Azure StorageV2                                                                                                          | general purpose v2                                                      | 5 つの storage account 接続文字列 (archive、temporary (old)、temporary、permanent、standard) のバックエンドです。[storage account 接続文字列](#storage-account-connection-strings)を参照してください。                                                                                                                                                                                                                              |
| Azure Key Vault                                                                                                          | n/a                                                                     | Azure secrets provider を使用する場合、すべての Vantage シークレット (PEM エンコードされた TLS マテリアルを含む) を格納します。`identityMode` で選択した identity には読み取りアクセス権が必要です。                                                                                                                                                                                                                                                           |
| AKS Istio Add-on                                                                                                         | `asm-1-28`                                                              | 外部 ingress gateway をデプロイする必要があります。                                                                                                                                                                                                                                                                                                                                                              |
| [Azure Key Vault Provider for Secrets Store CSI Driver](https://azure.github.io/secrets-store-csi-driver-provider-azure) | 1.7.2 (Helm chart 1.7.2)                                                | pod の起動時にシークレットを取得する CSI provider プラグインです。                                                                                                                                                                                                                                                                                                                                                      |
| Azure Workload Identity                                                                                                  | n/a                                                                     | 各 Vantage チャートの ServiceAccount を、そのチャートの Key Vault エイリアスへの読み取りアクセス権を持つ user-assigned managed identity にフェデレーションしてください。operator は ServiceAccounts を作成したり、注釈を付与したりしません。これは OCI 移行ジョブ (Workload Identity + Azure RBAC 認証) および in-mesh Prometheus (Azure Monitor) でも使用されます。[Secrets and Key Vault](/ja/vantage/self-hosted/v3.0/secrets-and-keyvault#service-accounts-and-identity-scope)を参照してください。 |
| AKS KEDA Add-on (optional, recommended)                                                                                  | `2.17.3-5`                                                              | [KEDA](https://keda.sh/) の autoscaling サポートに必要です。                                                                                                                                                                                                                                                                                                                                               |

インストール前に、さらに 2 つのセットアップ作業を完了する必要があります。どちらも、参照先となるインストール変数の説明の後に以下で扱っています。[ArgoCD を OCI レジストリに接続する](#connect-argocd-to-your-oci-registry)および [イメージ プル アクセス](#image-pull-access)です。

<div id="azure-key-vault-secrets">
  ## Azure Key Vault シークレット
</div>

Vantage operator は、**エイリアス**でシークレットを参照します。Azure で最も簡単な構成は、各エイリアスと同じ名前の Key Vault シークレットを作成することです。プロビジョニング処理で別の名前を使用する場合は、`vantage.secrets.azure` 配下に `objects` マッピングを指定して対応付けを変更してください。`identityMode` で選択した ID ([インストール変数](#install-variables)を参照) には、以下に示すすべてのシークレットに対する**読み取り**アクセス権が必要です。

エイリアスの完全な一覧 (プラットフォーム、Storage、Databases、OAuth) は、[シークレットと Key Vault](/ja/vantage/self-hosted/v3.0/secrets-and-keyvault#secret-aliases) に記載されています。以下の一覧はこれと同じもので、Azure のインストール向けにここへ再掲しています。

<div id="platform">
  ### プラットフォーム
</div>

| エイリアス                          | 説明                                                                                                        |
| ------------------------------ | --------------------------------------------------------------------------------------------------------- |
| `sendgridApiKey`               | SendGrid の API キー。`spec.smtp` を設定しない場合は必須です。                                                              |
| `redisConnectionString`        | Redis の接続文字列。                                                                                             |
| `redisCacheConnectionString`   | Redis キャッシュ / ロック / クライアントキャッシュ用の接続文字列。`redisConnectionString` を再利用できます。                                  |
| `secretStorageUserKeyVaultUri` | シークレットの保存に使用する Azure Key Vault の URI。同じ Key Vault を使用することも、別の Key Vault を使用することもできます (別の Key Vault を推奨) 。 |

<div id="storage-account-connection-strings">
  ### ストレージ アカウント接続文字列
</div>

| 別名                                       | 説明                                     |
| ---------------------------------------- | -------------------------------------- |
| `storageArchiveConnectionString`         | ストレージ アカウント接続文字列 ("archive") 。         |
| `storageLegacyTemporaryConnectionString` | ストレージ アカウント接続文字列 ("temporary (old)") 。 |
| `storageTemporaryConnectionString`       | ストレージ アカウント接続文字列 ("temporary") 。       |
| `storagePermanentConnectionString`       | ストレージ アカウント接続文字列 ("permanent") 。       |
| `storageStandardConnectionString`        | ストレージ アカウント接続文字列 ("standard") 。        |

各ストレージ型の意味については、Vantage の基本 Documentation を参照してください。

<div id="database-connection-strings">
  ### データベース接続文字列
</div>

データベースごとに一意のエイリアスを 1 つ設定します。以下のデータベース名はあくまで例です。接続文字列が正しいデータベースを指していれば、プロビジョニング プロセスで生成された任意の名前を使用できます。

| エイリアス                                        | データベース                                                |
| -------------------------------------------- | ----------------------------------------------------- |
| `apiRegistryDatabaseConnectionString`        | `apiregistry`                                         |
| `auth2DatabaseConnectionString`              | `auth`                                                |
| `authIdentityDatabaseConnectionString`       | `auth-identity`                                       |
| `cronServiceDatabaseConnectionString`        | `cron`                                                |
| `documentSetStorageDatabaseConnectionString` | `documentset`                                         |
| `mailDatabaseConnectionString`               | `mail`                                                |
| `securityAuditDatabaseConnectionString`      | `security-audit`                                      |
| `storageDatabaseConnectionString`            | `storage`                                             |
| `workflowDatabaseConnectionString`           | `workflows`                                           |
| `catalogStorageDatabaseConnectionString`     | `catalogstorage`                                      |
| `folderImportDatabaseConnectionString`       | `folderimport`                                        |
| `interactiveJobsDatabaseConnectionString`    | `interactive-jobs`                                    |
| `mailImportDatabaseConnectionString`         | `mailimport`                                          |
| `permissionsDatabaseConnectionString`        | `permissions`                                         |
| `reportingDatabaseConnectionString`          | `reporting` (Columnstore Indexing をサポートしている必要があります) 。 |
| `secretStorageDatabaseConnectionString`      | `secretstorage`                                       |
| `skillInfoDatabaseConnectionString`          | `skillinfo`                                           |
| `skillMonitorDatabaseConnectionString`       | `skillmonitor`                                        |
| `subscriptionDatabaseConnectionString`       | `subscriptions`                                       |
| `tokenManagementDatabaseConnectionString`    | `tokenmanagement`                                     |
| `transactionsDatabaseConnectionString`       | `transactions`                                        |
| `urlShortenerDatabaseConnectionString`       | `urlshortener`                                        |
| `workspaceDatabaseConnectionString`          | `workspace`                                           |

<div id="oauth">
  ### OAuth
</div>

| エイリアス                        | 説明                            |
| ---------------------------- | ----------------------------- |
| `oAuthGoogleClientId`        | OAuth Google クライアント ID。       |
| `oAuthGoogleClientSecret`    | OAuth Google クライアントシークレット。    |
| `oAuthMicrosoftClientId`     | OAuth Microsoft クライアント ID。    |
| `oAuthMicrosoftClientSecret` | OAuth Microsoft クライアントシークレット。 |

<div id="azure-key-vault-tls-secrets">
  ## Azure Key Vault の TLS シークレット
</div>

以下の PEM 形式の TLS 関連データは、Azure Key Vault に **シークレット** として保存する必要があります (Key Vault の証明書オブジェクトではありません) 。`identityMode` で選択した identity には、4 つすべてのシークレットエイリアスに対する読み取りアクセス権が必要です。

| エイリアス                   | 説明                      |
| ----------------------- | ----------------------- |
| `authSigningTlsCrt`     | 認証署名用の PEM 形式の証明書。      |
| `authSigningTlsKey`     | 認証署名用の PEM 形式の秘密鍵。      |
| `authDeactivatedTlsCrt` | 認証無効化トークン用の PEM 形式の証明書。 |
| `authDeactivatedTlsKey` | 認証無効化トークン用の PEM 形式の秘密鍵。 |

最も簡単な方法は、Key Vault に `auth-signing` と `auth-deactivated` という名前の自己署名証明書を 2 つ作成し (Common Name = Vantage の `dnsRecord` の値) 、その後、上記のエイリアス名に一致する 4 つの Key Vault シークレットを作成することです。別の名前を使用する場合は、secrets 構成で `objects` マッピングを指定してください。

Secrets Store CSI driver がこれらをどのように pod で利用可能にするかという概念モデルについては、[Secrets and Key Vault](/ja/vantage/self-hosted/v3.0/secrets-and-keyvault) を参照してください。

<div id="install-variables">
  ## インストール変数
</div>

インストールコマンドを実行する前に、次の値を用意しておいてください。

| Variable                                                    | Description                                                                                    |
| ----------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
| `$operator_namespace`                                       | Vantage operator のインストール先の名前空間。                                                                |
| `$install_namespace`                                        | Vantage のインストール先の名前空間。任意の名前空間を指定できますが、通常は `app` です。                                            |
| `$operator_version`                                         | `vantage-operator` Helm チャートのバージョン。                                                            |
| `$selfhosted_version`                                       | `vantage-selfhosted` Helm チャートのバージョン。                                                          |
| `$charts_uri`                                               | Vantage operator の Helm チャートをホストしている OCI URI。                                                  |
| `$chart_uri`                                                | `vantage-selfhosted` Helm チャートをホストしている OCI URI。                                                |
| `$release_name`                                             | `vantage-selfhosted` の Helm リリース名。                                                             |
| `$your_vantage_hostname`                                    | Vantage へのアクセスに使用する DNS ホスト名。                                                                  |
| `$ingress_tls_secret_name`                                  | ingress gateway の名前空間にある `kubernetes.io/tls` シークレットの名前。                                        |
| `$key_vault_name`, `$tenant_id`, `$client_id`               | Azure Key Vault 名、テナント ID、および Key Vault への読み取りアクセス権を持つ UAMI の Client ID。                       |
| `$your_mailfrom`                                            | 送信メールの差出人アドレス。                                                                                 |
| `$smtp_host`, `$smtp_port`, `$smtp_login`, `$smtp_password` | 送信 SMTP 設定。**任意**: SendGrid (既定) を使用する場合は省略します (シークレット プロバイダー経由で `sendgridApiKey` を指定してください) 。 |
| `$your_platformadmin_email`                                 | 初期プラットフォーム管理者のメールアドレス。                                                                         |
| `$your_oci_host`                                            | Vantage アーティファクトの移行先となる OCI レジストリホスト。                                                          |
| `$abbyy_oci_source_host`, `$abbyy_oci_source_repository`    | ABBYY 提供アーティファクトのソース レジストリおよびリポジトリ。ドキュメント記載の値は `abbyy.jfrog.io` と `abbyy-docker` です。           |

<div id="connect-argocd-to-your-oci-registry">
  ## ArgoCD を OCI レジストリに接続する
</div>

ArgoCD は OCI レジストリから Vantage コンポーネントのチャートを取得するため、そのレジストリにアクセスできるよう ArgoCD で接続を設定します。ArgoCD はお客様がインストールして保守するサードパーティ ソフトウェアであるため、この接続は、お客様自身でレジストリを ArgoCD のリポジトリとして登録して作成します。詳しくは、ArgoCD のドキュメントの [Private Repositories](https://argo-cd.readthedocs.io/en/stable/user-guide/private-repositories/) を参照してください。

Azure では、ArgoCD のドキュメントに記載されている [Azure Workload Identity](https://argo-cd.readthedocs.io/en/stable/user-guide/private-repositories/#azure-container-registryazure-repos-using-azure-workload-identity) を使用することを推奨します。

<div id="image-pull-access">
  ## イメージ プル アクセス
</div>

ワークロードがレジストリからイメージをプルできるようにする必要があります。プル アクセスは、次の 2 つの方法のいずれかで設定します。以下の `my-pull-secret` と `my-service-account` は例として使用している名前です。実際の環境に合わせて置き換えてください。

**方法 1 (Azure) : AKS の managed identity に `AcrPull` を付与する。** Azure でのデプロイでは、プル シークレットを設定する代わりに、AKS の managed identity (kubelet ID) に Azure Container Registry への [`AcrPull`](https://learn.microsoft.com/azure/aks/cluster-container-registry-integration) を付与することで、設定を簡略化できます。これにより、Step 1 と Step 2 のプル シークレット用 `--set` フラグは省略できます。

**方法 2: Kubernetes のイメージプルシークレット。** レジストリのプル シークレットを作成し ([Kubernetes Documentation](https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/)) 、その後、コンポーネントごとに関連付けます。

| Component         | Configuration                                                                                                                                                                                                                                     |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Operator pods     | `vantage-operator` チャートに `--set "manager.imagePullSecrets[0].name=my-pull-secret"` を指定します。[Step 1](#step-1-install-the-vantage-operator) を参照してください。                                                                                               |
| OCI migration job | プル シークレットを持つ ServiceAccount でジョブを実行する (`vantage.ociMigration.serviceAccountName=my-service-account`) か、ソース エントリでシークレットを参照します (`vantage.ociMigration.sources[0].credentialsRef.name=my-pull-secret`) 。[Step 2](#step-2-install-vantage) を参照してください。 |
| Vantage workloads | `vantage.serviceAccountName` で指定した ServiceAccount の `imagePullSecrets` にプル シークレットを追加します。[Step 2](#step-2-install-vantage) を参照してください。                                                                                                              |

ロール割り当て、ServiceAccount、プル シークレットは、お客様自身で作成および管理します。

<div id="step-1-install-the-vantage-operator">
  ## Step 1: Vantage operator をインストールする
</div>

Vantage operator 用の名前空間を選択し (`app` である必要はありません) 、チャートをインストールします。

```bash theme={null}
helm upgrade --install vantage-operator $charts_uri/vantage-operator \
  --version $operator_version \
  --namespace $operator_namespace \
  --wait
```

`AcrPull` の代わりに pull secrets ([イメージ プル アクセス](#image-pull-access)を参照) を使用する場合は、以下を追記します:

```bash theme={null}
  --set "manager.imagePullSecrets[0].name=my-pull-secret"
```

追加で指定できる値については、[`vantage-operator` チャートの値](/ja/vantage/self-hosted/v3.0/helm-chart#vantage-operator)を参照してください。

<div id="step-2-install-vantage">
  ## ステップ 2: Vantage をインストールする
</div>

選択した名前空間に `vantage-selfhosted` チャートをインストールし、シークレット構成と OCI 移行設定を指定します：

```bash theme={null}
helm upgrade --install $release_name $chart_uri/vantage-selfhosted \
  --version $selfhosted_version \
  --namespace $install_namespace \
  --set "operator.namespace=$operator_namespace" \
  --set "ingress.tls.secretName=$ingress_tls_secret_name" \
  --set "vantage.dnsRecord=$your_vantage_hostname" \
  --set "vantage.mailFrom=$your_mailfrom" \
  --set "vantage.platformAdminEmail=$your_platformadmin_email" \
  --set "vantage.secrets.azure.keyVaultName=$key_vault_name" \
  --set "vantage.secrets.azure.tenantId=$tenant_id" \
  --set "vantage.secrets.azure.clientId=$client_id" \
  --set "vantage.ociMigration.enabled=true" \
  --set "vantage.ociMigration.sources[0].host=$abbyy_oci_source_host" \
  --set "vantage.ociMigration.sources[0].repository=$abbyy_oci_source_repository" \
  --set "vantage.ociMigration.destination.host=$your_oci_host" \
  --wait
```

`AcrPull` の代わりに pull secrets を使用する場合 ([イメージ プル アクセス](#image-pull-access)を参照) 、Vantage のワークロードと移行ジョブ用の pull 構成を追記します：

```bash theme={null}
  --set "vantage.serviceAccountName=my-service-account" \
  --set "vantage.ociMigration.serviceAccountName=my-service-account"
```

`my-service-account` は、`$install_namespace` に作成する ServiceAccount で、`imagePullSecrets` にレジストリの pull secret を指定します。migration job では、代わりに source エントリでその pull secret を参照することもできます。

```bash theme={null}
  --set "vantage.ociMigration.sources[0].credentialsRef.name=my-pull-secret"
```

SendGrid はデフォルトのメールプロバイダーです。Key Vault に `sendgridApiKey` を指定すれば、追加のメール設定は不要です。代わりに SMTP を使用するには、次を追記します:

```bash theme={null}
  --set "vantage.smtp.host=$smtp_host" \
  --set "vantage.smtp.port=$smtp_port" \
  --set "vantage.smtp.login=$smtp_login" \      # 省略可能
  --set "vantage.smtp.password=$smtp_password"  # 省略可能
```

<Note>
  `vantage.secrets.azure.identityMode` のデフォルトは `workloadIdentity` です。従来の pod-identity または VM-managed-identity モデルを使用する場合は、[Secrets and Key Vault](/ja/vantage/self-hosted/v3.0/secrets-and-keyvault#identity-modes) を参照してください。
</Note>

上記の `--set` フラグは、[Vantage カスタムリソース](/ja/vantage/self-hosted/v3.0/api-reference) と [`vantage-selfhosted` チャート](/ja/vantage/self-hosted/v3.0/helm-chart) の fields に直接マッピングされます。

<div id="step-3-monitor-installation-progress">
  ## ステップ 3: インストールの進行状況を確認する
</div>

Vantage のカスタムリソースが `Ready` になるまで待ちます:

```bash theme={null}
kubectl -n $install_namespace wait \
  --for=condition=Ready vantages.vantage.abbyy.com/$release_name \
  --timeout=30m
```

これは大まかな指標であり、Vantage Core のインストールが完了したことを示します。Skill のインストールは別のジョブで管理されているため、まだ実行中の可能性があります (以下を参照) 。

artifact の移行状況をより詳細に確認するには、OCI 移行ジョブを個別に監視してください：

```bash theme={null}
kubectl -n $install_namespace wait --for=create job/$release_name-oci-migration --timeout=2m
kubectl -n $install_namespace wait --for=condition=Complete job/$release_name-oci-migration --timeout=20m
```

移行が完了すると、ArgoCD (API または UI) で個々のチャートの同期ステータスを最も詳しく確認できます。唯一の例外は Skill のインストールです。Skill は、ArgoCD には表示されない別個の Kubernetes ジョブによってインストールされます。

Skill のインストール中でも、Vantage は使用できます。ジョブを直接監視してください：

```bash theme={null}
kubectl -n $install_namespace wait --for=create job/$install_namespace-skill-installer-job
kubectl -n $install_namespace wait --for=condition=Complete job/$install_namespace-skill-installer-job
```

<div id="step-4-access-vantage">
  ## Step 4: Vantage にアクセスする
</div>

リソースが `Ready` になったら、Vantage インスタンスには次の場所からアクセスできます。

```
https://$your_vantage_hostname
```

<Note>
  この時点では、Skill インストーラーのジョブがまだ実行中の可能性があります。Skill のインストール中でも、サインインして Vantage を利用できます。ジョブの進行状況は、[ステップ 3](#step-3-monitor-installation-progress) のコマンドで確認してください。
</Note>

<div id="azure-specific-operational-notes">
  ## Azure 固有の運用上の注意
</div>

* **監視**: AKS では、推奨される構成は、Azure Monitor Workspace と Azure Managed Grafana に、Istio mTLS 経由で Vantage をスクレイプする in-mesh Prometheus を組み合わせることです。設定全体については、[Azure Managed Monitoring](/ja/vantage/self-hosted/v3.0/monitoring/azure-managed)を参照してください。
* **Workload Identity**: Secrets Store CSI driver の既定の認証モードです。また、OCI 移行ジョブでサポートされている認証シナリオ (Workload Identity + Azure RBAC) の 1 つでもあり、Azure Monitor に remote-write する in-mesh Prometheus でも使用されます。[Secrets and Key Vault](/ja/vantage/self-hosted/v3.0/secrets-and-keyvault#identity-modes)を参照してください。

<div id="whats-next">
  ## 次のステップ
</div>

<CardGroup cols={2}>
  <Card title="アーキテクチャ" icon="diagram-project" href="/ja/vantage/self-hosted/v3.0/architecture">
    operator + ArgoCD + CRD パターンの仕組み。
  </Card>

  <Card title="監視" icon="chart-line" href="/ja/vantage/self-hosted/v3.0/monitoring/overview">
    in-mesh Prometheus を使用する Azure Monitor Workspace + Managed Grafana。
  </Card>

  <Card title="アップグレード" icon="arrow-up" href="/ja/vantage/self-hosted/v3.0/upgrading">
    Vantage 3.0 の各バージョン間を移行するための手動アップグレード ワークフロー。
  </Card>

  <Card title="トラブルシューティング" icon="stethoscope" href="/ja/vantage/self-hosted/v3.0/troubleshooting">
    operator、ArgoCD、Istio、Key Vault でよくある問題。
  </Card>
</CardGroup>
