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

# Configuration

> Configurez ABBYY Vantage auto-hébergé : dossiers partagés, connexions aux bases de données, prise en charge du GPU, délais d’expiration du traitement et certificats SSL/TLS pour une utilisation en production.

<div id="setting-up-a-shared-folder-connection">
  ## Configuration d’une connexion à un dossier partagé
</div>

ABBYY Vantage vous permet d’utiliser des dossiers partagés hébergés sur le serveur Vantage pour importer et exporter des documents et des Skills, ainsi que pour mettre à jour des catalogues de données.

Avant de pouvoir utiliser des dossiers partagés (partage NFS), vous devez configurer une connexion à ces dossiers partagés sur un ordinateur client. Effectuez les étapes suivantes sur un ordinateur client sous Windows :

1. Exécutez Windows PowerShell en tant qu’Administrateur.
2. Installez le client NFS de Windows :

```powershell theme={null}
dism /online /Enable-Feature /FeatureName:ServicesForNFS-ClientOnly
dism /online /Enable-Feature /FeatureName:ClientForNFS-Infrastructure
```

3. Configurez la mise en correspondance des utilisateurs Windows avec les UID et GID Unix selon les règles de votre entreprise :

```powershell theme={null}
New-ItemProperty -Path "HKLM:\Software\Microsoft\ClientForNFS\CurrentVersion\Default" -Name "AnonymousGid" -Value 65532 -PropertyType DWord
New-ItemProperty -Path "HKLM:\Software\Microsoft\ClientForNFS\CurrentVersion\Default" -Name "AnonymousUid" -Value 65532 -PropertyType DWord
```

4. Redémarrer le client NFS :

```powershell theme={null}
nfsadmin client stop
nfsadmin client start
```

Une fois les étapes ci-dessus terminées, vous pourrez copier et utiliser les chemins d’accès des dossiers partagés dans Vantage, ainsi que les ouvrir dans l’Explorateur de fichiers.

<div id="setting-up-a-database-connection">
  ## Configurer une connexion à une base de données
</div>

ABBYY Vantage utilise des bases de données hébergées sur des serveurs externes et peut cesser de fonctionner si ces serveurs tombent en panne. L’administrateur système peut restaurer ces bases de données sur un autre serveur et configurer une connexion aux nouvelles bases de données à l’aide de Consul.

<Note>
  Avant de commencer, assurez-vous que l’outil en ligne de commande kubectl est installé et qu’une connexion au cluster Kubernetes a été établie.
</Note>

Pour configurer une connexion à une nouvelle base de données dans les paramètres d’ABBYY Vantage :

1. Accédez à l’interface Web de Consul en exécutant la commande ci-dessous :

```bash theme={null}
kubectl port-forward -n abbyy-infrastructure service/consul-ui 8500:80
```

Ensuite, accédez à `http://localhost:8500/ui/dc1/kv/secret/`.

2. Utilisez l’onglet **Key/Value** qui s’ouvre pour sélectionner l’environnement Vantage approprié.
3. Sélectionnez le projet **platform** ou **vantage**, ainsi que le service approprié qui utilise la base de données (par exemple, mail).

<img src="https://mintlify.s3.us-west-1.amazonaws.com/abbyy/images/vantage/self-hosted/misc-p01-005.png" alt="Liste des services platform de Consul montrant les services disponibles" style={{ width:"53%" }} />

4. Accédez à la section **database** présente dans chaque service.

<img src="https://mintlify.s3.us-west-1.amazonaws.com/abbyy/images/vantage/self-hosted/misc-p01-006.png" alt="Onglet Key/Value de Consul montrant la sélection de l’environnement Vantage" style={{ width:"58%" }} />

6. Ouvrez la section **SqlServer**.

<img src="https://mintlify.s3.us-west-1.amazonaws.com/abbyy/images/vantage/self-hosted/misc-p01-007.png" alt="Section database de Consul montrant la configuration SqlServer" style={{ width:"58%" }} />

6. Dans la clé **connectionString** :
   * Remplacez l’ancienne valeur de **Server** par l’adresse du nouveau serveur
   * Indiquez la nouvelle base de données dans le paramètre **Database**
   * Indiquez les identifiants de connexion dans les paramètres **User Id** et **Password**

<img src="https://mintlify.s3.us-west-1.amazonaws.com/abbyy/images/vantage/self-hosted/misc-p01-008.png" alt="Éditeur de la valeur connectionString dans Consul" style={{ width:"59%" }} />

7. Cliquez sur **Save**.
8. Redémarrez le service modifié en exécutant la commande suivante :

