Administration Guides
État du service
Vérifier le déploiement avec la commande suivante :
kubectl get cronjob trivy-node-scan-scheduler -n kosmos-system
NAME SCHEDULE TIMEZONE SUSPEND ACTIVE LAST SCHEDULE AGE
trivy-node-scan-scheduler 0 0 * * * <none> False 0 15h 62d
Vérifier que le scan s'est déroulé récemment avec la commande suivante :
kubectl get pod -n kosmos-system -l app=trivy-node-scanner
NAME READY STATUS RESTARTS AGE
trivy-node-scanner-kosmos-int-master-1-1760884563-f4jbd 0/1 Completed 0 4d
trivy-node-scanner-kosmos-int-master-1-1760970970-5vqw8 0/1 Completed 0 3d
trivy-node-scanner-kosmos-int-master-1-1761004805-cwmww 0/1 Completed 0 2d15h
.....
Mettre à jour la base
Vérification de la version
Déclencher manuellement l'éxécution du job de scan
kubectl create job --from=cronjob/trivy-node-scan-scheduler manual-run -n kosmos-system
Lister les pods de scan lancés par le job
kubectl get pod -n kosmos-system -l app=trivy-node-scanner --field-selector=status.phase=Running
Choisir un des pods et lancer cette commande
kubectl -n kosmos-system exec -it trivy-node-scanner-xxxx -- trivy version
Exemple:
kubectl -n kosmos-system exec -it job.batch/trivy-node-scanner-kosmos-int-master-1-1761234459 -- trivy version
Version: 0.63.0
Vulnerability DB:
Version: 2
UpdatedAt: 2025-08-28 12:25:31.464742341 +0000 UTC
NextUpdate: 2025-08-29 12:25:31.464742121 +0000 UTC
DownloadedAt: 2025-08-28 14:22:15.106201414 +0000 UTC
Mise à jour
La base de données des CVE de trivy est embarquée dans l'image athea/trivy-node-scanner
La mise à jour de la base se fait donc via une mise à jour de l'image.
Installation de trivy
A faire sur un PC Ubuntu/Debian connecté à Internet
wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | gpg --dearmor | sudo tee /usr/share/keyrings/trivy.gpg > /dev/null
echo "deb [signed-by=/usr/share/keyrings/trivy.gpg] https://aquasecurity.github.io/trivy-repo/deb generic main" | sudo tee -a /etc/apt/sources.list.d/trivy.list
sudo apt-get update
sudo apt-get install trivy
trivy -v
Téléchargement des bases Trivy
mkdir -p /tmp/.cache/trivy
trivy --cache-dir /tmp/.cache/trivy/ rootfs --download-db-only
trivy --cache-dir /tmp/.cache/trivy/ rootfs --download-java-db-only
Elles sont stockées dans /tmp/.cache/trivy
tree /tmp/.cache/trivy
.
├── db
│ ├── metadata.json
│ └── trivy.db
└── java-db
├── metadata.json
└── trivy-java.db
3 directories, 4 files
Créer un fichier Dockerfile dans le répertoire /tmp/.cache/trivy pour mettre à jour l'image trivy
vi /tmp/.cache/trivy/Dockerfile
FROM hosted-registry.corp.athea/kosmos/trivy-node-scanner:1.0.8
# Copie des bases trivy dans l'image
COPY db/metadata.json /root/.cache/trivy/db/
COPY db/trivy.db /root/.cache/trivy/db/
COPY java-db/metadata.json /root/.cache/trivy/java-db/
COPY java-db/trivy-java.db /root/.cache/trivy/java-db/
ENTRYPOINT ["/usr/local/bin/trivy-node-scanner"]
Builder la nouvelle image avec les mises à jours : podman build . --tag hosted-registry.corp.athea/kosmos/trivy-node-scanner:1.0.8--$(date +"%d%m%y")
Exporter l'image : podman save hosted-registry.corp.athea/kosmos/trivy-node-scanner:1.0.8--$(date +"%d%m%y") > trivy.tar
Transférer la nouvelle image sur la plateforme via un import dans Data Ingestion dans un bucket S3.
Une fois le trivy.tar ingéré, le télécharger dans le rebond via la console S3 (Dans le bucket, appuyer sur Download).
Accdéder à la machine rebond et importer l'image dans ZOT.
sudo podman load -i trivy.tar
sudo podman login -u "zot_username" -p "zot_password" https://kosmos-registry.technique.artemis/
sudo podman tag hosted-registry.corp.athea/kosmos/trivy-node-scanner:1.0.8--121225 kosmos-registry.technique.artemis/athea/kosmos/trivy-node-scanner:1.0.8--121225
sudo podman push kosmos-registry.technique.artemis/athea/kosmos/trivy-node-scanner:1.0.8--121225
La mise à jour se fait via les commandes d'installation helmfile.
Il faut mettre à jour le fichier de déploiement helmfile /data/apps/platform-provisioner/helmfile.yaml.gotmpl avec la version de l'image qui vient d'être créer.
values:
- values/trivy-node-scanner/values.yaml
- networkPolicy:
enabled: {{ .StateValues.networkPolicy.enabled }}
- image:
tag: '1.0.8--121225'
condition: trivy.enabled
Ensuite il faut déployer avec la commande suivante :
helmfile -e [environnement] sync -l app=trivy # Par exemple [environnement] = pprod
k -n kosmos-system get cm trivy-node-scanner -oyaml|grep node-scanner # Pour vérifier que c'est bien pris en compte dans la configmap
Ensuite, vérifier que la nouvelle version de l'image est bien déployée. Pour cela, il faut attendre que le job se déclenche (tous les jours à minuit). Le trivy-node-scanner est un cronjob qui va lancer un job manuellement sur tous les nodes. Le scheduler utilise kubectl pour récupérer les nodes et lancer un job sur la base du configmap.
kubectl -n kosmos-system get job
kubectl -n kosmos-system describe job trivy-node-scanner-compute01-1769731203 |grep Image # trivy-node-scanner-compute01-1769731203 est par exemple le nom du job trouvé avec la commande précédente.
L'image est bien : hosted-registry.corp.athea/kosmos/trivy-node-scanner:xxxxx