Vantage et l’état de toute application ArgoCD en échec avant de contacter votre ABBYY account team :
opérateur et CRD
Forcer une nouvelle tentative après correction d’un problème de manque de ressources
Vantage elle-même ; les changements d’état en dehors de la ressource (autorisations Key Vault, stratégies réseau, services externes) ne déclenchent pas de réconciliation. Les ressources Vantage sont mutables, mais pour relancer l’installation de Vantage, la ressource doit être annotée avec vantage.abbyy.com/reprocess (n’importe quelle valeur).
Correction. Annotez la ressource Vantage avec vantage.abbyy.com/reprocess (n’importe quelle valeur) pour forcer une nouvelle réconciliation depuis la phase de prévérification :
Ressource Vantage bloquée sur Progressing
kubectl describe vantages.vantage.abbyy.com $release_name -n $install_namespace affiche Progressing=True pendant une période prolongée, et Ready ne passe jamais à True.
Diagnostic. Inspectez status.degradationReasons[] dans la ressource ; l’opérateur y signale le composant défaillant. Vérifiez ensuite l’application ArgoCD correspondante :
Vantage avec vantage.abbyy.com/reprocess pour relancer l’installation (Forcer une nouvelle tentative).
L’opérateur ne prend jamais en compte une nouvelle ressource Vantage
Vantage et kubectl get vantages l’affiche, mais l’opérateur n’indique jamais aucun statut.
Diagnostic. Vérifiez que l’opérateur est en cours d’exécution et effectue la réconciliation :
Vantage à l’échelle du cluster ; le chart n’expose aucune valeur permettant de restreindre les namespaces qu’il surveille. Si l’opérateur s’exécute, mais que les logs ne montrent aucune tentative de réconciliation pour votre ressource, vérifiez que la CRD utilise la version attendue par l’opérateur (vantage.abbyy.com/v1alpha1) et qu’une seule instance de l’opérateur est installée dans le cluster. Pour voir les valeurs réellement acceptées par le chart, exécutez helm show values $charts_uri/vantage-operator --version $operator_version (Valeurs du chart Helm).
L’application de la CRD échoue avec une erreur de validation
kubectl apply rejette la ressource Vantage avec un message de validation CEL.
Diagnostic. Le message d’erreur provient des règles CEL de la CRD. Les causes les plus fréquentes sont un bloc ociMigration avec enabled: true mais sans destination, ou un bloc techcore avec keepPreviousVersion: true mais sans previousVersion.
Correctif. Renseignez le champ indiqué dans le message de validation. Voir l’API reference pour l’ensemble des règles de validation.
Migration OCI
Le job de migration OCI ne démarre jamais
Vantage reste à l’état Progressing ; aucun job nommé $release_name-oci-migration n’existe dans votre namespace d’installation.
Diagnostic. Vérifiez la prévérification de l’opérateur dans les logs de l’opérateur, ainsi que les motifs de dégradation de la ressource. Le job n’est créé qu’une fois la prévérification validée.
Correction. Résolvez la prévérification qui échoue. Lors de la prévérification, la configuration est validée, y compris la configuration des secrets ; commencez donc par vérifier que chaque alias Obligatoire existe dans votre fournisseur de secrets (Secrets and Key Vault).
La tâche de migration OCI s’exécute mais échoue
kubectl -n $install_namespace get jobs affiche la tâche de migration, mais elle n’atteint pas l’état Complete.
Diagnostic. Inspectez les logs de la tâche :
credentialsRef.name ou le nom d’utilisateur/mot de passe de chaque entrée vantage.ociMigration.sources[]), soit il n’a pas pu envoyer vers la destination (vérifiez les identifiants de vantage.ociMigration.destination et le RBAC de l’identité de charge de travail si vous utilisez Azure Workload Identity). Si le pod du job ne parvient jamais à récupérer son image, voir Pods bloqués dans ImagePullBackOff.
Téléchargement d’images
Pods bloqués dans ImagePullBackOff
ImagePullBackOff ou ErrImagePull, et kubectl describe pod affiche une erreur unauthorized: authentication required provenant de votre registry.
Diagnostic. Recherchez les pods en échec et l’erreur du registry :
- Pods de l’opérateur : mettez à niveau la release
vantage-operatoravec--set "manager.imagePullSecrets[0].name=my-pull-secret". - Job de migration OCI : exécutez le job avec un ServiceAccount associé au secret de pull (
vantage.ociMigration.serviceAccountName=my-service-account), ou référencez le secret dans l’entrée source (vantage.ociMigration.sources[0].credentialsRef.name=my-pull-secret). - Charges de travail Vantage : ajoutez le secret de pull aux
imagePullSecretsdu ServiceAccount nommé parvantage.serviceAccountName. Si le pod en échec signale un autre ServiceAccount, y comprisdefault, accordez l’autorisation de pull à ce ServiceAccount ou configurez le composant pour qu’il utilise le ServiceAccount Vantage prévu. - Sur AKS : au lieu d’utiliser des secrets de pull, accordez
AcrPullsur le registre à l’identité du kubelet du cluster.
Secrets
Les pods ne démarrent pas avec MountVolume.SetUp failed for volume "secrets-store"
- L’identité sélectionnée par
vantage.secrets.azure.identityModene dispose pas d’un accès en lecture au secret ou au certificat nommé. - Un nom d’objet Key Vault ne correspond pas à l’alias attendu par Vantage, et aucune mise en correspondance
objectsn’a été fournie. - Le provider Azure du pilote CSI n’est pas installé.
get pour chaque alias répertorié dans Secrets et Key Vault. Si les noms de vos objets Key Vault diffèrent des alias, fournissez une mise en correspondance objects dans vantage.secrets.azure. Voir Modes d’identité pour savoir quelle identité est utilisée dans chaque mode.
Les secrets TLS associés sont manquants
authSigningTlsCrt, authSigningTlsKey, authDeactivatedTlsCrt, authDeactivatedTlsKey. Voir Secrets and Key Vault → Alias de certificats.
Échec du provider Secret Kubernetes lors de la prévérification
forbidden.
Diagnostic. L’opérateur lit les Secrets natifs dans $install_namespace pendant la prévérification. Le Secret indiqué peut ne pas exister, une mise en correspondance objects peut pointer vers un nom incorrect, le Secret peut ne pas contenir la clé de données attendue, ou le RoleBinding créé par le chart peut ne pas faire référence au ServiceAccount de l’opérateur installé.
Vérifiez les autorisations de l’opérateur sur l’un des Secrets concernés :
vantage.secrets.kubernetes.objects à l’inventaire des alias de secret. Si l’autorisation échoue, vérifiez que les valeurs operator.namespace et operator.controllerManagerServiceAccount du chart Vantage correspondent à l’opérateur installé. Si un contrôleur de secrets externe crée les Secrets, attendez qu’il signale une synchronisation réussie avant de forcer un nouveau reconcile de l’opérateur.
Bases de données
Les charges de travail PostgreSQL indiquent que DataProvider est introuvable
DataProvider '<value>' not found.
Diagnostic. vantage.databaseProvider est sensible à la casse. Le provider runtime PostgreSQL doit être nommé exactement PostgreSQL.
Correctif. Définissez :
Postgresql et PostgreSql ne sont pas valides à l’exécution. Appliquez les valeurs corrigées et forcez une nouvelle tentative.
Le schéma PostgreSQL n’est pas à jour
postgres database schema is not up to date, ou présentent des conflits de version de migration.
Diagnostic. Plusieurs services utilisent la même base de données logique PostgreSQL. Chaque service conserve son propre historique de migration et doit utiliser une base de données distincte.
Correctif. Créez une base de données distincte pour chaque alias de base de données. Pour les charges de travail qui utilisent la clé générique Database__ConnectionString, créez des Secrets Kubernetes distincts et mettez chaque alias en correspondance avec vantage.secrets.kubernetes.objects. Voir PostgreSQL and per-service Secrets.
ArgoCD
L’application ArgoCD affiche OutOfSync après l’installation
kubectl get application -A indique que l’une des applications gérées par l’opérateur est OutOfSync, alors même que l’opérateur a par ailleurs signalé l’état Ready.
Diagnostic. Examinez le status.conditions[] de l’application :
Vantage (ou la release Helm vantage-selfhosted). Ne modifiez jamais directement l’objet ArgoCD Application sous-jacent.
Synchronisation d’ArgoCD ApplicationSet bloquée
KEDA et Prometheus
Les ressources ScaledObject ne peuvent pas créer de HPA
Ready=False ou ScaledObjectCheckFailed, et ArgoCD indique que les applications de charge de travail concernées sont dégradées.
Diagnostic. Vérifiez la version installée de KEDA ainsi que les événements ScaledObject :
Les métriques HPA affichent <unknown>
kubectl get hpa affiche <unknown> pour les métriques Vantage et les charges de travail ne se redimensionnent pas comme prévu.
Diagnostic. Les ressources ScaledObject interrogent http://prometheus-operated.observability.svc.cluster.local:9090. Le Service peut être absent, le ServiceMonitor de Vantage peut ne pas être sélectionné, ou le maillage de services peut bloquer la collecte.
Correctif. Vérifiez que le Service Prometheus existe, que ses cibles Vantage sont UP et que les valeurs du chart observability sont définies au niveau supérieur :
Installation du Skill
Les Skills sont absents après que l’installation a indiqué Ready
Vantage indique Ready et Vantage est accessible, mais les Skills attendus sont absents et aucun élément lié aux Skills n’apparaît dans ArgoCD.
Diagnostic. Les Skills sont installés par un job Kubernetes distinct qui n’est pas visible dans ArgoCD ; il n’apparaît donc jamais dans argocd app list (y compris dans la capture de diagnostic en haut de cette page). Le job peut encore être en cours d’exécution après Ready ; vous pouvez utiliser Vantage en attendant. Vérifiez le job :
Complete. Si le job a échoué, examinez ses logs pour identifier l’erreur sous-jacente et la corriger ; si l’échec persiste, capturez les logs du job ainsi que les logs de l’opérateur pour votre ABBYY account team.
Maillage de services et ingress
503 au niveau de l’ingress, trafic de l’application bloqué
https://$your_vantage_hostname renvoie 503 alors même que les pods sont indiqués comme Ready.
Diagnostic. Sur AKS avec l’ingress Istio intégré, la passerelle externe peut être défaillante ou le Secret TLS peut ne pas correspondre à ingress.tls.secretName. Avec un ingress géré par le client, il se peut que le contrôleur n’ait pas de route correspondante, que le nom ou le port du Service backend soit incorrect, ou que le certificat TLS ne soit pas prêt.
Correctif. Pour Istio, vérifiez la passerelle et le Secret TLS :
kubernetes.io/tls existe dans le namespace de la passerelle externe, avec le nom indiqué pour le chart, et que son certificat est valide pour dnsRecord.
Pour un ingress géré par le client, examinez les logs du contrôleur et l’état de la route. Vérifiez que le nom d’hôte de la route correspond à vantage.dnsRecord, que TLS est prêt et que chaque Service backend existe dans $install_namespace. Voir Configurer l’ingress et TLS.
Les redirections de connexion ou les métadonnées OIDC utilisent http://
/auth2/.well-known/openid-configuration annonce un émetteur et des points de terminaison en http://.
Diagnostic. La terminaison TLS s’effectue au niveau du contrôleur d’ingress, mais les charges de travail d’authentification ne prennent pas en compte le protocole HTTPS transmis.
Correctif. Vérifiez que l’ingress envoie X-Forwarded-Proto: https et que les conteneurs d’application pour auth-identity, auth-adminapi2, api-gateway et api-registry ont :
Les cibles de scraping Prometheus apparaissent comme DOWN pour /metrics-text
DOWN.
Diagnostic. Sur Istio, il se peut que le pod Prometheus n’ait pas de sidecar ou que les certificats de sortie d’Istio ne soient pas écrits dans /etc/prom-certs/. Sur Linkerd, une stratégie d’autorisation stricte peut bloquer les collectes en texte brut provenant d’un Prometheus non maillé.
prometheus, config-reloader, istio-proxy) et que l’annotation proxy.istio.io/config avec OUTPUT_CERTS: /etc/istio-output-certs est bien présente. Avec Linkerd, injectez le namespace observability ou configurez le ServiceMonitor et Prometheus avec les certificats client requis par votre stratégie. Consultez Monitoring avec Prometheus.
Opérations courantes
Après la mise à niveau, l’opérateur indique la nouvelle version, mais Vantage est toujours sur l’ancienne
status.installedVantageVersion reste inchangé après la mise à niveau des release Helm.
Diagnostic. Les release vantage-operator et vantage-selfhosted ne sont peut-être pas sur la même nouvelle version, ou ArgoCD est peut-être encore en train d’appliquer les modifications propres à chaque composant. Vérifiez les deux release Helm ainsi que l’état de synchronisation de l’application ArgoCD.
Correctif. Mettez les deux charts à niveau vers la même version, puis attendez que les applications ArgoCD aient terminé leur synchronisation. Si l’opérateur affiche une condition Degraded, suivez le motif de dégradation jusqu’au composant défaillant, corrigez-le, puis annotez la ressource Vantage avec vantage.abbyy.com/reprocess pour relancer la tentative (Forcer une nouvelle tentative). Voir Upgrading.
Et ensuite
Architecture
Ce que fait l’opérateur à chaque réconciliation, avec un contexte utile pour le diagnostic.
Limites connues
Les contraintes actuelles qui définissent ce qui constitue réellement un bogue… ou non.
