Helm
Référence complète du chart Helm Scrydon — une installation condensée ainsi que toutes les valeurs exposées par le chart, avec leur rôle, leur justification et leur configuration.
Voici la référence de configuration du chart Helm Scrydon. Ce document présente une installation condensée, puis détaille chaque groupe de valeurs exposé par le chart — ce que fait chaque clé, pourquoi la modifier et comment procéder. Si vous souhaitez simplement démarrer un cluster le plus rapidement possible, commencez par la page Localisation (On-Premise, Azure (AKS), Air-Gapped) et revenez ici pour les options.
Pour un cluster air-gapped (sans internet sortant), consultez le Déploiement Air-Gapped — le même chart est livré dans un bundle Zarf.
Fonctionnement de la configuration
Trois couches, de la priorité la plus basse à la plus haute :
- Valeurs par défaut du chart — le chart fournit des valeurs de production sensées pour tout. La liste de référence est le
values.yamldu chart lui-même (voir Inspecter le chart localement). - Votre
values.customer.yaml— le fichier que vous passez avec-f. Ne surchargez que ce dont vous avez besoin ; tout le reste hérite de la valeur par défaut. - Flags
--set— priorité maximale, utile pour injecter des secrets au moment de l'installation depuis un gestionnaire de secrets.
helm install scrydon oci://scrydonops.azurecr.io/scrydon/charts/scrydon \
--version <version> -n scrydon-platform \
-f values.customer.yaml \
--set apiTable.secrets.STARROCKS_PASSWORD="$(vault kv get -field=password kv/scrydon/starrocks)"Les secrets vivent dans votre fichier de valeurs.
values.customer.yamlethelm get values <release>reproduisent toutes les valeurs fournies par l'utilisateur. Ne placez pas ce fichier dans un dépôt de code source, ou gérez-le via Sealed Secrets / SOPS / External Secrets Operator, et restreignez le RBAC du cluster sur le Secret de la release.
Inspecter le chart localement
Le chart est un artefact OCI dans scrydonops.azurecr.io — il n'existe pas de miroir Git public. Téléchargez-le pour lire chaque template et le values.yaml par défaut complet :
helm pull oci://scrydonops.azurecr.io/scrydon/charts/scrydon \
--version <version> --untar
less scrydon/values.yaml # la valeur par défaut de référence pour chaque clé ci-dessousInstallation rapide
Le minimum pour obtenir un cluster opérationnel. Chaque étape est développée avec des notes spécifiques à l'environnement sur les pages Localisation.
# 1. Se connecter au registre (nom d'utilisateur = nom du token ACR fourni par votre équipe)
helm registry login scrydonops.azurecr.io --username <acr-token-name>
# 2. Créer le namespace de la release + un secret d'extraction d'image dans ce namespace.
# Le chart cible par défaut scrydon-platform pour chaque service ; la séparation en
# namespaces est optionnelle via namespaces.* (créer le secret dans chaque namespace ciblé).
kubectl create namespace scrydon-platform 2>/dev/null || true
kubectl create secret docker-registry scrydon-registry --namespace scrydon-platform \
--docker-server=scrydonops.azurecr.io \
--docker-username=<acr-token-name> --docker-password=<acr-token-password># 3. values.customer.yaml — l'installation minimale complète.
global:
imageRegistry: scrydonops.azurecr.io # récupérer les images depuis l'ACR connecté
imagePullSecrets:
- name: scrydon-registry
storageClass: <your-storage-class> # nom de classe cloud par défaut, ou votre provisionneur on-prem
routing:
host: app.example.com # le nom d'hôte vers lequel pointe votre DNS
ingress:
tls:
enabled: true # le navigateur accède à Scrydon via HTTPS — voir Ingress ci-dessous
infra:
db:
credentials:
password: REPLACE-WITH-DB-PASSWORD # openssl rand -hex 16
auth:
secrets:
AUTH_SECRET: REPLACE-WITH-AUTH-SECRET # openssl rand -hex 32
apiTable:
secrets:
STARROCKS_PASSWORD: REPLACE-WITH-STARROCKS-PW # openssl rand -hex 24# 4. Installer
helm install scrydon oci://scrydonops.azurecr.io/scrydon/charts/scrydon \
--version <version> --namespace scrydon-platform \
-f values.customer.yaml --waitLancer l'assistant de configuration
Ouvrez https://app.example.com/platform/setup (ou /setup si vous avez monté platform à la racine). Cinq étapes :
| # | Étape | Ce qu'elle fait |
|---|---|---|
| 1 | Licence | Collez ou déposez le bundle JSON { jwt, publicKey }. L'assistant vérifie la signature JWT par rapport à la clé publique incluse, contrôle l'expiration et affiche le niveau / CPU / RAM / VRAM. Stocké dans platform_config à l'étape suivante. Le format du bundle est affiché dans le Vérificateur de licence. Les fichiers .jwt seuls sont rejetés — la clé publique doit accompagner le JWT. |
| 2 | Compte administrateur | Créez le premier administrateur (e-mail + mot de passe). À la validation, la licence est persistée et l'utilisateur administrateur créé. |
| 3 | Organisation | Nommez votre organisation — le tenant racine. |
| 4 | Configurez la livraison (Resend, SMTP, ou ignorer — configurable ultérieurement sous Paramètres → Plateforme → E-mail). Sans fournisseur réel, les nouvelles inscriptions ignorent la vérification par e-mail ; une fois un fournisseur configuré, elles reçoivent un OTP. | |
| 5 | Terminer | Marque setup_completed = true et redirige vers l'accueil de la plateforme. |
Pré-injecter la licence
Évitez l'étape licence de l'assistant en injectant le bundle lors de la première installation. Les valeurs sont lues une seule fois pour initialiser la base de données ; ensuite la licence vit dans platform_config et est gérée depuis l'interface :
auth:
secrets:
AUTH_SECRET: REPLACE-WITH-AUTH-SECRET
LICENSE: | # le champ `jwt` du bundle (une ligne)
eyJhbGciOiJSUzI1NiIs...
LICENSE_PUBLIC_KEY: | # le champ `publicKey` du bundle (PEM)
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFA...
-----END PUBLIC KEY-----Lorsque les deux valeurs sont définies, l'étape Licence de l'assistant s'ouvre déjà vérifiée.
Référence de configuration
Chaque groupe ci-dessous correspond à une clé de premier niveau dans le values.yaml du chart, dans l'ordre du fichier. Les valeurs par défaut indiquées sont celles du chart ; ne surchargez que ce dont vous avez besoin.
global — registre, images, stockage
Paramètres à l'échelle du cluster, hérités par chaque service.
| Clé | Défaut | Rôle / justification |
|---|---|---|
global.imageRegistry | "" | Racine du registre d'images de conteneurs (ex. scrydonops.azurecr.io, un Harbor interne, un host:port de homelab). Vide génère des références non préfixées scrydon/<name>:<tag>. À définir par environnement. |
global.imagePullSecrets | [] | Noms des secrets d'extraction ajoutés à chaque pod. Indiquer le secret créé à l'étape 2. |
global.imagePullPolicy | Always | Politique standard de récupération Kubernetes. |
global.storageClass | "" | Le provisionneur pour chaque PVC. Pas de valeur cloud par défaut — définir la classe de votre cloud (managed-csi, gp3, standard-rwo) ou votre provisionneur on-prem (ceph-rbd, vsphere-csi, local-path). |
global.nfs.enabled | false | Utiliser des PV statiques NFS à la place du provisionnement dynamique. Pour les clusters homelab / NFS — définir aussi server + basePath. |
global.azure.enabled | false | Mode Azure Marketplace : les images sont résolues depuis MCR via global.azure.images.* et les composants tiers du data-plane (StarRocks/SeaweedFS) sont désactivés automatiquement. Défini par le package Marketplace, pas manuellement. |
global:
imageRegistry: scrydonops.azurecr.io
imagePullSecrets:
- name: scrydon-registry
storageClass: managed-csinamespaces — placement des charges de travail
Chaque service cible par défaut scrydon-platform. Surchargez par service pour un isolement multi-namespace ; le chart aligne automatiquement les politiques ACL Dapr et le RBAC de lecture des secrets.
namespaces:
infra: scrydon-infra
platform: scrydon-platform
agentic: scrydon-agentic
analytics: scrydon-platform
cortex: scrydon-platformingress — exposition et schéma TLS
| Clé | Défaut | Rôle / justification |
|---|---|---|
ingress.enabled | true | Générer les objets Ingress. Désactivez si vous placez votre propre ingress/gateway devant le cluster. |
ingress.className | traefik | Classe Ingress. N'importe quel contrôleur fonctionne. |
ingress.tls.enabled | true | Critique. Signifie « Scrydon est-il accessible via HTTPS par le navigateur ? » — pilote le schéma des URL publiques, les origines CORS, les cookies sécurisés et l'origine de callback Better-Auth. Par défaut true (sécurisé par défaut), y compris derrière un équilibreur de charge qui termine le TLS (App Gateway / ALB) et transmet du HTTP brut à Traefik — le navigateur reste en HTTPS, donc laisser true. Mettre à false uniquement pour les déploiements HTTP seul (dev local / smoke kind). Mettre false sur une installation frontée HTTPS casse silencieusement la connexion (Mixed Content + origine de callback incompatible). |
ingress.annotations | {} | Annotations spécifiques au contrôleur (émetteur cert-manager, etc.). |
ingress.middleware.forceHttps.enabled | true | Middleware Traefik de redirection vers HTTPS. |
routing — sous-chemin vs sous-domaine
Choisit comment les applications sont exposées. Discussion complète : Modes de routage.
| Clé | Défaut | Rôle / justification |
|---|---|---|
routing.mode | subpath | subpath place toutes les applications sous un même nom d'hôte avec un préfixe de chemin (un enregistrement DNS, un certificat — recommandé pour l'auto-hébergement). subdomain place chaque application sur son propre nom d'hôte (DNS wildcard + certificat — utilisé par notre SaaS). |
routing.host | — | Le nom d'hôte unique vers lequel pointe votre DNS, ex. app.example.com. |
routing.paths.* | /cortex, /agentic, … | Préfixes de chemin par application en mode sous-chemin. Mettre une valeur à "" pour monter cette application à la racine. Les applications consomment le préfixe résolu via BASE_PATH. |
routing:
mode: subpath
host: app.example.com
paths:
cortex: /scrydon/cortex # personnaliser les préfixes si nécessaire
platform: /scrydon/platformdapr — maillage de services et identité
Les appels de service à service utilisent Dapr avec mTLS ; les politiques ACL du chart sont basées sur le domaine de confiance SPIFFE.
| Clé | Défaut | Rôle / justification |
|---|---|---|
dapr.enabled | true | Injection de sidecar + composants crypto + comptes de service. |
dapr.installControlPlane | true | Installer le plan de contrôle Dapr comme sous-chart dans le namespace de la release. Mettre false si Dapr est déjà installé à l'échelle du cluster. |
dapr.controlPlaneNamespace | "" | Quand installControlPlane: false et que Dapr est ailleurs (ex. dapr-system), pointer le binding de lecture des secrets du chart sur ce namespace. |
dapr.trustDomain | scrydon | Domaine de confiance SPIFFE. Toutes les ACL générées en dépendent. Ne surchargez que pour correspondre à un CA Dapr existant — mais cela désactive l'isolation d'identité inter-clusters. |
dapr.global.tag | 1.17.7 | Tag d'image du plan de contrôle Dapr + sidecar. Éviter 1.17.3–1.17.6 — une régression d'identité de charge de travail émet des certificats sous spiffe://public/… et provoque des 403 sur chaque appel inter-services. Doit être synchronisé avec la version de la dépendance dapr dans Chart.yaml. |
dapr.crypto.masterKey | "" | Clé maître AES-256. Générée automatiquement à la première installation et préservée lors des mises à jour. BYO : openssl rand -base64 32. |
dapr.secretStore.enabled | true | Créer le composant Dapr SecretStore adossé aux secrets Kubernetes. |
Apporter votre propre Dapr requiert ≥ 1.17.7, le domaine de confiance
scrydonsurdapr-sentry(ou faire correspondre viadapr.trustDomain), et un injecteur de sidecar opérationnel. Voir Installations Dapr existantes.
Base de données — Postgres intégré ou BYO
infra.db contrôle le Postgres intégré (pgvector). Pour une instance externe/managée, la recette complète — notes par fournisseur, clés infra.db.external.*, pré-création des bases — est sur BYO Database.
| Clé | Défaut | Rôle / justification |
|---|---|---|
infra.db.enabled | true | Exécuter le Postgres intégré dans le cluster. Mettre false pour utiliser une instance managée via infra.db.external.*. |
infra.db.credentials.password | postgres | À modifier. openssl rand -hex 16. |
infra.db.storage.size | 5Gi | Taille du PVC pour la base intégrée. |
infra.db.tls.enabled | true | TLS intra-cluster (certificat auto-signé automatique, ISO 27001 A.8.24). Laisser activé pour la base intégrée ; les utilisateurs Postgres managé désactivent et utilisent le TLS du fournisseur. |
infra.db.backup.enabled | false | CronJob pg_dump optionnel (A.8.13). Définir schedule, retentionDays, databases. Les utilisateurs Postgres managé utilisent la sauvegarde du fournisseur. |
infra.db.external.existingSecrets.* | "" | Mode BYO A (recommandé) — noms de Secrets par application contenant DATABASE_URL (auth/agentic), DATABASE_URL_ANALYTICS, etc. |
infra.db.external.<app>Url | "" | Mode BYO B — DSN inline (apparaît dans helm get values). sslMode ajouté comme ?sslmode=. |
# Intégré (défaut) — définir juste un mot de passe fort :
infra:
db:
credentials:
password: REPLACE-WITH-DB-PASSWORD
# Postgres managé BYO :
infra:
db:
enabled: false
external:
existingSecrets:
auth: scrydon-auth-db
agentic: scrydon-agentic-db
sslMode: requireStarRocks — Tables managées (OLAP)
Pod unique allin1-ubuntu. Alimente l'interface Tables et le fallback d'inférence de schéma agentique. Associé à apiTable.
| Clé | Défaut | Rôle / justification |
|---|---|---|
infra.starrocks.enabled | true | Exécuter StarRocks intégré. Mettre false (avec apiTable.enabled: false, ou pointer apiTable.starrocks.host vers un cluster externe) pour l'ignorer. Désactivé automatiquement en mode Azure. |
infra.starrocks.storage.size | 20Gi | Taille du PVC. |
infra.starrocks.resources | 2–8Gi / 0.5–2 CPU | Le composant data-plane intégré le plus lourd — voir Réduction. |
L'image intégrée livre root sans mot de passe. Définissez apiTable.secrets.STARROCKS_PASSWORD dans les valeurs, puis appliquez-le dans StarRocks après l'installation — voir Identifiants StarRocks. Pour une production multi-AZ, passez à l'starrocks-kubernetes-operator (séparation FE/BE) et pointez apiTable.starrocks.host vers son Service FE.
SeaweedFS — stockage objet
Stockage compatible S3 en pod unique pour les téléversements.
| Clé | Défaut | Rôle / justification |
|---|---|---|
infra.seaweedfs.enabled | true | Exécuter le stockage intégré. Désactivez si vous placez un S3 managé devant la plateforme (AWS S3, Azure Blob via API S3, GCS, MinIO) configuré sous https://<host>/settings/platform/storage. Désactivé automatiquement en mode Azure. |
infra.seaweedfs.s3.existingSecret | "" | Vide → le chart gère des clés d'accès/secret aléatoires (préservées lors des mises à jour, conservées à la désinstallation). Indiquer un Secret pré-créé avec accessKey/secretKey pour BYO. |
infra.seaweedfs.storage.size | 20Gi | Taille du PVC. |
Services applicatifs
Les applications produit — auth (api-platform), platform, cortex, analytics, apiOntology, apiTable, agentic (app + realtime). Chaque bloc partage une forme commune :
| Clé (par application) | Rôle / justification |
|---|---|
<app>.enabled | Générer l'application. La plupart restent activées ; analytics.enabled: false supprime l'interface analytique + marimo (charge de travail optionnelle la plus lourde). |
<app>.replicas | Échelle horizontale. |
<app>.image.tag | Par défaut Chart.AppVersion — laisser vide pour suivre le chart. |
<app>.resources | Requêtes/limites. Les valeurs par défaut sont ajustées d'après les incidents OOM en production (limite agentic : 4Gi, applications SSR : 2Gi) ; ne réduire que sur des clusters d'évaluation. |
<app>.ingress.* | Nom d'hôte par application (mode sous-domaine uniquement — ignoré en sous-chemin). |
<app>.corsOrigins | Origines navigateur autorisées. |
<app>.secrets | Secrets par application (voir ci-dessous). |
<app>.dapr.appApiToken | Token sidecar-vers-application par application, unique par application. Vide → généré automatiquement et préservé lors des mises à jour. BYO : openssl rand -base64 32. |
Clés notables spécifiques aux applications :
auth:
secrets:
AUTH_SECRET: REPLACE-WITH-AUTH-SECRET # signature de session — openssl rand -hex 32
auditLog:
enabled: true # transfert SIEM + crons de rétention (ADR 2026-04-16)
chain:
enabled: false # chaîne de hachage infalsifiable — optionnel, coût de signature
analytics:
marimoSidecar:
enabled: true # éditeur de notebooks ; désactiver pour réduire ~2Gi
secrets:
MARIMO_EDIT_TOKEN: ""
apiTable:
starrocks:
host: "" # vide → Service FE intégré ; indiquer pour StarRocks externe
user: root
secrets:
STARROCKS_PASSWORD: REPLACE-WITH-STARROCKS-PW
agentic:
realtime:
ingress:
annotations: # cookie sticky pour la route WebSocket
traefik.ingress.kubernetes.io/service.sticky.cookie: "true"
passkey:
rpId: app.example.com # DOIT correspondre à routing.host sinon l'enregistrement passkey échoue
origin: https://app.example.com
auth.secrets.SERVICE_ADMIN_TOKENest déprécié — la production utilise Dapr mTLS (SPIFFE). Ne le définir que pour le développement local sans sidecars. Quand les clés avec underscore sont interdites (paramètres protégés Azure Marketplace), utiliserauth.authSecretà la place deauth.secrets.AUTH_SECRET.
opa — point de décision d'autorisation
Chaque décision d'autorisation sur les espaces de travail, workflows et ontologies est évaluée par OPA.
| Clé | Défaut | Rôle / justification |
|---|---|---|
opa.enabled | true | Garder activé. Désactivé (et sans opa.url), ces décisions échouent en mode fermé. |
opa.url | "" | Vide → DNS du Service intra-cluster. Surcharger pour un OPA externe ou un Service non standard. |
opa.logLevel | error | Seuls debug/info/error sont valides — warn fait crashlooper le pod. |
opa.decisionLogForwarder.enabled | false | POST chaque décision vers l'endpoint d'audit d'api-platform (#967). La journalisation console reste active quoi qu'il arrive. |
license — posture de validation
| Clé | Défaut | Rôle / justification |
|---|---|---|
license.enabled | true | Flux de licence en ligne — contacte license.scrydon.com toutes les 24h. Les overlays air-gapped mettent false / mode: offline. |
license.mode | online | online contacte le serveur ; offline vérifie uniquement le JWT local. |
license.gracePeriod | 2592000 | Secondes de grâce en cas d'échec du contact (30 jours). |
license.publicKeys | {} | Clés publiques supplémentaires pour la rotation de clé sans interruption. |
auth.secrets.LICENSE_PUBLIC_KEY doit être défini chaque fois que license.enabled: true pour qu'api-platform puisse vérifier les signatures JWT. Voir Licences.
packSources — distribution de packs gérée par le chart
| Clé | Défaut | Rôle / justification |
|---|---|---|
packSources.enabled | false | Initialiser les sources de packs depuis les valeurs du chart à chaque mise à jour. |
packSources.sources[] | [] | Liste d'entrées (organization, name, kind, url, …). Les lignes gérées par Helm sont en lecture seule dans l'interface. Les identifiants sont référencés par authSecretRef et provisionnés séparément. Voir Sources de packs. |
Ordonnancement des pods
Les nodeSelector, tolerations et affinity à l'échelle du chart s'appliquent à chaque Deployment, StatefulSet et Job de migration — les pods peuvent ainsi atterrir sur des nœuds dédiés ou marqués avec des teints. Les surcharges par composant ne sont pas exposées.
tolerations:
- { key: workload, operator: Equal, value: scrydon, effect: NoSchedule }
nodeSelector:
workload: scrydon
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- { key: node-role.kubernetes.io/scrydon, operator: Exists }Réduction pour les installations à ressources limitées
Les valeurs par défaut présupposent un cluster de forme production (≥ 8 vCPU / ≥ 32 Gio sur les nœuds). Sur des clusters d'évaluation (4 vCPU / 16 Gio), désactivez les composants optionnels les plus lourds :
infra:
starrocks:
enabled: false # ~2–8 Gio RAM, 20 Gio PVC — seules les Tables managées + l'inférence de schéma agentique sont affectées
apiTable:
enabled: false
analytics:
enabled: false # supprime l'interface analytique + le sidecar marimo (~2 Gio)Recettes de configuration courantes
Personnaliser les chemins de routage
Montez les applications sous des préfixes différents (ex. tout sous /scrydon/...) via routing.paths.* — voir le tableau routing ci-dessus et Modes de routage.
Installations Dapr existantes
Si le cluster exécute déjà Dapr, mettez dapr.installControlPlane: false pour que le chart ne tente pas de le gérer, et pointez dapr.controlPlaneNamespace vers l'emplacement de Dapr :
dapr:
installControlPlane: false
controlPlaneNamespace: dapr-systemVotre Dapr doit satisfaire trois prérequis, faute de quoi la connexion fonctionne mais la création de compte / les appels inter-services échouent avec PermissionDenied :
| Prérequis | Pourquoi |
|---|---|
Dapr ≥ 1.17.7 (hors 1.17.3–1.17.6) | 1.17.3 émettait des SPIFFE ID de charge de travail dans le domaine de confiance public, cassant toutes les ACL. |
Domaine de confiance scrydon sur dapr-sentry (ou définir dapr.trustDomain en conséquence) | Toutes les ACL en dépendent. |
| Injecteur de sidecar opérationnel | Sans lui, les pods démarrent 1/1 (sans daprd) et l'invocation de service court-circuite. |
kubectl -n <dapr-ns> get deploy dapr-sentry \
-o jsonpath='{.spec.template.spec.containers[0].image}' # attendre sentry:1.17.7+Ingress avancé : derrière un équilibreur de charge qui termine le TLS
Les configurations App Gateway / ALB / GCP LB / F5 nécessitent un ajustement du contrôleur Traefik (trustedIPs, externalTrafficPolicy: Local, la règle de schéma public ingress.tls.enabled, ingress privé, dépannage 502). Guide complet : TLS Offloading.
Identifiants StarRocks
Le StarRocks intégré est livré avec root sans mot de passe. Après helm install, appliquez le mot de passe défini dans apiTable.secrets.STARROCKS_PASSWORD :
NEW_PW="<your-starrocks-password>" # même valeur que apiTable.secrets.STARROCKS_PASSWORD
# StarRocks est dans le namespace de la release par défaut (namespaces.infra → scrydon-platform).
kubectl -n scrydon-platform exec -it deploy/starrocks-fe -- \
mysql -h127.0.0.1 -P9030 -uroot -e "SET PASSWORD FOR 'root' = PASSWORD('${NEW_PW}');"
kubectl -n scrydon-platform rollout restart deployment/svc-api-tableapi-table entre en CrashLoop entre l'installation et cette étape — c'est attendu ; il se stabilise après le redémarrage. Pour apporter votre propre StarRocks :
infra:
starrocks:
enabled: false
apiTable:
starrocks:
host: starrocks-fe.starrocks.svc.cluster.local
user: scrydon
secrets:
STARROCKS_PASSWORD: REPLACE-WITH-STARROCKS-PASSWORDVérifier le déploiement
kubectl get pods -n scrydon-platform # tous Running, 2/2 avec le sidecar Dapr
kubectl get ingress -n scrydon-platform # chaque Ingress a une ADDRESS
kubectl get certificates -A # Certificats cert-manager READY=TrueLes données de licence (niveau, droits, jours avant expiration) apparaissent sous Paramètres de la plateforme → Licence après /setup. Connectez-vous sur https://app.example.com/ et passez d'une application à l'autre via le sélecteur de produit sans vous reconnecter.
Dépannage
| Symptôme | Cause / solution |
|---|---|
Pods 1/1 (pas 2/2) | L'injecteur Dapr ne tourne pas — voir Installations Dapr existantes. |
L'inscription échoue avec PermissionDenied depuis agentic | Mauvais domaine de confiance Dapr. kubectl logs deploy/agentic -n scrydon-platform -c daprd | grep spiffe (ou votre surcharge namespaces.agentic) — les ID doivent être spiffe://scrydon/..., pas spiffe://public/.... Mettre Dapr à niveau vers ≥ 1.17.7. |
Job de migration CrashLoopBackOff | Sur Postgres BYO, une base de données n'a pas été pré-créée — voir BYO Database → Pré-créer les bases. |
Init:ImagePullBackOff avec insufficient_scope (403) | La carte de portée de votre token ACR manque un dépôt miroir tiers (scrydon/busybox, scrydon/pgvector, scrydon/opa). Envoyez à votre équipe l'erreur exacte + le chemin du dépôt — seule la carte de portée est mise à jour, pas le token. |
| Connexion silencieusement cassée derrière un équilibreur de charge | ingress.tls.enabled laissé à false — mettre à true (voir Ingress). |
Opérations de jour 2
- Renouveler la licence — collez le bundle renouvelé sous Paramètres → Licence → Mettre à jour la licence ; pas de redémarrage. Licences.
- Sauvegarde & restauration — CronJob Postgres intégré (
infra.db.backup) ou votre fournisseur managé. Sauvegarde & Restauration. - Mises à jour — Mises à jour.
- Observabilité — Observabilité.