Aller au contenu

Déployer AKKO depuis Harbor

Pour les déploiements en production, les images AKKO et le chart Helm sont livrés via le registre Harbor AKKO à harbor.akko-ai.com. Les clients installent AKKO sans cloner le dépôt Git ni construire les images localement.

Prérequis

  • Un cluster Kubernetes joignable (v1.28+). Cibles testées : k3s, OpenShift 4.14+, Outscale OKS, OVHcloud Managed Kubernetes, EKS, AKS, GKE.
  • kubectl configuré contre le cluster cible
  • helm ≥ 3.14
  • DNS pour le domaine de base choisi pointant vers l'ingress du cluster
  • (Optionnel) un compte Harbor en lecture seule si le projet est privé

Installation en une commande

curl -fsSL https://raw.githubusercontent.com/AKKO-p/AKKO/main/helm/scripts/deploy-from-harbor.sh \
  -o deploy-akko.sh

AKKO_DOMAIN=akko.mon-entreprise.example \
AKKO_VERSION=2026.04 \
  bash deploy-akko.sh

C'est tout. Le script :

  1. Se connecte à Harbor (si des identifiants sont fournis)
  2. Crée le namespace akko + le pull secret Harbor
  3. Génère values-domain.yaml et realm-domain.json dérivés de votre domaine
  4. Génère les secrets dev au premier lancement
  5. Exécute helm upgrade --install akko oci://harbor.akko-ai.com/akko-charts/akko --version <VERSION>
  6. Attend que les workloads critiques soient prêts
  7. Affiche l'URL du cockpit

Installation depuis le registre Helm OCI (manuelle, multi-cluster)

Le script en une commande ci-dessus est la voie la plus rapide. Pour les opérateurs qui veulent un contrôle direct — par exemple installer AKKO sur une flotte de clusters depuis un seul poste — récupérez l'artefact chart directement :

# Optionnel : authentification si le projet Harbor est privé.
helm registry login harbor.akko-ai.com

# 1. Tirez une version épinglée du chart localement.
helm pull oci://harbor.akko-ai.com/akko-charts/akko \
  --version 2026.4.1 \
  --untar -d /tmp/akko-chart

# 2. Inspectez le contenu (optionnel mais recommandé).
helm show chart  /tmp/akko-chart/akko
helm show values /tmp/akko-chart/akko | head -100

# 3. Installation sur le cluster A.
kubectl --context cluster-a create namespace akko --dry-run=client -o yaml | \
  kubectl --context cluster-a apply -f -

helm --kube-context cluster-a install akko /tmp/akko-chart/akko \
  --namespace akko \
  -f values-cluster-a.yaml \
  --wait --timeout 20m

# 4. Installation sur le cluster B avec un autre domaine — mêmes octets de chart.
helm --kube-context cluster-b install akko /tmp/akko-chart/akko \
  --namespace akko \
  -f values-cluster-b.yaml \
  --wait --timeout 20m

Ou, pour une installation directe sans untar :

helm install akko oci://harbor.akko-ai.com/akko-charts/akko \
  --version 2026.4.1 \
  --namespace akko --create-namespace \
  -f values-domain.yaml \
  -f values-dev-secrets.yaml

C'est exactement le chemin que le flag --from-oci de helm/scripts/deploy-netcup-full.sh exerce de bout en bout sur le cluster de production AKKO (Sprint 46 stream A4 / ADR-034 (docs/adr/adr-034-helm-chart-oci-distribution.md dans le repo source)).

Pourquoi OCI et pas un dépôt HTTP ?

  • Une seule surface de registre (le même Harbor qui héberge les images de conteneur AKKO).
  • Adressage par contenu (digest) — réinstallations déterministes.
  • Signature cosign native (Sprint 46 stream A1).
  • Pas d'index.yaml à maintenir ; pas de deuxième cible de sauvegarde ; pas de dépendance à un CDN public.

Voir ADR-034 (docs/adr/adr-034-helm-chart-oci-distribution.md dans le repo source) pour le raisonnement complet et le plan multi-canaux (tags stable / beta / nightly).

Ce qui est récupéré depuis Harbor

Artéfact Source Signature
Chart Helm akko oci://harbor.akko-ai.com/akko-charts/akko Cosign keyless
Image akko-cockpit harbor.akko-ai.com/akko/akko-cockpit:2026.04 Cosign keyless
Image akko-postgres harbor.akko-ai.com/akko/akko-postgres:2026.04 Cosign keyless
Image akko-spark harbor.akko-ai.com/akko/akko-spark:2026.04 Cosign keyless
Image akko-trino (plugin) harbor.akko-ai.com/akko/akko-trino:2026.04 Cosign keyless
Image akko-ai-service harbor.akko-ai.com/akko/akko-ai-service:2026.04 Cosign keyless
Image akko-aden harbor.akko-ai.com/akko/akko-aden:2026.04 Cosign keyless
Image akko-mlflow harbor.akko-ai.com/akko/akko-mlflow:2026.04 Cosign keyless
Images akko-mcp-trino / akko-mcp-openmetadata harbor.akko-ai.com/akko/akko-mcp-*:2026.04 Cosign keyless
Image akko-docs harbor.akko-ai.com/akko/akko-docs:2026.04 Cosign keyless
Images tierces (Keycloak, Airflow, Superset, Ollama, OpenMetadata, …) Registres upstream Signatures upstream

Toutes les images sont scannées par Trivy au moment du publish. Les builds échouant sur des CVE CRITICAL n'atteignent jamais Harbor.

Vérifier les signatures (optionnel mais recommandé)

cosign verify \
  --certificate-identity-regexp "ci\.akko-ai\.com/AKKO-p/AKKO/\.woodpecker/.*" \
  --certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
  harbor.akko-ai.com/akko/akko-cockpit:2026.04

Mise à jour

Relancer le même script avec une version plus récente. Le chart est idempotent et préserve les secrets existants via lookup.

AKKO_DOMAIN=akko.mon-entreprise.example \
AKKO_VERSION=2026.05 \
  bash deploy-akko.sh

Hors-ligne / air-gapped

Si le cluster ne peut pas joindre Harbor public :

  1. Sur une machine en ligne : helm pull oci://harbor.akko-ai.com/akko-charts/akko --version 2026.04
  2. Recopiez toutes les images ci-dessus dans votre registre interne
  3. Surchargez global.image.registry via un fichier values personnalisé :
global:
  image:
    registry: registre-interne.corp.example
  1. Installez le chart depuis l'archive locale :
helm install akko ./akko-2026.04.tgz \
  -f values-registre-interne.yaml \
  -f values-domain.yaml \
  -f values-dev-secrets.yaml

Dépannage

Symptôme À vérifier
ImagePullBackOff kubectl describe pod — connexion Harbor, pull secret, visibilité projet
Chart introuvable Connexion Harbor : helm registry login harbor.akko-ai.com
Vérification signature échoue Cosign keyless requiert Rekor joignable — tester avec --insecure-ignore-tlog=true
Ressources qui ne réconcilient pas kubectl describe deployment/<nom> — limites CPU/mémoire, capacité du nœud

Note commerciale

Les images et charts publiés sur harbor.akko-ai.com sont distribués sous les conditions AKKO. Les binaires intègrent plusieurs composants open-source sous licences permissives (Apache 2.0, MIT, BSD). L'inventaire par composant est disponible dans docs/licenses/inventory.md.