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). Page de login dependency track