```bash theme={null}
label=mail
kubectl -n abbyy-vantage rollout restart $(kubectl -n abbyy-vantage get deployments -l app.kubernetes.io/component=$label -o name)
```

<Note>
  Lorsque l’adresse d’un serveur change, cette procédure doit être réalisée pour chaque base de données.
</Note>

<div id="database-services-reference">
  ### Référence des services de base de données
</div>

Vous trouverez ci-dessous un tableau répertoriant tous les services qui utilisent la base de données, ainsi que l’intitulé permettant de redémarrer chacun d’eux.

<div id="platform-services">
  #### Services de la plateforme
</div>

| Nom de section Consul | Libellé de service                | Remarques                                                                   |
| --------------------- | --------------------------------- | --------------------------------------------------------------------------- |
| api-gateway-registry  | api-gateway-registry              |                                                                             |
| api-registry          | api-registry                      |                                                                             |
| auth-adminapi2        | auth-adminapi2                    |                                                                             |
| auth-identity         | auth-identity                     |                                                                             |
| auth                  | auth-sts-identity, auth-adminapi2 | Cette base de données est utilisée par deux services                        |
| blob-storage          | blob-storage                      |                                                                             |
| cron-service          | cron-service                      |                                                                             |
| documentsetstorage    | documentsetstorage                |                                                                             |
| mail                  | mail                              |                                                                             |
| security-audit        | security-audit                    |                                                                             |
| storage               | storage                           | La section de la base de données est stockée dans le catalogue fileMetadata |
| workflow-facade       | workflow-facade                   |                                                                             |
| workflow-scheduler    | workflow-scheduler                |                                                                             |

<div id="vantage-services">
  #### Services Vantage
</div>

| Nom de la section Consul | Libellé de service |
| ------------------------ | ------------------ |
| catalogstorage           | catalogstorage     |
| folderimport             | folderimport       |
| interactive-jobs         | interactive-jobs   |
| mailimport               | mailimport         |
| permissions              | permissions        |
| publicapi                | publicapi          |
| reporting                | reporting          |
| secretstorage            | secretstorage      |
| skill-monitor            | skill-monitor      |
| skillinfo                | skillinfo          |
| subscriptions            | subscriptions      |
| tokenmanagement          | tokenmanagement    |
| transactions             | transactions       |
| workspace                | workspace          |

<div id="setting-up-gpu">
  ## Configurer le GPU
</div>

Vantage vous permet d’utiliser le GPU pour entraîner des Skills avec l’activité Deep Learning afin d’extraire des données à partir de documents semi-structurés.

<div id="system-requirements-for-gpu">
  ### Exigences système pour les GPU
</div>

* RAM minimale du GPU virtuel : 12 GB
* 1 CPU et 4 GB de RAM pour chaque GPU virtuel sur l’hôte (p. ex., une VM avec un seul GPU virtuel de 12 GB doit disposer d’au moins 2 CPU et de 8 GB de RAM)

<div id="virtual-gpu">
  ### GPU virtuel
</div>

Vous pouvez utiliser un GPU virtuel (vGPU) pour partitionner un GPU physique entre plusieurs machines virtuelles, ce qui permet d’utiliser plus efficacement les ressources Vantage.

Pour configurer un vGPU :

1. Copiez le package du pilote nVidia GRID depuis le hub d’applications nVidia vers une machine virtuelle équipée d’un GPU, puis exécutez les commandes suivantes :

```bash theme={null}
apt-get update
apt-get install dkms
dpkg -i nvidia-linux-grid-535_535.54.03_amd64.deb
```

2. Installez le GPU Operator nVidia sur le cluster Kubernetes :

   a. Placez le fichier de jeton de licence (généré dans le hub d’applications nVidia) dans le dossier `$PWD/gpu/` avant d’exécuter le conteneur d’installation de Vantage.

   b. Ajoutez le paramètre `-v $PWD/gpu:/ansible/files/gpu:ro` à la commande qui exécute le conteneur d’installation de Vantage :

```bash theme={null}
docker run -it \
-v $PWD/kube:/root/.kube \
-v $PWD/ssh/ansible:/root/.ssh/ansible \
-v "//var/run/docker.sock:/var/run/docker.sock" \
-v $PWD/inventory:/ansible/inventories/k8s/inventory \
-v $PWD/env_specific.yml:/ansible/inventories/k8s/group_vars/all/env_specific.yml \
-v $PWD/ssl:/ansible/files/ssl:ro \
-v $PWD/gpu:/ansible/files/gpu:ro \
--privileged \
registry.local/vantage/vantage-k8s:2.7.1
```

c. Ajoutez un nœud GPU au fichier d’inventaire, dans le groupe `[abbyy_workers]`. Le nom de la machine virtuelle avec le GPU doit contenir "gpu" :

