Aller au contenu
  1. Docs/
  2. K3s Kubernetes/

Structure GitOps et App-of-Apps

·Temps de lecture : 2 minutes· loading · loading · ·
ksh2177
GitOps Argo CD Kubernetes App-of-Apps DevOps Homelab K3s
ksh2177
Auteur
ksh2177
Ingénieur DevOps passionné par l’automatisation, la fiabilité et le design système.
Auteur
ksh2177
Ingénieur DevOps passionné par l’automatisation, la fiabilité et le design système. J’apporte des solutions robustes et bien pensées.
Table des matières

🧠 Bootstrap GitOps
#

Mon dépôt homelab-gitops est structuré pour fonctionner avec un point d’entrée unique :

📍 bootstrap/homelab.yaml

Ce fichier est appliqué une seule fois manuellement, et déclenche ensuite automatiquement :

  • l’application apps (définie dans apps.yaml)
  • qui explore récursivement tous les sous-dossiers d’applications

Architecture Gitops
Architecture Gitops

🗂️ Arborescence réelle
#

homelab-gitops/
├── bootstrap/
│ └── homelab.yaml ← ⚙️ point de départ GitOps
├── clusters/
│ └── prod/
│ └── app-of-apps.yaml (Contient toutes mes app visuellement)
├── apps/
│ ├── core/
│ │ ├── cert-manager/
│ │ └── cert-issuer/
│ ├── home-automation/
│ │ └── home-assistant/
│ ├── metallb/
│ ├── networking/
│ │ └── ingress-nginx/
│ ├── observability/
│ │ ├── kube-prom-stack/
│ │ └── loki-stack/
│ ├── storage/
│ │ └── longhorn/
│ └── system/
├── config/
│ └── metallb/
│ ├── ipaddresspool.yaml
│ └── l2advertisement.yaml

📄 bootstrap/homelab.yaml
#

more bootstrap/homelab.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: apps
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://gitlab.com/ksh2177/homelab-gitops.git
    targetRevision: HEAD
    path: apps
    directory:
      recurse: true
  destination:
    server: https://kubernetes.default.svc
    namespace: argocd
  syncPolicy:
    automated:
      prune: true
      selfHeal: true

📄 apps/app.yaml (déclenché automatiquement)
#

more clusters/prod/app-of-apps.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: homelab
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://gitlab.com/ksh2177/homelab-gitops.git
    targetRevision: HEAD
    path: bootstrap
  destination:
    server: https://kubernetes.default.svc
    namespace: argocd
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
    - CreateNamespace=true

▶️ Étape manuelle unique
#

kubectl apply -f bootstrap/homelab.yaml

Cela crée l’application homelab dans Argo CD, qui elle-même crée apps, qui explore tout le dossier apps/ en récursif et déploie automatiquement chaque app.yaml.


🔁 Résultat
#

Dans Argo CD :

  • Tu verras l’application homelabapps ➜ toutes les sous-apps déployées
  • Chaque app est traçable, synchronisée, et versionnée via Git

Argo apps
Argo Apps

🎯 Tu as maintenant un véritable système GitOps en cascade, automatisé, modulaire et auto-réparateur 💡

Articles connexes

Déploiement Home Assistant (GitOps)
·Temps de lecture : 7 minutes· loading · loading
ksh2177
GitOps Argo CD Kubernetes App-of-Apps DevOps Homelab K3s Helm Sealed Domotique
Création d’un chart Helm minimal, overlay Kustomize, secret chiffré et déclaration Argo CD pour Home Assistant.
Installation d’Argo CD avec Ansible
·Temps de lecture : 4 minutes· loading · loading
ksh2177
Argo CD Kubernetes Helm GitOps Ansible DevOps K3s Homelab
Déployer Argo CD dans le cluster K3s à l’aide d’un playbook Ansible Helm complet et idempotent.
Network settings
·Temps de lecture : 4 minutes· loading · loading
ksh2177
K3s Kubernetes MetalLB LoadBalancer Helm Network ClusterIP Homelab DevOps
Déploiement de MetalLB pour gérer des adresses IP externes avec K3s : installation via Helm, configuration d’un pool d’IP et vérifications réseau.
Storage settings
·Temps de lecture : 9 minutes· loading · loading
ksh2177
K3s Kubernetes Storage Longhorn Ansible Raspberry Pi PersistentVolume DevOps Homelab
Choix, préparation et installation de Longhorn comme solution de stockage persistant Kubernetes pour K3s sur Raspberry Pi, avec montage automatique via Ansible.
Helm arkade
·Temps de lecture : 2 minutes· loading · loading
ksh2177
K3s Kubernetes Helm Arkade Package Manager CLI Tools DevOps Homelab
Installation de Helm et Arkade sur le cluster K3s : deux outils indispensables pour déployer et gérer des applications Kubernetes simplement.
Os settings
·Temps de lecture : 1 minutes· loading · loading
ksh2177
K3s Kubernetes DietPi Linux OS Iptables Ansible Homelab DevOps
Réglages système post-installation pour DietPi : mise à jour de l’OS, configuration réseau, iptables et préparation à Kubernetes.
Conf noeuds
·Temps de lecture : 3 minutes· loading · loading
ksh2177
K3s Kubernetes Ansible Raspberry Pi Homelab SSH Inventory Automation DevOps
Préparer les nœuds Raspberry Pi pour le cluster K3s : connectivité, SSH sans mot de passe, configuration d’Ansible et inventaire dynamique.
Bootstrap du cluster K3s - Préparation
·Temps de lecture : 3 minutes· loading · loading
ksh2177
K3s Ansible Bootstrap Homelab GitOps Infrastructure Raspberry Pi
Initialisation du dépôt homelab-k3s et création de l’inventaire Ansible pour les nœuds du cluster.
Design goal
·Temps de lecture : 2 minutes· loading · loading
ksh2177
K3s Kubernetes Ansible Raspberry Pi Homelab SSH Automation Cluster Infra-as-Code
Préparation des nœuds Raspberry Pi avant le déploiement du cluster K3s : réseau, SSH, Ansible et inventaire automatisé.