commit 600dbcf0f9332f734be646b4c810e0a3cc43bbcd Author: lucas.mathieu Date: Thu Dec 25 11:56:25 2025 +0100 feat: add metrics-server diff --git a/README.md b/README.md new file mode 100644 index 0000000..69923b5 --- /dev/null +++ b/README.md @@ -0,0 +1,34 @@ +# ArgoCD Apps Structure + +This repository uses the **App of Apps** pattern to manage multiple Kubernetes applications through ArgoCD. + +## Structure + +``` +. +├── root-app.yaml # Root application that manages all apps +├── apps/ # ArgoCD Application manifests +│ └── metrics-server.yaml # Individual app definitions +└── charts/ # Helm values and configurations + └── metrics-server/ + └── values.yaml # Custom values for metrics-server +``` + +## Usage + +1. **Add this repository to ArgoCD:** + ```bash + kubectl apply -f root-app.yaml + ``` + +2. **Add new applications:** + - Create a new Application manifest in `apps/` + - (Optional) Add custom Helm values in `charts//` + - Commit and push - ArgoCD will automatically sync + +## How it works + +- `root-app.yaml` is the entry point that watches the `apps/` directory +- Any YAML files added to `apps/` will be automatically deployed by ArgoCD +- Each app can reference external Helm charts or local manifests +- Custom values can be provided in the `charts/` directory diff --git a/apps/metrics-server.yaml b/apps/metrics-server.yaml new file mode 100644 index 0000000..5827f7b --- /dev/null +++ b/apps/metrics-server.yaml @@ -0,0 +1,28 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: metrics-server + namespace: argocd + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + project: default + sources: + - repoURL: https://kubernetes-sigs.github.io/metrics-server/ + chart: metrics-server + targetRevision: 3.13.0 + helm: + valueFiles: + - $values/charts/metrics-server/values.yaml + - repoURL: https://github.com/lucas.mathieu/argocd-gitops.git + targetRevision: HEAD + ref: values + destination: + server: https://kubernetes.default.svc + namespace: kube-system + syncPolicy: + automated: + prune: true + selfHeal: true + syncOptions: + - CreateNamespace=true diff --git a/charts/metrics-server/values.yaml b/charts/metrics-server/values.yaml new file mode 100644 index 0000000..9631bd0 --- /dev/null +++ b/charts/metrics-server/values.yaml @@ -0,0 +1,17 @@ +# Custom values for metrics-server +# Uncomment and modify to override defaults +# Reference the values file in apps/metrics-server.yaml to use this + +args: + - --kubelet-insecure-tls + +# Example of other common configurations: +# replicas: 1 +# +# resources: +# requests: +# cpu: 100m +# memory: 200Mi +# limits: +# cpu: 500m +# memory: 500Mi diff --git a/root-app.yaml b/root-app.yaml new file mode 100644 index 0000000..9c8bfb8 --- /dev/null +++ b/root-app.yaml @@ -0,0 +1,23 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: root-app + namespace: argocd + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + project: default + source: + repoURL: https://git.lucaasmth.me/lucas.mathieu/argocd-gitops.git + targetRevision: HEAD + path: apps + destination: + server: https://kubernetes.default.svc + namespace: argocd + syncPolicy: + automated: + prune: true + selfHeal: true + allowEmpty: false + syncOptions: + - CreateNamespace=true