mirror of
				https://github.com/optim-enterprises-bv/homelab.git
				synced 2025-10-31 01:47:53 +00:00 
			
		
		
		
	feat: add Gateway API and Gateways
This commit is contained in:
		| @@ -48,6 +48,10 @@ kubectl kustomize --enable-helm infra/storage | kubectl apply -f - | |||||||
| kubectl kustomize --enable-helm infra/controllers | kubectl apply -f - | kubectl kustomize --enable-helm infra/controllers | kubectl apply -f - | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
|  | ```shell | ||||||
|  | kubectl kustomize --enable-helm infra | kubectl apply -f - | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  |  | ||||||
| # SBOM | # SBOM | ||||||
|  |  | ||||||
| @@ -56,6 +60,12 @@ kubectl kustomize --enable-helm infra/controllers | kubectl apply -f - | |||||||
| * [x] Argo CD | * [x] Argo CD | ||||||
| * [x] Proxmox CSI Plugin | * [x] Proxmox CSI Plugin | ||||||
| * [x] Cert-manager | * [x] Cert-manager | ||||||
| * [] Gateway | * [X] Gateway | ||||||
| * [] CNPG | * [] CNPG | ||||||
| * [] Authentication (Keycloak, Authentik, ...) | * [] Authentication (Keycloak, Authentik, ...) | ||||||
|  |  | ||||||
|  | # CRDs | ||||||
|  |  | ||||||
|  | * [] Gateway | ||||||
|  | * [] Argo CD | ||||||
|  | * [] Sealed-secrets | ||||||
| @@ -9,9 +9,9 @@ spec: | |||||||
|   generators: |   generators: | ||||||
|     - git: |     - git: | ||||||
|         repoURL: https://github.com/vehagn/homelab |         repoURL: https://github.com/vehagn/homelab | ||||||
|         revision: HEAD |         revision: remodel | ||||||
|         directories: |         directories: | ||||||
|           - path: remodel/infra/* |           - path: remodel/k8s/infra/* | ||||||
|   template: |   template: | ||||||
|     metadata: |     metadata: | ||||||
|       name: '{{ path.basename }}' |       name: '{{ path.basename }}' | ||||||
| @@ -21,7 +21,7 @@ spec: | |||||||
|       project: infrastructure |       project: infrastructure | ||||||
|       source: |       source: | ||||||
|         repoURL: https://github.com/vehagn/homelab |         repoURL: https://github.com/vehagn/homelab | ||||||
|         targetRevision: HEAD |         targetRevision: remodel | ||||||
|         path: '{{ path }}' |         path: '{{ path }}' | ||||||
|       destination: |       destination: | ||||||
|         name: in-cluster |         name: in-cluster | ||||||
|   | |||||||
| @@ -9,9 +9,9 @@ spec: | |||||||
|   generators: |   generators: | ||||||
|     - git: |     - git: | ||||||
|         repoURL: https://github.com/vehagn/homelab |         repoURL: https://github.com/vehagn/homelab | ||||||
|         revision: HEAD |         revision: remodel | ||||||
|         directories: |         directories: | ||||||
|           - path: remodel/infra/network/* |           - path: remodel/k8s/infra/network/* | ||||||
|   template: |   template: | ||||||
|     metadata: |     metadata: | ||||||
|       name: '{{ path.basename }}' |       name: '{{ path.basename }}' | ||||||
| @@ -23,7 +23,7 @@ spec: | |||||||
|         plugin: |         plugin: | ||||||
|           name: kustomize-build-with-helm |           name: kustomize-build-with-helm | ||||||
|         repoURL: https://github.com/vehagn/homelab |         repoURL: https://github.com/vehagn/homelab | ||||||
|         targetRevision: HEAD |         targetRevision: remodel | ||||||
|         path: '{{ path }}' |         path: '{{ path }}' | ||||||
|       destination: |       destination: | ||||||
|         name: in-cluster |         name: in-cluster | ||||||
|   | |||||||
							
								
								
									
										12
									
								
								remodel/k8s/infra/network/gateway/cloudflare-api-token.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								remodel/k8s/infra/network/gateway/cloudflare-api-token.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | |||||||
|  | apiVersion: bitnami.com/v1alpha1 | ||||||
|  | kind: SealedSecret | ||||||
|  | metadata: | ||||||
|  |   name: cloudflare-api-token | ||||||
|  |   namespace: gateway | ||||||
|  | spec: | ||||||
|  |   encryptedData: | ||||||
|  |     api-token: AgCmFZ1eCTYUq41kgZUVr0QjzppHOh/O9frkrupm6WT+QWIaMCK3qq0XmnHWox1K1SHhmix4I4TBzMuvKd8MR2SaI4lfdD4DrNoxpKOKyIKcWWiwz2Lw6CTqTr6Wa+7Iyh5qk2jna20pnGzhp4e0YMwBrVCcelpH/TiZtzXY3FrSnv2+YiPsOR+cohv1OV2E9hUbbHMJGwJQsjVGwTaw1gmEKJIVpMaR86coM7J+5NIoEuG1LeV4ZaqxDG2oQ21V2OBv8gFsO1IrlP17PTKX1Uzvw18Xcvt5ybWQIuXJM8A+0YxwEYUDYj7FyYeDIhKwo/IyUWQKMHu0MKkLMcJ7dHI7fNGH8olvR1ZcTNvtiswa7Fx3c8c70V9Ldw1B09tj+hVfv8hoW6B8uX9C8QDaGY5dlKZr0u2rswK5UVwrgnpdVZt2kWSypqG9JJ8IdcR6OSxfixJpyKryQoK26lFSXHHLrqAvbF2uIyRbYa5q6wz7zUcdAEIAJ2cDLmZ5IFYzzTiDvlDBOUddnhOy2n76pUXDxH/4yKIYFMOZB+SkCFTh54ddbEkyW4or8UK+jzzp2SzRaW0cKj5QUbqSDu+yLm6RmTqpNrmNTjMNtQVOfFXBGm6aGS9Y61kEjIvmgTsKpla9k85RVeRiVy/tsngghp3mfIXzQHZZ4IzTuTya0zb7sJzyrOwqfPgnGZyt5RQZtYl8rG/09MkJgm1iVHdWd2Fd38SdcALXEX4Qpaf8Yk0fb9B2LrHWvmAT | ||||||
|  |   template: | ||||||
|  |     metadata: | ||||||
|  |       name: cloudflare-api-token | ||||||
|  |       namespace: gateway | ||||||
							
								
								
									
										18
									
								
								remodel/k8s/infra/network/gateway/cloudflare-issuer.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								remodel/k8s/infra/network/gateway/cloudflare-issuer.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | |||||||
|  | apiVersion: cert-manager.io/v1 | ||||||
|  | kind: Issuer | ||||||
|  | metadata: | ||||||
|  |   name: cloudflare-issuer | ||||||
|  |   namespace: gateway | ||||||
|  | spec: | ||||||
|  |   acme: | ||||||
|  |     server: https://acme-v02.api.letsencrypt.org/directory | ||||||
|  |     #server: https://acme-staging-v02.api.letsencrypt.org/directory | ||||||
|  |     email: veghag@gmail.com | ||||||
|  |     privateKeySecretRef: | ||||||
|  |       name: cloudflare-key | ||||||
|  |     solvers: | ||||||
|  |       - dns01: | ||||||
|  |           cloudflare: | ||||||
|  |             apiTokenSecretRef: | ||||||
|  |               name: cloudflare-api-token | ||||||
|  |               key: api-token | ||||||
							
								
								
									
										6
									
								
								remodel/k8s/infra/network/gateway/gateway-class.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								remodel/k8s/infra/network/gateway/gateway-class.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | |||||||
|  | apiVersion: gateway.networking.k8s.io/v1 | ||||||
|  | kind: GatewayClass | ||||||
|  | metadata: | ||||||
|  |   name: cilium | ||||||
|  | spec: | ||||||
|  |   controllerName: io.cilium/gateway-controller | ||||||
							
								
								
									
										24
									
								
								remodel/k8s/infra/network/gateway/gw-euclid.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								remodel/k8s/infra/network/gateway/gw-euclid.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | |||||||
|  | apiVersion: gateway.networking.k8s.io/v1 | ||||||
|  | kind: Gateway | ||||||
|  | metadata: | ||||||
|  |   name: euclid | ||||||
|  |   namespace: gateway | ||||||
|  |   annotations: | ||||||
|  |     cert-manager.io/issuer: cloudflare-issuer | ||||||
|  | spec: | ||||||
|  |   gatewayClassName: cilium | ||||||
|  |   infrastructure: | ||||||
|  |     annotations: | ||||||
|  |       io.cilium/lb-ipam-ips: 192.168.1.220 | ||||||
|  |   listeners: | ||||||
|  |     - protocol: HTTPS | ||||||
|  |       port: 443 | ||||||
|  |       name: https-gateway | ||||||
|  |       hostname: "*.euclid.stonegarden.dev" | ||||||
|  |       tls: | ||||||
|  |         certificateRefs: | ||||||
|  |           - kind: Secret | ||||||
|  |             name: cert-euclid | ||||||
|  |       allowedRoutes: | ||||||
|  |         namespaces: | ||||||
|  |           from: All | ||||||
							
								
								
									
										20
									
								
								remodel/k8s/infra/network/gateway/gw-proxmox.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								remodel/k8s/infra/network/gateway/gw-proxmox.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | |||||||
|  | apiVersion: gateway.networking.k8s.io/v1 | ||||||
|  | kind: Gateway | ||||||
|  | metadata: | ||||||
|  |   name: proxmox | ||||||
|  |   namespace: gateway | ||||||
|  | spec: | ||||||
|  |   gatewayClassName: cilium | ||||||
|  |   infrastructure: | ||||||
|  |     annotations: | ||||||
|  |       io.cilium/lb-ipam-ips: 192.168.1.221 | ||||||
|  |   listeners: | ||||||
|  |     - protocol: TLS | ||||||
|  |       port: 443 | ||||||
|  |       name: proxmox-tls-passthrough | ||||||
|  |       hostname: "proxmox.euclid.stonegarden.dev" | ||||||
|  |       tls: | ||||||
|  |         mode: Passthrough | ||||||
|  |       allowedRoutes: | ||||||
|  |         namespaces: | ||||||
|  |           from: All | ||||||
							
								
								
									
										24
									
								
								remodel/k8s/infra/network/gateway/gw-stonegarden.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								remodel/k8s/infra/network/gateway/gw-stonegarden.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | |||||||
|  | apiVersion: gateway.networking.k8s.io/v1 | ||||||
|  | kind: Gateway | ||||||
|  | metadata: | ||||||
|  |   name: stonegarden | ||||||
|  |   namespace: gateway | ||||||
|  |   annotations: | ||||||
|  |     cert-manager.io/issuer: cloudflare-issuer | ||||||
|  | spec: | ||||||
|  |   gatewayClassName: cilium | ||||||
|  |   infrastructure: | ||||||
|  |     annotations: | ||||||
|  |       io.cilium/lb-ipam-ips: 192.168.1.222 | ||||||
|  |   listeners: | ||||||
|  |     - protocol: HTTPS | ||||||
|  |       port: 443 | ||||||
|  |       name: https-gateway | ||||||
|  |       hostname: "*.stonegarden.dev" | ||||||
|  |       tls: | ||||||
|  |         certificateRefs: | ||||||
|  |           - kind: Secret | ||||||
|  |             name: cert-stonegarden | ||||||
|  |       allowedRoutes: | ||||||
|  |         namespaces: | ||||||
|  |           from: All | ||||||
							
								
								
									
										12
									
								
								remodel/k8s/infra/network/gateway/kustomization.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								remodel/k8s/infra/network/gateway/kustomization.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | |||||||
|  | apiVersion: kustomize.config.k8s.io/v1beta1 | ||||||
|  | kind: Kustomization | ||||||
|  |  | ||||||
|  | resources: | ||||||
|  |   - https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.0.0/experimental-install.yaml | ||||||
|  |   - gateway-class.yaml | ||||||
|  |   - ns.yaml | ||||||
|  |   - cloudflare-api-token.yaml | ||||||
|  |   - cloudflare-issuer.yaml | ||||||
|  |   - gw-euclid.yaml | ||||||
|  | #  - gw-proxmox.yaml | ||||||
|  |   - gw-stonegarden.yaml | ||||||
							
								
								
									
										4
									
								
								remodel/k8s/infra/network/gateway/ns.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								remodel/k8s/infra/network/gateway/ns.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | apiVersion: v1 | ||||||
|  | kind: Namespace | ||||||
|  | metadata: | ||||||
|  |   name: gateway | ||||||
| @@ -5,7 +5,7 @@ metadata: | |||||||
|   namespace: argocd |   namespace: argocd | ||||||
| spec: | spec: | ||||||
|   sourceRepos: |   sourceRepos: | ||||||
|     - 'https://gitlab.com/vehagn/mini-homelab.git' |     - 'https://github.com/vehagn/homelab' | ||||||
|     - 'https://prometheus-community.github.io/helm-charts' |     - 'https://prometheus-community.github.io/helm-charts' | ||||||
|     - 'https://argoproj.github.io/argo-helm' |     - 'https://argoproj.github.io/argo-helm' | ||||||
|   destinations: |   destinations: | ||||||
| @@ -13,6 +13,8 @@ spec: | |||||||
|       server: '*' |       server: '*' | ||||||
|     - namespace: 'argocd' |     - namespace: 'argocd' | ||||||
|       server: '*' |       server: '*' | ||||||
|  |     - namespace: 'cilium-secrets' | ||||||
|  |       server: '*' | ||||||
|     - namespace: 'cloudflared' |     - namespace: 'cloudflared' | ||||||
|       server: '*' |       server: '*' | ||||||
|     - namespace: 'gateway' |     - namespace: 'gateway' | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Vegard Hagen
					Vegard Hagen