commit fe181e7a3bea2ca0968024c45c82208cc298bb4d Author: baptiste Date: Sun Jul 19 01:52:47 2026 +0200 Initial Kubernetes GitOps repository diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/applications/web-test/pod.yaml b/applications/web-test/pod.yaml new file mode 100644 index 0000000..02ca93c --- /dev/null +++ b/applications/web-test/pod.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Pod +metadata: + name: test-pod + namespace: test-storage +spec: + containers: + - name: test + image: nginx + volumeMounts: + - mountPath: /data + name: vol + volumes: + - name: vol + persistentVolumeClaim: + claimName: test-pvc diff --git a/applications/web-test/pvc.yaml b/applications/web-test/pvc.yaml new file mode 100644 index 0000000..576841c --- /dev/null +++ b/applications/web-test/pvc.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: test-pvc + namespace: test-storage +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 2Gi diff --git a/applications/web-test/web-ingress.yaml b/applications/web-test/web-ingress.yaml new file mode 100644 index 0000000..f5423d2 --- /dev/null +++ b/applications/web-test/web-ingress.yaml @@ -0,0 +1,17 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: web +spec: + ingressClassName: nginx + rules: + - host: web.local + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: web + port: + number: 80 diff --git a/bootstrap/argocd/root-application.yaml b/bootstrap/argocd/root-application.yaml new file mode 100644 index 0000000..e69de29 diff --git a/bootstrap/argocd/values.yaml b/bootstrap/argocd/values.yaml new file mode 100644 index 0000000..0adde4c --- /dev/null +++ b/bootstrap/argocd/values.yaml @@ -0,0 +1,31 @@ +global: + domain: argocd.guillin.ovh + +configs: + params: + server.insecure: true + +server: + replicas: 2 + + service: + type: ClusterIP + + ingress: + enabled: true + ingressClassName: nginx + + hosts: + - argocd.guillin.ovh + +controller: + replicas: 1 + +repoServer: + replicas: 2 + +applicationSet: + replicas: 2 + +redis: + enabled: true diff --git a/infrastructure/cert-manager/values.yaml b/infrastructure/cert-manager/values.yaml new file mode 100644 index 0000000..e69de29 diff --git a/infrastructure/cloudnative-pg/values.yaml b/infrastructure/cloudnative-pg/values.yaml new file mode 100644 index 0000000..e69de29 diff --git a/infrastructure/database/postgres-cluster.yaml b/infrastructure/database/postgres-cluster.yaml new file mode 100644 index 0000000..622b671 --- /dev/null +++ b/infrastructure/database/postgres-cluster.yaml @@ -0,0 +1,26 @@ +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: pg-cluster + namespace: default +spec: + instances: 3 + + storage: + size: 10Gi + storageClass: longhorn + + superuserSecret: + name: pg-superuser + + bootstrap: + initdb: + database: app + owner: app + secret: + name: pg-app-user + + resources: + requests: + memory: "512Mi" + cpu: "250m" diff --git a/infrastructure/ingress-nginx/values.yaml b/infrastructure/ingress-nginx/values.yaml new file mode 100644 index 0000000..e69de29 diff --git a/infrastructure/metallb/metallb-bgp.yaml b/infrastructure/metallb/metallb-bgp.yaml new file mode 100644 index 0000000..b3da201 --- /dev/null +++ b/infrastructure/metallb/metallb-bgp.yaml @@ -0,0 +1,27 @@ +apiVersion: metallb.io/v1beta1 +kind: IPAddressPool +metadata: + name: bgp-pool + namespace: metallb-system +spec: + addresses: + - 172.16.10.200-172.16.10.220 +--- +apiVersion: metallb.io/v1beta2 +kind: BGPPeer +metadata: + name: opnsense + namespace: metallb-system +spec: + myASN: 64513 + peerASN: 64512 + peerAddress: 172.16.10.1 +--- +apiVersion: metallb.io/v1beta1 +kind: BGPAdvertisement +metadata: + name: bgp-adv + namespace: metallb-system +spec: + ipAddressPools: + - bgp-pool diff --git a/infrastructure/metallb/metallb-config.yaml b/infrastructure/metallb/metallb-config.yaml new file mode 100644 index 0000000..fdee5bc --- /dev/null +++ b/infrastructure/metallb/metallb-config.yaml @@ -0,0 +1,15 @@ +apiVersion: metallb.io/v1beta1 +kind: IPAddressPool +metadata: + name: default-pool + namespace: metallb-system +spec: + addresses: + - 172.16.10.100-172.16.10.120 + +--- +apiVersion: metallb.io/v1beta1 +kind: L2Advertisement +metadata: + name: l2 + namespace: metallb-system diff --git a/infrastructure/monitoring/kube-prometheus-stack/grafana-ingress.yaml b/infrastructure/monitoring/kube-prometheus-stack/grafana-ingress.yaml new file mode 100644 index 0000000..081a4f2 --- /dev/null +++ b/infrastructure/monitoring/kube-prometheus-stack/grafana-ingress.yaml @@ -0,0 +1,18 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: grafana + namespace: monitoring +spec: + ingressClassName: nginx + rules: + - host: grafana.local + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: monitoring-grafana + port: + number: 80 diff --git a/infrastructure/monitoring/kube-prometheus-stack/values.yaml b/infrastructure/monitoring/kube-prometheus-stack/values.yaml new file mode 100644 index 0000000..e69de29 diff --git a/infrastructure/storage/longhorn/longhorn-ingress.yaml b/infrastructure/storage/longhorn/longhorn-ingress.yaml new file mode 100644 index 0000000..c55a199 --- /dev/null +++ b/infrastructure/storage/longhorn/longhorn-ingress.yaml @@ -0,0 +1,18 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: longhorn + namespace: longhorn-system +spec: + ingressClassName: nginx + rules: + - host: longhorn.local + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: longhorn-frontend + port: + number: 80 diff --git a/infrastructure/storage/longhorn/values.yaml b/infrastructure/storage/longhorn/values.yaml new file mode 100644 index 0000000..e69de29