```ini theme={null}
[abbyy_workers]
worker16-48-w01 ansible_host=10.10.10.27
worker16-48-w02 ansible_host=10.10.10.21
worker16-48-w03 ansible_host=10.10.10.20
worker2-12-a40-gpu01 ansible_host=10.10.10.60
```

d. Ajoutez un nœud au cluster en exécutant le playbook suivant :

```bash theme={null}
chmod 600 /root/.ssh/ansible
ansible-playbook -i inventories/k8s -v playbooks/4-Kubernetes-k8s.yml
```

3. Configurez le vGPU en exécutant le playbook suivant :

```bash theme={null}
ansible-playbook -i inventories/k8s -v playbooks/setup-gpu-node.yml
```

<div id="gpu-passthrough">
  ### Transfert direct du GPU
</div>

Vous pouvez configurer le transfert direct du GPU, qui permet à une machine virtuelle d’accéder directement à votre GPU.

Pour configurer le transfert direct du GPU :

1. Exécutez le conteneur d’installation de Vantage :

```bash theme={null}
docker run -it \
-v $PWD/kube:/root/.kube \
-v $PWD/ssh/ansible:/root/.ssh/ansible \
-v "//var/run/docker.sock:/var/run/docker.sock" \
-v $PWD/inventory:/ansible/inventories/k8s/inventory \
-v $PWD/env_specific.yml:/ansible/inventories/k8s/group_vars/all/env_specific.yml \
-v $PWD/ssl:/ansible/files/ssl:ro \
--privileged \
registry.local/vantage/vantage-k8s:2.7.1
```

2. Ajoutez un nœud GPU (p. ex., worker2-12-a40-gpu01) au fichier d’inventaire, dans le groupe `[abbyy_workers]` :

```ini theme={null}
[abbyy_workers]
worker16-48-w01 ansible_host=10.10.10.27
worker16-48-w02 ansible_host=10.10.10.21
worker16-48-w03 ansible_host=10.10.10.20
worker2-12-a40-gpu01 ansible_host=10.10.10.60
```

3. Exécutez le playbook :

```bash theme={null}
ansible-playbook -i inventories/k8s -v playbooks/4-Kubernetes-k8s.yml
```

4. Installez le chart Helm du GPU operator :

```bash theme={null}
helm upgrade --install gpu-operator ansible/files/helm/charts/gpu-operator --create-namespace --debug -n gpu-operator
```

5. Ajoutez un taint à un nœud :

```bash theme={null}
kubectl taint nodes worker2-12-a40-gpu01 nvidia.com/gpu:NoSchedule
```

<div id="testing-and-deploying-gpu">
  ### Test et déploiement du GPU
</div>

Pour tester l’installation de GPU Operator en modes vGPU et GPU passthrough :

1. Exécutez cette commande :

```bash theme={null}
kubectl apply -f filename
```

2. Créez un fichier YAML avec le contenu suivant, puis appliquez-le :

```yaml theme={null}
apiVersion: v1
kind: Pod
metadata:
  name: gpu-pod
  namespace: gpu-operator
spec:
  restartPolicy: Never
  containers:
    - name: cuda-container
      image: nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda10.2
      resources:
        limits:
          nvidia.com/gpu: 1 # demande 1 GPU
  tolerations:
    - key: nvidia.com/gpu
      operator: Exists
      effect: NoSchedule
    - key: k8s.abbyy.com/techcore
      effect: NoSchedule
      value: "true"
```

3. Consultez le log du pod. Vous devriez voir une réponse contenant `Test PASSED` :

```bash theme={null}
kubectl -n gpu-operator logs gpu-pod
```

Résultat attendu :

```
[Vector addition of 50000 elements]
Copy input data from the host memory to the CUDA device
CUDA kernel launch with 196 blocks of 256 threads
Copy output data from the CUDA device to the host memory
Test PASSED
Done
```

Pour déployer le worker GPU :

1. Ajoutez les paramètres suivants au fichier `env_specific.yml` :

```yaml theme={null}
techcore:
  use_gpu_workers: true
  use_nn_extraction_training_workers: true
```

2. Effectuez l’une des opérations suivantes :
   * Si Vantage est déjà installé, exécutez le playbook suivant pour déployer des workers GPU :

```bash theme={null}
ansible-playbook -i inventories/k8s -v playbooks/11-DeployWorkers-k8s.yml
```

* Si Vantage n’est pas encore installé, les workers GPU seront déployés lors de l’installation.

<div id="setting-up-a-manual-review-inactivity-timeout">
  ## Configuration d’un délai d’inactivité pour la relecture manuelle
