Si vous ne savez pas ce qu’est Dependency Track, je vous invite à lire mon article d’introduction à Dependency Track ici.
Prerequis
- Un cluster Kubernetes fonctionnel (Cloud (AWS, GCP, Azure) ou local (Kind, Minikube, K3s)
- Helm installé et configuré
- Une instance ArgoCD pour le déploiement en GitOps
Pattern App of Apps
Le pattern App of Apps consiste à créer une application principale (appelée “App of Apps”) qui référence d’autres applications (appelées “child apps”). Cela permet de regrouper plusieurs applications sous une même hiérarchie et de les gérer de manière centralisée.
Architecture d’un repo GitOps avec App of Apps
├── apps/
│ ├── monapp.yaml (Ici dependency-track dans notre cas)
├── root-app.yaml/
Dans cet exemple, root-app.yaml est l’application principale (App of Apps) qui référence monapp.yaml (child app) qui contient la configuration pour déployer Dependency Track.
Si je souhaite déployer d’autres applications je n’ai qu’à créer une nouvelle ressource Application dans le dossier apps/.
Configuration
Mon fichier root-app.yaml :
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: root-app
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/votre-user/votre-repo
targetRevision: main
path: apps
destination:
server: https://kubernetes.default.svc
namespace: argocd
syncPolicy:
automated:
prune: true
selfHeal: true
Mon dependency-track.yaml (apps/dependency-track.yaml) :
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: dependency-track
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/votre-user/votre-repo
targetRevision: main
path: dependency-track
helm:
valueFiles:
- values.yaml
destination:
server: https://kubernetes.default.svc
namespace: dependency-track
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
- ServerSideApply=true
On applique la configuration avec (seule étape manuelle):
kubectl apply -f root-app.yaml
A ce stade vous devriez voir la chart se déployer dans ArgoCD et après quelques minutes l’application devrait être en état “Healthy” et “Synced”.
Pour y accéder, vous pouvez faire un port forward sur le service frontend ou api server comme vu dans la section FluxCD.
kubectl port-forward -n dependency-track svc/dependency-track-api-server 8080:8080
# Dans un autre terminal
kubectl port-forward -n dependency-track svc/dependency-track-frontend 8081:8080
Et voilà le résultat (login : admin / password : admin).

