From aa1e205c6608f582414ab9900d305e1d115efc00 Mon Sep 17 00:00:00 2001
From: Steffen Illium <steffen.illium@gmail.com>
Date: Mon, 25 Mar 2024 19:13:12 +0100
Subject: [PATCH] initial infrastructure

---
 basic/metallb.yml                    |  5 -----
 infrastructure/01-default-setup.sh   | 11 +++++++++++
 infrastructure/01-metallb-advert.yml |  5 +++++
 infrastructure/01-metallb-pool.yml   |  8 ++++++++
 infrastructure/argocd-ingress.yml    | 22 ++++++++++++++++++++++
 5 files changed, 46 insertions(+), 5 deletions(-)
 delete mode 100644 basic/metallb.yml
 create mode 100755 infrastructure/01-default-setup.sh
 create mode 100644 infrastructure/01-metallb-advert.yml
 create mode 100644 infrastructure/01-metallb-pool.yml
 create mode 100644 infrastructure/argocd-ingress.yml

diff --git a/basic/metallb.yml b/basic/metallb.yml
deleted file mode 100644
index ed82d53..0000000
--- a/basic/metallb.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-# kustomization.yml
-namespace: metallb-system
-
-resources:
-  - github.com/metallb/metallb/config/native?ref=v0.14.3
diff --git a/infrastructure/01-default-setup.sh b/infrastructure/01-default-setup.sh
new file mode 100755
index 0000000..1cbd157
--- /dev/null
+++ b/infrastructure/01-default-setup.sh
@@ -0,0 +1,11 @@
+#! /bin/bash
+
+# Install MetalLB and configure ip ranges (local homelab)
+kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.14.3/config/manifests/metallb-native.yaml
+              -f ./01-metallb-pool.yml
+              -f ./01-metallb-advert.yml
+
+# Install argoCD for deployment and secret management
+kubectl create namespace argocd
+kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
+
diff --git a/infrastructure/01-metallb-advert.yml b/infrastructure/01-metallb-advert.yml
new file mode 100644
index 0000000..3902089
--- /dev/null
+++ b/infrastructure/01-metallb-advert.yml
@@ -0,0 +1,5 @@
+apiVersion: metallb.io/v1beta1
+kind: L2Advertisement
+metadata:
+  name: sirnix-advert
+  namespace: metallb-system
diff --git a/infrastructure/01-metallb-pool.yml b/infrastructure/01-metallb-pool.yml
new file mode 100644
index 0000000..d021dac
--- /dev/null
+++ b/infrastructure/01-metallb-pool.yml
@@ -0,0 +1,8 @@
+apiVersion: metallb.io/v1beta1
+kind: IPAddressPool
+metadata:
+  name: my-pool
+  namespace: metallb-system
+spec:
+  addresses:
+  - 192.168.178.101-192.168.178.255
diff --git a/infrastructure/argocd-ingress.yml b/infrastructure/argocd-ingress.yml
new file mode 100644
index 0000000..04e00aa
--- /dev/null
+++ b/infrastructure/argocd-ingress.yml
@@ -0,0 +1,22 @@
+apiVersion: networking.k8s.io/v1
+kind: Ingress
+metadata:
+  name: argocd-server
+  namespace: argocd
+  annotations:
+    kubernetes.io/ingress.class: traefik
+    traefik.ingress.kubernetes.io/router.entrypoints: "websecure,web"
+
+spec:
+  ingressClassName: traefik
+  rules:
+    - host: argocd.steffenillium.de
+      http:
+        paths:
+          - path: /
+            pathType: Prefix
+            backend:
+              service:
+                name: argocd-server
+                port:
+                  number: 80