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}