</div>

Lors de la relecture manuelle, si l’opérateur n’effectue aucune action pendant 15 minutes sur une tâche ouverte, un délai d’expiration est déclenché. L’Administrateur système peut modifier, à l’aide de Consul, la durée d’inactivité requise avant qu’un délai d’expiration ne soit déclenché.

Pour configurer le délai d’expiration :

1. Accédez à l’interface web de Consul en exécutant :

```bash theme={null}
kubectl port-forward -n abbyy-infrastructure service/consul-ui 8500:80
```

Accédez ensuite à `http://localhost:8500/ui/dc1/kv/secret/`.

2. Utilisez l’onglet **Key/Value** pour sélectionner l’environnement Vantage approprié.
3. Modifiez les valeurs des clés suivantes :

| Clé                                                                                     | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| --------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `secret/abbyy-vantage/vantage/verification/interactiveJobsOptions/popTimeout`           | Durée minimale d’inactivité d’un utilisateur avant qu’une tâche ne soit renvoyée dans la file d’attente des tâches interactives. Toute action interactive (mouvement de la souris, saisie au clavier, traitement d’un patch, etc.) réinitialise le compte à rebours. Par défaut : `00:15:00` (15 minutes)                                                                                                                                                                              |
| `secret/abbyy-vantage/vantage/verification/interactiveJobsOptions/processingPopTimeout` | Durée minimale d’inactivité de l’utilisateur au-delà de laquelle la tâche est renvoyée dans la file d’attente en cas d’opérations de longue durée (application d’une compétence, passage d’une page à l’autre, etc.). Lorsqu’une opération de longue durée démarre, cette valeur est définie sur la période d’inactivité maximale autorisée. Lorsque l’opération se termine, la période d’inactivité est réinitialisée à la valeur `popTimeout`. Par défaut : `1.00:00:00` (24 heures) |

4. Cliquez sur **Save**.
5. Redémarrez les services verification et manualverification :

```bash theme={null}
kubectl -n abbyy-vantage rollout restart $(kubectl -n abbyy-vantage get deployments -l app.kubernetes.io/component=verification -o name)
```

```bash theme={null}
kubectl -n abbyy-vantage rollout restart $(kubectl -n abbyy-vantage get deployments -l app.kubernetes.io/component=manualverification -o name)
```

<div id="updating-the-ssl-certificate">
  ## Mise à jour du certificat SSL
</div>

Lorsque le certificat SSL arrive à expiration, vous devrez le remplacer par le nouveau certificat.

<div id="using-lens">
  ### Utilisation de Lens
</div>

1. Accédez à **Config > Secrets** et recherchez tous les secrets nommés `platform-wildcard`.
2. Pour chaque secret, repérez la sous-section **Data**, cliquez sur l’icône **Show**, puis mettez les valeurs à jour :
   * Saisissez la valeur du nouveau certificat dans le champ `tls.crt`
   * Saisissez la valeur de sa clé dans le champ `tls.key`

<Note>
  Le certificat et la clé doivent être des fichiers PEM dont le contenu ASCII est encodé en base64 (PKCS#8). Ils doivent commencer par `-----BEGIN CERTIFICATE-----` pour le certificat et par `-----BEGIN PRIVATE KEY-----` pour la clé.
</Note>

3. Cliquez sur **Save**.

<div id="using-linux-command-line">
  ### Utilisation de la ligne de commande Linux
</div>

1. Assurez-vous d’avoir accès au cluster Kubernetes :

```bash theme={null}
kubectl get nodes
```

2. Placez le certificat et la clé au format PEM dans le répertoire courant : `cert.pem`, `key.pem`.

Convertissez votre fichier CRT au format PEM si nécessaire :

```
-----BEGIN CERTIFICATE-----
[your certificate]
-----END CERTIFICATE-----
```

```
-----BEGIN PRIVATE KEY-----
[your key]
-----END PRIVATE KEY-----
```

3. Exécutez les commandes suivantes :

```bash theme={null}
for i in `kubectl get secret --field-selector metadata.name=platform-wildcard -o custom-columns=:metadata.namespace -A --no-headers 2>/dev/null`; do kubectl patch secret platform-wildcard -p "{\"data\":{\"tls.key\":\"$(base64 < "./key.pem" | tr -d '\n')\", \"tls.crt\":\"$(base64 < "./cert.pem" | tr -d '\n')\"}}" -n $i; done
```

```bash theme={null}
kubectl rollout restart deployment -n abbyy-infrastructure $(kubectl get deployment -n abbyy-infrastructure -o custom-columns=NAME:metadata.name --no-headers 2>/dev/null | grep ingress-nginx-controller)
```
