From 0442f6cde7aa430d9bd4922ec494cd29a4f37cf3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gon=C3=A7alo=20Rodrigues?= Date: Sat, 20 Jun 2026 16:30:24 +0100 Subject: [PATCH] feat: add Skaffold for local k3d development MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Root skaffold.yaml composes all services; local profile auto-activates on k3d-homelab context (push: false, k3d image import); ci profile pushes to registry with git-commit tags - Per-service skaffold.yaml for per-service dev (run from service dir) - Add finance-api skaffold.yaml (was missing) - Deployment images use bare name (homelab/) — Skaffold substitutes the correct tagged image; no registry prefix needed for local dev - Add namespace: auth to all auth service manifests - Remove skaffold.yaml from .gitignore Co-Authored-By: Claude Sonnet 4.6 --- .gitignore | 2 -- .../auth/services/gateway/k8s/deployment.yaml | 3 +- .../services/gateway/k8s/ingress-home.yaml | 1 + apps/auth/services/gateway/k8s/ingress.yaml | 1 + .../auth/services/gateway/k8s/middleware.yaml | 1 + apps/auth/services/gateway/k8s/service.yaml | 1 + .../services/gateway/k8s/servicemonitor.yaml | 1 + apps/auth/services/gateway/skaffold.yaml | 28 +++++++++++++++++++ apps/auth/services/users/k8s/deployment.yaml | 3 +- apps/auth/services/users/k8s/service.yaml | 1 + .../services/users/k8s/servicemonitor.yaml | 1 + apps/auth/services/users/skaffold.yaml | 28 +++++++++++++++++++ apps/finance/services/api/k8s/deployment.yaml | 2 +- apps/finance/services/api/skaffold.yaml | 28 +++++++++++++++++++ .../example-service/k8s/deployment.yaml | 2 +- .../services/example-service/skaffold.yaml | 28 +++++++++++++++++++ skaffold.yaml | 20 +++++++++++++ 17 files changed, 145 insertions(+), 6 deletions(-) create mode 100644 apps/auth/services/gateway/skaffold.yaml create mode 100644 apps/auth/services/users/skaffold.yaml create mode 100644 apps/finance/services/api/skaffold.yaml create mode 100644 apps/test/services/example-service/skaffold.yaml create mode 100644 skaffold.yaml diff --git a/.gitignore b/.gitignore index 78e0a1e..4280f99 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,3 @@ -skaffold.yaml - # terraform *.tfstate* .terraform diff --git a/apps/auth/services/gateway/k8s/deployment.yaml b/apps/auth/services/gateway/k8s/deployment.yaml index afd1d61..bc74496 100644 --- a/apps/auth/services/gateway/k8s/deployment.yaml +++ b/apps/auth/services/gateway/k8s/deployment.yaml @@ -2,6 +2,7 @@ apiVersion: apps/v1 kind: Deployment metadata: + namespace: auth name: gateway labels: app: gateway @@ -19,7 +20,7 @@ spec: - name: gitea-registry containers: - name: gateway - image: git.homelab.local/homelab/gateway:latest + image: homelab/gateway imagePullPolicy: IfNotPresent ports: - name: http diff --git a/apps/auth/services/gateway/k8s/ingress-home.yaml b/apps/auth/services/gateway/k8s/ingress-home.yaml index 7b55a5c..1e35b9d 100644 --- a/apps/auth/services/gateway/k8s/ingress-home.yaml +++ b/apps/auth/services/gateway/k8s/ingress-home.yaml @@ -1,6 +1,7 @@ apiVersion: networking.k8s.io/v1 kind: Ingress metadata: + namespace: auth name: gateway-home annotations: traefik.ingress.kubernetes.io/router.middlewares: auth-forward-auth@kubernetescrd diff --git a/apps/auth/services/gateway/k8s/ingress.yaml b/apps/auth/services/gateway/k8s/ingress.yaml index 66f46e9..409ed51 100644 --- a/apps/auth/services/gateway/k8s/ingress.yaml +++ b/apps/auth/services/gateway/k8s/ingress.yaml @@ -1,6 +1,7 @@ apiVersion: networking.k8s.io/v1 kind: Ingress metadata: + namespace: auth name: gateway spec: ingressClassName: traefik diff --git a/apps/auth/services/gateway/k8s/middleware.yaml b/apps/auth/services/gateway/k8s/middleware.yaml index fdc79ac..f53db06 100644 --- a/apps/auth/services/gateway/k8s/middleware.yaml +++ b/apps/auth/services/gateway/k8s/middleware.yaml @@ -1,6 +1,7 @@ apiVersion: traefik.io/v1alpha1 kind: Middleware metadata: + namespace: auth name: forward-auth spec: forwardAuth: diff --git a/apps/auth/services/gateway/k8s/service.yaml b/apps/auth/services/gateway/k8s/service.yaml index bffa0a4..8565738 100644 --- a/apps/auth/services/gateway/k8s/service.yaml +++ b/apps/auth/services/gateway/k8s/service.yaml @@ -2,6 +2,7 @@ apiVersion: v1 kind: Service metadata: + namespace: auth name: gateway labels: app: gateway diff --git a/apps/auth/services/gateway/k8s/servicemonitor.yaml b/apps/auth/services/gateway/k8s/servicemonitor.yaml index 3e3669e..60251a2 100644 --- a/apps/auth/services/gateway/k8s/servicemonitor.yaml +++ b/apps/auth/services/gateway/k8s/servicemonitor.yaml @@ -1,6 +1,7 @@ apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: + namespace: auth name: gateway labels: release: kps diff --git a/apps/auth/services/gateway/skaffold.yaml b/apps/auth/services/gateway/skaffold.yaml new file mode 100644 index 0000000..1304393 --- /dev/null +++ b/apps/auth/services/gateway/skaffold.yaml @@ -0,0 +1,28 @@ +apiVersion: skaffold/v4beta13 +kind: Config +metadata: + name: gateway +build: + artifacts: + - image: homelab/gateway + context: ../../../../ + docker: + dockerfile: apps/auth/services/gateway/Dockerfile +manifests: + rawYaml: + - k8s/*.yaml +deploy: + kubectl: {} +profiles: + - name: local + activation: + - kubeContext: k3d-homelab + build: + local: + push: false + - name: ci + build: + local: + push: true + tagPolicy: + gitCommit: {} diff --git a/apps/auth/services/users/k8s/deployment.yaml b/apps/auth/services/users/k8s/deployment.yaml index 4f99947..ef9457c 100644 --- a/apps/auth/services/users/k8s/deployment.yaml +++ b/apps/auth/services/users/k8s/deployment.yaml @@ -2,6 +2,7 @@ apiVersion: apps/v1 kind: Deployment metadata: + namespace: auth name: users labels: app: users @@ -19,7 +20,7 @@ spec: - name: gitea-registry containers: - name: users - image: git.homelab.local/homelab/users:latest + image: homelab/users imagePullPolicy: IfNotPresent ports: - name: http diff --git a/apps/auth/services/users/k8s/service.yaml b/apps/auth/services/users/k8s/service.yaml index 0db7a67..5499cb2 100644 --- a/apps/auth/services/users/k8s/service.yaml +++ b/apps/auth/services/users/k8s/service.yaml @@ -2,6 +2,7 @@ apiVersion: v1 kind: Service metadata: + namespace: auth name: users labels: app: users diff --git a/apps/auth/services/users/k8s/servicemonitor.yaml b/apps/auth/services/users/k8s/servicemonitor.yaml index ad932ea..e06e9d7 100644 --- a/apps/auth/services/users/k8s/servicemonitor.yaml +++ b/apps/auth/services/users/k8s/servicemonitor.yaml @@ -1,6 +1,7 @@ apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: + namespace: auth name: users labels: release: kps diff --git a/apps/auth/services/users/skaffold.yaml b/apps/auth/services/users/skaffold.yaml new file mode 100644 index 0000000..900d142 --- /dev/null +++ b/apps/auth/services/users/skaffold.yaml @@ -0,0 +1,28 @@ +apiVersion: skaffold/v4beta13 +kind: Config +metadata: + name: users +build: + artifacts: + - image: homelab/users + context: ../../../../ + docker: + dockerfile: apps/auth/services/users/Dockerfile +manifests: + rawYaml: + - k8s/*.yaml +deploy: + kubectl: {} +profiles: + - name: local + activation: + - kubeContext: k3d-homelab + build: + local: + push: false + - name: ci + build: + local: + push: true + tagPolicy: + gitCommit: {} diff --git a/apps/finance/services/api/k8s/deployment.yaml b/apps/finance/services/api/k8s/deployment.yaml index df39e38..ea8c886 100644 --- a/apps/finance/services/api/k8s/deployment.yaml +++ b/apps/finance/services/api/k8s/deployment.yaml @@ -19,7 +19,7 @@ spec: - name: gitea-registry containers: - name: api - image: git.homelab.local/admin/finance-api:latest + image: homelab/finance-api imagePullPolicy: IfNotPresent ports: - name: http diff --git a/apps/finance/services/api/skaffold.yaml b/apps/finance/services/api/skaffold.yaml new file mode 100644 index 0000000..2e3447c --- /dev/null +++ b/apps/finance/services/api/skaffold.yaml @@ -0,0 +1,28 @@ +apiVersion: skaffold/v4beta13 +kind: Config +metadata: + name: finance-api +build: + artifacts: + - image: homelab/finance-api + context: ../../../../ + docker: + dockerfile: apps/finance/services/api/Dockerfile +manifests: + rawYaml: + - k8s/*.yaml +deploy: + kubectl: {} +profiles: + - name: local + activation: + - kubeContext: k3d-homelab + build: + local: + push: false + - name: ci + build: + local: + push: true + tagPolicy: + gitCommit: {} diff --git a/apps/test/services/example-service/k8s/deployment.yaml b/apps/test/services/example-service/k8s/deployment.yaml index f2bd90a..41aa462 100644 --- a/apps/test/services/example-service/k8s/deployment.yaml +++ b/apps/test/services/example-service/k8s/deployment.yaml @@ -20,7 +20,7 @@ spec: - name: gitea-registry containers: - name: example-service - image: git.homelab.local/homelab/example-service:latest + image: homelab/example-service imagePullPolicy: IfNotPresent ports: - name: http diff --git a/apps/test/services/example-service/skaffold.yaml b/apps/test/services/example-service/skaffold.yaml new file mode 100644 index 0000000..fb85126 --- /dev/null +++ b/apps/test/services/example-service/skaffold.yaml @@ -0,0 +1,28 @@ +apiVersion: skaffold/v4beta13 +kind: Config +metadata: + name: example-service +build: + artifacts: + - image: homelab/example-service + context: ../../../../ + docker: + dockerfile: apps/test/services/example-service/Dockerfile +manifests: + rawYaml: + - k8s/*.yaml +deploy: + kubectl: {} +profiles: + - name: local + activation: + - kubeContext: k3d-homelab + build: + local: + push: false + - name: ci + build: + local: + push: true + tagPolicy: + gitCommit: {} diff --git a/skaffold.yaml b/skaffold.yaml new file mode 100644 index 0000000..e800e2d --- /dev/null +++ b/skaffold.yaml @@ -0,0 +1,20 @@ +apiVersion: skaffold/v4beta13 +kind: Config +metadata: + name: homelab + +requires: + - path: apps/auth/services/gateway + configs: [gateway] + - path: apps/auth/services/users + configs: [users] + - path: apps/test/services/example-service + configs: [example-service] + - path: apps/finance/services/api + configs: [finance-api] + +profiles: + - name: local + activation: + - kubeContext: k3d-homelab + - name: ci