From e9a145fc917488880d576cfc68675471e1d944c0 Mon Sep 17 00:00:00 2001
From: Glenn <glenux@glenux.net>
Date: Tue, 21 Mar 2023 17:50:27 +0100
Subject: [PATCH] Add content

---
 README.md                                   | 48 +++++++++++++++++++++
 helm/dokuwiki.yaml                          |  2 +
 helm/wordpress.yaml                         |  7 +++
 helmfile.yaml                               | 21 +++++++++
 k3d/k3d-cluster.yaml                        | 25 +++++++++++
 kubernetes/_base/ingress-route.yaml         | 28 ++++++++++++
 kubernetes/_base/ingress.yaml               | 25 +++++++++++
 kubernetes/_base/kustomization.yaml         |  8 ++++
 kubernetes/ingress-route/kustomization.yaml | 17 ++++++++
 kubernetes/ingress/kustomization.yaml       | 16 +++++++
 10 files changed, 197 insertions(+)
 create mode 100644 README.md
 create mode 100644 helm/dokuwiki.yaml
 create mode 100644 helm/wordpress.yaml
 create mode 100644 helmfile.yaml
 create mode 100644 k3d/k3d-cluster.yaml
 create mode 100644 kubernetes/_base/ingress-route.yaml
 create mode 100644 kubernetes/_base/ingress.yaml
 create mode 100644 kubernetes/_base/kustomization.yaml
 create mode 100644 kubernetes/ingress-route/kustomization.yaml
 create mode 100644 kubernetes/ingress/kustomization.yaml

