diff --git a/p2/Makefile b/p2/Makefile index f85db89..36b8a35 100644 --- a/p2/Makefile +++ b/p2/Makefile @@ -1,11 +1,10 @@ -VAGRANT_FILE ?= Vagrantfile.ingress - +MODE ?= ingress HOSTS_LINE = 192.168.56.110 app1.com app2.com app3.com -VAGRANT_CMD = VAGRANT_VAGRANTFILE=$(VAGRANT_FILE) vagrant +VAGRANT_CMD = MODE=$(MODE) vagrant all: - @echo "Starting Vagrant VM unsing $(VAGRANT_FILE)..." + @echo "Starting Vagrant VM with mode: $(MODE)" $(VAGRANT_CMD) up setup: @@ -15,7 +14,7 @@ setup: else \ echo "Hosts entries already present."; \ fi - @echo "Starting Vagrant VM using $(VAGRANT_FILE)..." + @echo "Starting Vagrant VM with mode: $(MODE)" $(VAGRANT_CMD) up into: diff --git a/p2/Vagrantfile b/p2/Vagrantfile index 65973cd..f57f22a 100644 --- a/p2/Vagrantfile +++ b/p2/Vagrantfile @@ -1,5 +1,7 @@ LOGIN = "lyeh" +MODE = ENV.fetch("MODE", "ingress").downcase + Vagrant.configure("2") do |config| config.vm.box = "debian/bookworm64" config.vm.provider "virtualbox" do |vb| @@ -16,7 +18,7 @@ Vagrant.configure("2") do |config| srv.vm.hostname = "#{LOGIN}S" srv.vm.network "private_network", ip: "192.168.56.110" - srv.vm.provision "shell", path: "tools/k3s_server.sh", args: ["192.168.56.110"] + srv.vm.provision "shell", path: "tools/k3s_server.sh", args: ["192.168.56.110", MODE] end end diff --git a/p2/Vagrantfile.ingress b/p2/Vagrantfile.ingress deleted file mode 100644 index 8796100..0000000 --- a/p2/Vagrantfile.ingress +++ /dev/null @@ -1,24 +0,0 @@ -LOGIN = "vhappenh" - -Vagrant.configure("2") do |config| - config.vm.box = "debian/bookworm64" - - config.vm.box_check_update = false - - config.vm.define "k3s-server" do |srv| - srv.vm.hostname = "#{LOGIN}S" - srv.vm.network "private_network", ip: "192.168.56.110" - - srv.vm.provider "virtualbox" do |vb| - vb.memory = 2048 - vb.cpus = 2 - end - - srv.vm.provision "shell", inline: <<-SHELL - apt-get update -y - apt-get install -y curl - SHELL - - srv.vm.provision "shell", path: "tools/k3s_master_ingress.sh", args: ["192.168.56.110"] - end -end diff --git a/p2/manifests/apps/app1/deploy.yaml b/p2/manifests/apps/app1/deploy.yaml deleted file mode 100644 index f1fae61..0000000 --- a/p2/manifests/apps/app1/deploy.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# manifest/apps/app1/deploy.yaml -apiVersion: apps/v1 -kind: Deployment -metadata: - name: app-one - namespace: application -spec: - replicas: 1 - selector: - matchLabels: - app: app-one - template: - metadata: - labels: - app: app-one - spec: - containers: - - name: nginx - image: nginx:alpine - ports: - - containerPort: 80 - volumeMounts: - - name: html-volume - mountPath: /usr/share/nginx/html - volumes: - - name: html-volume - configMap: - name: app1-html - ---- - -apiVersion: v1 -kind: Service -metadata: - name: app-one - namespace: application -spec: - selector: - app: app-one - ports: - - port: 80 - targetPort: 80 diff --git a/p2/manifests/apps/app1/html.yaml b/p2/manifests/apps/app1/html.yaml deleted file mode 100644 index ca92343..0000000 --- a/p2/manifests/apps/app1/html.yaml +++ /dev/null @@ -1,12 +0,0 @@ -# manifest/apps/app1/html.yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: app1-html - namespace: application -data: - index.html: | - - - app1 - diff --git a/p2/manifests/apps/app1/kustomization.yaml b/p2/manifests/apps/app1/kustomization.yaml deleted file mode 100644 index c9c8aaa..0000000 --- a/p2/manifests/apps/app1/kustomization.yaml +++ /dev/null @@ -1,7 +0,0 @@ -# manifest/apps/app1/kustomization.yaml -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization -resources: - - html.yaml - - route.yaml - - deploy.yaml diff --git a/p2/manifests/apps/app2/deploy.yaml b/p2/manifests/apps/app2/deploy.yaml deleted file mode 100644 index 1834de1..0000000 --- a/p2/manifests/apps/app2/deploy.yaml +++ /dev/null @@ -1,40 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: app-two - namespace: application -spec: - replicas: 3 - selector: - matchLabels: - app: app-two - template: - metadata: - labels: - app: app-two - spec: - containers: - - name: nginx - image: nginx:alpine - ports: - - containerPort: 80 - volumeMounts: - - name: html-volume - mountPath: /usr/share/nginx/html - volumes: - - name: html-volume - configMap: - name: app2-html ---- - -apiVersion: v1 -kind: Service -metadata: - name: app-two - namespace: application -spec: - selector: - app: app-two - ports: - - port: 80 - targetPort: 80 diff --git a/p2/manifests/apps/app2/html.yaml b/p2/manifests/apps/app2/html.yaml deleted file mode 100644 index da3b0b8..0000000 --- a/p2/manifests/apps/app2/html.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: app2-html - namespace: application -data: - index.html: | - - - app2 - diff --git a/p2/manifests/apps/app2/kustomization.yaml b/p2/manifests/apps/app2/kustomization.yaml deleted file mode 100644 index dc0f4a2..0000000 --- a/p2/manifests/apps/app2/kustomization.yaml +++ /dev/null @@ -1,6 +0,0 @@ -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization -resources: - - html.yaml - - route.yaml - - deploy.yaml diff --git a/p2/manifests/apps/app3/deploy.yaml b/p2/manifests/apps/app3/deploy.yaml deleted file mode 100644 index 0d57b5f..0000000 --- a/p2/manifests/apps/app3/deploy.yaml +++ /dev/null @@ -1,40 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: app-three - namespace: application -spec: - replicas: 1 - selector: - matchLabels: - app: app-three - template: - metadata: - labels: - app: app-three - spec: - containers: - - name: nginx - image: nginx:alpine - ports: - - containerPort: 80 - volumeMounts: - - name: html-volume - mountPath: /usr/share/nginx/html - volumes: - - name: html-volume - configMap: - name: app3-html ---- - -apiVersion: v1 -kind: Service -metadata: - name: app-three - namespace: application -spec: - selector: - app: app-three - ports: - - port: 80 - targetPort: 80 diff --git a/p2/manifests/apps/app3/html.yaml b/p2/manifests/apps/app3/html.yaml deleted file mode 100644 index 6a11bbf..0000000 --- a/p2/manifests/apps/app3/html.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: app3-html - namespace: application -data: - index.html: | - - - app3 - diff --git a/p2/manifests/apps/app3/kustomization.yaml b/p2/manifests/apps/app3/kustomization.yaml deleted file mode 100644 index dc0f4a2..0000000 --- a/p2/manifests/apps/app3/kustomization.yaml +++ /dev/null @@ -1,6 +0,0 @@ -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization -resources: - - html.yaml - - route.yaml - - deploy.yaml diff --git a/p2/manifests/kustomization.yaml b/p2/manifests/kustomization.yaml deleted file mode 100644 index 3d25e42..0000000 --- a/p2/manifests/kustomization.yaml +++ /dev/null @@ -1,8 +0,0 @@ -# manifest/kustomization.yaml -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization -resources: - - gateway/ - - apps/app1/ - - apps/app2/ - - apps/app3/ diff --git a/p2/manifests/apps/app1/route.yaml b/p2/manifests/overlays/gateway/app1-route.yaml similarity index 73% rename from p2/manifests/apps/app1/route.yaml rename to p2/manifests/overlays/gateway/app1-route.yaml index b2025e4..54e6013 100644 --- a/p2/manifests/apps/app1/route.yaml +++ b/p2/manifests/overlays/gateway/app1-route.yaml @@ -1,13 +1,10 @@ -# manifest/apps/app1/route.yaml apiVersion: gateway.networking.k8s.io/v1 kind: HTTPRoute metadata: name: app1-route - namespace: application spec: parentRefs: - name: web - namespace: application sectionName: http hostnames: ["app1.com"] rules: diff --git a/p2/manifests/apps/app2/route.yaml b/p2/manifests/overlays/gateway/app2-route.yaml similarity index 81% rename from p2/manifests/apps/app2/route.yaml rename to p2/manifests/overlays/gateway/app2-route.yaml index 7f3efa4..57d1e6d 100644 --- a/p2/manifests/apps/app2/route.yaml +++ b/p2/manifests/overlays/gateway/app2-route.yaml @@ -2,11 +2,9 @@ apiVersion: gateway.networking.k8s.io/v1 kind: HTTPRoute metadata: name: app2-route - namespace: application spec: parentRefs: - name: web - namespace: application sectionName: http hostnames: ["app2.com"] rules: diff --git a/p2/manifests/apps/app3/route.yaml b/p2/manifests/overlays/gateway/app3-route.yaml similarity index 79% rename from p2/manifests/apps/app3/route.yaml rename to p2/manifests/overlays/gateway/app3-route.yaml index a5164d5..cb6124c 100644 --- a/p2/manifests/apps/app3/route.yaml +++ b/p2/manifests/overlays/gateway/app3-route.yaml @@ -2,11 +2,9 @@ apiVersion: gateway.networking.k8s.io/v1 kind: HTTPRoute metadata: name: app3-route - namespace: application spec: parentRefs: - name: web - namespace: application sectionName: http rules: - backendRefs: diff --git a/p2/manifests/gateway/gateway.yaml b/p2/manifests/overlays/gateway/gateway.yaml similarity index 91% rename from p2/manifests/gateway/gateway.yaml rename to p2/manifests/overlays/gateway/gateway.yaml index 3429c4a..ddc33a9 100644 --- a/p2/manifests/gateway/gateway.yaml +++ b/p2/manifests/overlays/gateway/gateway.yaml @@ -3,7 +3,6 @@ apiVersion: gateway.networking.k8s.io/v1 kind: Gateway metadata: name: web - namespace: application spec: gatewayClassName: traefik listeners: diff --git a/p2/manifests/gateway/kustomization.yaml b/p2/manifests/overlays/gateway/kustomization.yaml similarity index 63% rename from p2/manifests/gateway/kustomization.yaml rename to p2/manifests/overlays/gateway/kustomization.yaml index 0d71ecf..3779f83 100644 --- a/p2/manifests/gateway/kustomization.yaml +++ b/p2/manifests/overlays/gateway/kustomization.yaml @@ -2,4 +2,8 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: + - ../../base - gateway.yaml + - app1-route.yaml + - app2-route.yaml + - app3-route.yaml diff --git a/p2/tools/k3s_server.sh b/p2/tools/k3s_server.sh index dbd29c4..a3b08ce 100755 --- a/p2/tools/k3s_server.sh +++ b/p2/tools/k3s_server.sh @@ -1,9 +1,17 @@ #!/usr/bin/env bash set -euo pipefail IP=${1:?provide server IP} +MODE_IN=${2:-ingress} + +shopt -s nocasematch +case "${MODE_IN}" in + gwa|gw|gateway) MODE="gateway" ;; + ing|ingress) MODE="ingress" ;; + *) MODE="ingress" ;; +esac +shopt -u nocasematch GWA_VER="v1.3.0" -TRAEFIK_NS="application" echo "▶️ 1. Install k3s without built-in Traefik" curl -sfL https://get.k3s.io | \ @@ -33,7 +41,7 @@ helm uninstall traefik -n kube-system || true helm version --short helm repo add traefik https://traefik.github.io/charts && helm repo update helm upgrade --install traefik traefik/traefik \ - --namespace "${TRAEFIK_NS}" --create-namespace --wait \ + --create-namespace --wait \ --set providers.kubernetesGateway.enabled=true \ --set providers.kubernetesIngress.enabled=true \ --set ingressClass.enabled=true \ @@ -45,7 +53,7 @@ helm upgrade --install traefik traefik/traefik \ --set gateway.enabled=false echo "▶️ 6. Wait for Traefik to be Ready" -kubectl rollout status deploy/traefik -n ${TRAEFIK_NS} --timeout=180s +kubectl rollout status deploy/traefik --timeout=180s -echo "▶️ 7. Apply GatewayClass/Gateway and routes" -kubectl apply -k /vagrant/manifests # your app + HTTPRoutes +echo "▶️ 7. Apply manifests overlays (${MODE})" +kubectl apply -k /vagrant/manifests/overlays/${MODE}