Aegis Vetis home

GUIDE

Déploiement air-gap

Installer et exploiter Aegis Vetis sur un site sans accès Internet : bundle, mirror, vérification offline.

Last updated
2026-05-09

The English translation of the documentation is in progress. For the moment, the content below is in French — switch to the French version for the canonical reading experience.

Déploiement air-gap

Ce guide concerne uniquement les sites sans accès Internet sortant. Si votre site peut joindre registry.aegis-vetis.io, suivez plutôt Quick start ou Installation — le flux Harbor (helm pull oci://registry.aegis-vetis.io/...) est plus simple et ne nécessite ni bundle ni binaire aegisctl.

Aegis Vetis est conçu pour fonctionner sur un site souverain coupé d’Internet, soit pour l’installation seule, soit pour l’exploitation complète. Le bundle air-gap est un tarball self-contained qui inclut toutes les images, le chart Helm et le binaire aegisctl nécessaire à son import. Vous le recevez par lien sécurisé à la finalisation de votre commande (option air-gap).

Dans la suite de ce guide, harbor.corp.local désigne votre propre registre Harbor interne dans le site air-gap, où le bundle est importé. Pas notre Harbor public registry.aegis-vetis.io.

1. Modes air-gap supportés

ModeDescriptionSupporté
Install offlineBundle d’images et de chart à transférer ; exploitation online ensuiteOui
Runtime offlineLe Control Plane fonctionne sans Internet ; les agents joignent le Control Plane sur le réseau privé interneOui
Disconnected totalAucun lien clusters ↔ Control Plane, export manuelSur la roadmap

2. Pré-requis

  • Un registre d’images interne accessible depuis le cluster cible : Harbor, Quay, Distribution, Nexus, GitLab Registry, etc.
  • Un moyen de transfert physique sécurisé entre le site connecté et le site air-gap (USB chiffré, courrier interne signé).
  • cosign installé côté site air-gap pour vérifier la signature du bundle avant import.
  • helm ≥ 3.14 et kubectl côté admin.

3. Construire le bundle (côté connecté)

Aegis Vetis fournit un CLI aegisctl qui produit un bundle OCI self-contained.

aegisctl bundle build \
  --version 0.30.0 \
  --output aegis-vetis-0.30.0-airgap.tar.zst

Le bundle contient :

aegis-vetis-0.30.0-airgap.tar.zst
├── images/             # OCI layout — toutes les images requises
├── charts/             # aegis-vetis + aegis-vetis-cluster + dépendances
├── policies/           # bundle Kyverno baseline
├── frameworks/         # mappings YAML CIS / NIS2 / SecNumCloud
├── docs/               # extraits de cette documentation
├── manifest.json       # liste images + sha256 + tags
└── manifest.json.sig   # signature Cosign détachée

Le SHA-256 du tarball complet et la signature détachée sont publiés sur la page de release. Conservez la clé publique Cosign avec votre archivage de release pour pouvoir vérifier des bundles historiques.

4. Vérifier le bundle (côté air-gap)

Avant tout import, vérifier la signature :

aegisctl bundle verify aegis-vetis-0.30.0-airgap.tar.zst \
  --pubkey aegis-cosign-release.pub
# → Verified OK · 47 images · sha256: 3f...

La commande contrôle :

  • la signature Cosign du manifest.json,
  • la cohérence des SHA-256 de chaque image listée dans le manifest par rapport au contenu du tarball,
  • l’absence de référence externe (toutes les images doivent être satisfiables depuis le bundle).

5. Importer le bundle

aegisctl bundle import aegis-vetis-0.30.0-airgap.tar.zst \
  --target-registry harbor.corp.local \
  --target-project aegis-vetis

L’import :

  1. extrait les images vers harbor.corp.local/aegis-vetis/* ;
  2. ré-signe les images avec une clé locale si demandé (--resign --cosign-key local-cosign.key) ;
  3. publie les charts dans le repository Helm OCI cible.

Les charts deviennent installables depuis l’OCI :

helm pull oci://harbor.corp.local/aegis-vetis/aegis-vetis \
  --version 0.30.0

6. Installer

values-airgap.yaml minimal :

global:
  imageRegistry: harbor.corp.local
  imagePullSecrets:
    - name: harbor-pull

airGap: true # désactive les appels sortants (Rekor, télémétrie)

api:
  ingress:
    enabled: true
    hostname: aegis.corp.local

Puis :

helm install aegis ./charts/aegis-vetis-0.30.0.tgz \
  -n aegis-vetis --create-namespace \
  -f values-airgap.yaml \
  --wait --timeout=10m

L’enrôlement de cluster suit la procédure standard (Installation §7) — l’agent joint le Control Plane sur le réseau privé interne.

7. Mises à jour offline

Chaque release Aegis Vetis publie un nouveau bundle. Le workflow est identique :

# Site connecté
aegisctl bundle build --version 0.31.0 \
  --output aegis-vetis-0.31.0-airgap.tar.zst

# Transfert physique sécurisé

# Site air-gap
aegisctl bundle verify aegis-vetis-0.31.0-airgap.tar.zst
aegisctl bundle import aegis-vetis-0.31.0-airgap.tar.zst \
  --target-registry harbor.corp.local

helm upgrade aegis ./charts/aegis-vetis-0.31.0.tgz \
  -n aegis-vetis -f values-airgap.yaml \
  --reset-then-reuse-values

Les migrations PostgreSQL sont exécutées automatiquement par un Job d’upgrade ; aucune intervention manuelle n’est requise tant que la mise à jour reste sur une release majeure.

8. Limites

  • Le bundle est généré manuellement pour le moment ; un pipeline de publication automatique est sur la roadmap.
  • Rekor (transparency log Sigstore) n’est pas inclus offline ; la vérification Cosign reste clé-pinnée (la clé publique est livrée avec la release et archivée par le client).
  • Le mode “totalement déconnecté” — cluster client sans aucun lien vers le Control Plane, avec export manuel des preuves — figure sur la roadmap mais n’est pas couvert par cette version.

9. Aller plus loin