diff --git a/README.md b/README.md
new file mode 100644
index 0000000..2ac696c
--- /dev/null
+++ b/README.md
@@ -0,0 +1,48 @@
+# Projet demo
+
+## Prerequis
+
+* k3d
+* kubectl
+* helm
+* helm-diff
+* helmfile
+
+## Créer le cluster
+
+    k3d cluster create -c k3d/k3d-cluster.yaml
+
+## Installer les charts helm (avec helmfile)
+
+    helmfile apply 
+
+## Intaller les différents services (avec kustomize)
+
+### Option 1 : configuration basée sur Ingress (standard kubernetes)
+
+    kubectl delete -f kubernetes/ingress-route/
+    kubectl apply -f kubernetes/ingress/
+
+### Option 2 : configuration basée sur IngressRoute (traefik)
+
+    kubectl delete -f kubernetes/ingress/
+    kubectl apply -f kubernetes/ingress-route/
+
+## Vérifier les objets
+
+### Option 1 : configuration basée sur Ingress (standard kubernetes)
+
+    k9s -n web -c ingress
+
+### Option 2 : configuration basée sur IngressRoute (traefik)
+
+    k9s -n web -c ingress-route
+
+## Tester le fonctionnement
+
+    w3m http://localhost/dokuwiki
+    w3m http://localhost/wordpress
+
+
+  
+
diff --git a/helm/dokuwiki.yaml b/helm/dokuwiki.yaml
new file mode 100644
index 0000000..b738e2a
--- /dev/null
+++ b/helm/dokuwiki.yaml
@@ -0,0 +1,2 @@
+service:
+  type: ClusterIP
diff --git a/helm/wordpress.yaml b/helm/wordpress.yaml
new file mode 100644
index 0000000..caf3c10
--- /dev/null
+++ b/helm/wordpress.yaml
@@ -0,0 +1,7 @@
+# --set memcached.enabled=true --set memcached.auth.enabled=false
+memcached:             
+  enabled: true
+  auth:
+    enabled: false
+service:
+  type: ClusterIP
diff --git a/helmfile.yaml b/helmfile.yaml
new file mode 100644
index 0000000..5539453
--- /dev/null
+++ b/helmfile.yaml
@@ -0,0 +1,21 @@
+---
+# Les repositories que je veux pour Helm
+repositories:
+  - name: bitnami
+    url: https://charts.bitnami.com/bitnami
+
+releases:
+  - name: demo-wordpress
+    namespace: web
+    chart: bitnami/wordpress
+    # version: 0.26.0
+    values:
+      - ./helm/wordpress.yaml
+
+  - name: demo-dokuwiki
+    namespace: web
+    chart: bitnami/dokuwiki
+    # version: 0.26.0
+    values:
+      - ./helm/dokuwiki.yaml
+#
diff --git a/k3d/k3d-cluster.yaml b/k3d/k3d-cluster.yaml
new file mode 100644
index 0000000..319ee50
--- /dev/null
+++ b/k3d/k3d-cluster.yaml
@@ -0,0 +1,25 @@
+---
+apiVersion: k3d.io/v1alpha4
+kind: Simple
+metadata:
+  name: k3d-cluster
+servers: 1
+agents: 2
+image: docker.io/rancher/k3s:v1.25.7-k3s1
+registries:
+  create:
+    name: registry.local
+    host: "0.0.0.0"
+    hostPort: "5000"
+options:
+  # options passed on to K3s itself
+  k3s:
+    extraArgs:
+      - arg: "--kubelet-arg=eviction-hard=imagefs.available<1%,nodefs.available<1%"
+        nodeFilters:
+          - server:*
+          - agent:*
+      - arg: "--kubelet-arg=eviction-minimum-reclaim=imagefs.available=1%,nodefs.available=1%"
+        nodeFilters:
+          - server:*
+          - agent:*
diff --git a/kubernetes/_base/ingress-route.yaml b/kubernetes/_base/ingress-route.yaml
new file mode 100644
index 0000000..8010e3f
--- /dev/null
+++ b/kubernetes/_base/ingress-route.yaml
@@ -0,0 +1,28 @@
+apiVersion: traefik.containo.us/v1alpha1
+kind: IngressRoute
+metadata:
+  name: demo-ingress-route
+  namespace: web
+spec:
+  entryPoints:
+    - web
+  routes:
+  - kind: Rule
+    match: PathPrefix(`/dokuwiki`)
+    services:
+    - kind: Service
+      name: demo-dokuwiki  # OK
+      namespace: web
+      passHostHeader: true
+      port: 80 # OK
+      scheme: http
+  - kind: Rule
+    match: PathPrefix(`/wordpress`)
+    services:
+    - kind: Service
+      name: demo-wordpress  # OK
+      namespace: web
+      passHostHeader: true
+      port: 80 # OK
+      scheme: http
+
diff --git a/kubernetes/_base/ingress.yaml b/kubernetes/_base/ingress.yaml
new file mode 100644
index 0000000..2964700
--- /dev/null
+++ b/kubernetes/_base/ingress.yaml
@@ -0,0 +1,25 @@
+apiVersion: networking.k8s.io/v1
+kind: Ingress
+metadata:
+  name: demo-ingress
+  namespace: web
+  annotations:
+    ingress.kubernetes.io/ssl-redirect: "false"
+spec:
+  rules:
+    - http:
+        paths: 
+          - path: /dokuwiki
+            pathType: Prefix
+            backend:
+              service:
+                name: demo-dokuwiki
+                port:
+                  number: 80
+          - path: /wordpress
+            pathType: Prefix
+            backend:
+              service:
+                name: demo-wordpress
+                port:
+                  number: 80
diff --git a/kubernetes/_base/kustomization.yaml b/kubernetes/_base/kustomization.yaml
new file mode 100644
index 0000000..a96b358
--- /dev/null
+++ b/kubernetes/_base/kustomization.yaml
@@ -0,0 +1,8 @@
+---
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+
+resources:
+  - ingress.yaml
+  - ingress-route.yaml
+
diff --git a/kubernetes/ingress-route/kustomization.yaml b/kubernetes/ingress-route/kustomization.yaml
new file mode 100644
index 0000000..7a0fe4e
--- /dev/null
+++ b/kubernetes/ingress-route/kustomization.yaml
@@ -0,0 +1,17 @@
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+
+# bases:
+resources:
+  - ../_base
+
+patchesStrategicMerge:
+- |-
+  apiVersion: networking.k8s.io/v1
+  kind: Ingress
+  metadata:
+    name: demo-ingress
+    namespace: web
+  $patch: delete
+
+
diff --git a/kubernetes/ingress/kustomization.yaml b/kubernetes/ingress/kustomization.yaml
new file mode 100644
index 0000000..3cdaf06
--- /dev/null
+++ b/kubernetes/ingress/kustomization.yaml
@@ -0,0 +1,16 @@
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+
+resources:
+  - ../_base
+
+patchesStrategicMerge:
+- |-
+  apiVersion: traefik.containo.us/v1alpha1
+  kind: IngressRoute
+  metadata:
+    name: demo-ingress-route
+    namespace: web
+  $patch: delete
+
+