feat: support public/private gateway

This commit is contained in:
Morten Olsen
2025-12-29 10:27:40 +01:00
parent 42d0fe6050
commit e22ba25b7e
19 changed files with 194 additions and 116 deletions

View File

@@ -1,11 +0,0 @@
apiVersion: homelab.mortenolsen.pro/v1
kind: ExternalHttpService
metadata:
name: '{{ .Release.Name }}'
spec:
environment: '{{ .Values.globals.environment }}'
subdomain: '{{ .Values.subdomain }}'
destination:
host: '{{ .Release.Name }}.{{ .Release.Namespace }}.svc.cluster.local'
port:
number: 80

View File

@@ -1,11 +1,11 @@
apiVersion: networking.istio.io/v1 apiVersion: networking.istio.io/v1
kind: VirtualService kind: VirtualService
metadata: metadata:
name: "{{ .Release.Name }}" name: "{{ .Release.Name }}-public"
namespace: "{{ .Release.Namespace }}" namespace: "{{ .Release.Namespace }}"
spec: spec:
gateways: gateways:
- "{{ .Values.globals.istio.gateway }}" - "{{ .Values.globals.istio.gateways.public }}"
- mesh - mesh
hosts: hosts:
- "{{ .Values.subdomain }}.{{ .Values.globals.domain }}" - "{{ .Values.subdomain }}.{{ .Values.globals.domain }}"
@@ -16,3 +16,24 @@ spec:
host: "{{ .Release.Name }}" host: "{{ .Release.Name }}"
port: port:
number: 80 number: 80
---
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
name: "{{ .Release.Name }}-private"
namespace: "{{ .Release.Namespace }}"
spec:
gateways:
- "{{ .Values.globals.istio.gateways.private }}"
- mesh
hosts:
- "{{ .Values.subdomain }}.{{ .Values.globals.domain }}"
- mesh
http:
- route:
- destination:
host: "{{ .Release.Name }}"
port:
number: 80

View File

@@ -1,11 +0,0 @@
apiVersion: homelab.mortenolsen.pro/v1
kind: ExternalHttpService
metadata:
name: '{{ .Release.Name }}'
spec:
environment: '{{ .Values.globals.environment }}'
subdomain: '{{ .Values.subdomain }}'
destination:
host: '{{ .Release.Name }}.{{ .Release.Namespace }}.svc.cluster.local'
port:
number: 80

View File

@@ -1,18 +0,0 @@
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
name: "{{ .Release.Name }}"
namespace: "{{ .Release.Namespace }}"
spec:
gateways:
- "{{ .Values.globals.istio.gateway }}"
- mesh
hosts:
- "{{ .Values.subdomain }}.{{ .Values.globals.domain }}"
- mesh
http:
- route:
- destination:
host: "{{ .Release.Name }}"
port:
number: 80

View File

@@ -1,11 +1,11 @@
apiVersion: networking.istio.io/v1 apiVersion: networking.istio.io/v1
kind: VirtualService kind: VirtualService
metadata: metadata:
name: "{{ .Release.Name }}" name: "{{ .Release.Name }}-public"
namespace: "{{ .Release.Namespace }}" namespace: "{{ .Release.Namespace }}"
spec: spec:
gateways: gateways:
- "{{ .Values.globals.istio.gateway }}" - "{{ .Values.globals.istio.gateways.public }}"
- mesh - mesh
hosts: hosts:
- "{{ .Values.subdomain }}.{{ .Values.globals.domain }}" - "{{ .Values.subdomain }}.{{ .Values.globals.domain }}"
@@ -16,3 +16,24 @@ spec:
host: "{{ .Release.Name }}" host: "{{ .Release.Name }}"
port: port:
number: 80 number: 80
---
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
name: "{{ .Release.Name }}-private"
namespace: "{{ .Release.Namespace }}"
spec:
gateways:
- "{{ .Values.globals.istio.gateways.private }}"
- mesh
hosts:
- "{{ .Values.subdomain }}.{{ .Values.globals.domain }}"
- mesh
http:
- route:
- destination:
host: "{{ .Release.Name }}"
port:
number: 80

View File

@@ -1,11 +0,0 @@
apiVersion: homelab.mortenolsen.pro/v1
kind: ExternalHttpService
metadata:
name: '{{ .Release.Name }}'
spec:
environment: '{{ .Values.globals.environment }}'
subdomain: '{{ .Values.subdomain }}'
destination:
host: '{{ .Release.Name }}.{{ .Release.Namespace }}.svc.cluster.local'
port:
number: 80

View File

@@ -1,11 +1,11 @@
apiVersion: networking.istio.io/v1 apiVersion: networking.istio.io/v1
kind: VirtualService kind: VirtualService
metadata: metadata:
name: "{{ .Release.Name }}" name: "{{ .Release.Name }}-public"
namespace: "{{ .Release.Namespace }}" namespace: "{{ .Release.Namespace }}"
spec: spec:
gateways: gateways:
- "{{ .Values.globals.istio.gateway }}" - "{{ .Values.globals.istio.gateways.public }}"
- mesh - mesh
hosts: hosts:
- "{{ .Values.subdomain }}.{{ .Values.globals.domain }}" - "{{ .Values.subdomain }}.{{ .Values.globals.domain }}"
@@ -16,3 +16,24 @@ spec:
host: "{{ .Release.Name }}" host: "{{ .Release.Name }}"
port: port:
number: 80 number: 80
---
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
name: "{{ .Release.Name }}-private"
namespace: "{{ .Release.Namespace }}"
spec:
gateways:
- "{{ .Values.globals.istio.gateways.private }}"
- mesh
hosts:
- "{{ .Values.subdomain }}.{{ .Values.globals.domain }}"
- mesh
http:
- route:
- destination:
host: "{{ .Release.Name }}"
port:
number: 80

View File

@@ -1,11 +0,0 @@
apiVersion: homelab.mortenolsen.pro/v1
kind: ExternalHttpService
metadata:
name: '{{ .Release.Name }}'
spec:
environment: '{{ .Values.globals.environment }}'
subdomain: '{{ .Values.subdomain }}'
destination:
host: '{{ .Release.Name }}.{{ .Release.Namespace }}.svc.cluster.local'
port:
number: 80

View File

@@ -1,11 +1,11 @@
apiVersion: networking.istio.io/v1 apiVersion: networking.istio.io/v1
kind: VirtualService kind: VirtualService
metadata: metadata:
name: "{{ .Release.Name }}" name: "{{ .Release.Name }}-public"
namespace: "{{ .Release.Namespace }}" namespace: "{{ .Release.Namespace }}"
spec: spec:
gateways: gateways:
- "{{ .Values.globals.istio.gateway }}" - "{{ .Values.globals.istio.gateways.public }}"
- mesh - mesh
hosts: hosts:
- "{{ .Values.subdomain }}.{{ .Values.globals.domain }}" - "{{ .Values.subdomain }}.{{ .Values.globals.domain }}"
@@ -16,3 +16,24 @@ spec:
host: "{{ .Release.Name }}" host: "{{ .Release.Name }}"
port: port:
number: 80 number: 80
---
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
name: "{{ .Release.Name }}-private"
namespace: "{{ .Release.Namespace }}"
spec:
gateways:
- "{{ .Values.globals.istio.gateways.private }}"
- mesh
hosts:
- "{{ .Values.subdomain }}.{{ .Values.globals.domain }}"
- mesh
http:
- route:
- destination:
host: "{{ .Release.Name }}"
port:
number: 80

View File

@@ -1,11 +0,0 @@
apiVersion: homelab.mortenolsen.pro/v1
kind: ExternalHttpService
metadata:
name: '{{ .Release.Name }}'
spec:
environment: '{{ .Values.globals.environment }}'
subdomain: '{{ .Values.subdomain }}'
destination:
host: '{{ .Release.Name }}.{{ .Release.Namespace }}.svc.cluster.local'
port:
number: 80

View File

@@ -1,11 +1,11 @@
apiVersion: networking.istio.io/v1 apiVersion: networking.istio.io/v1
kind: VirtualService kind: VirtualService
metadata: metadata:
name: "{{ .Release.Name }}" name: "{{ .Release.Name }}-public"
namespace: "{{ .Release.Namespace }}" namespace: "{{ .Release.Namespace }}"
spec: spec:
gateways: gateways:
- "{{ .Values.globals.istio.gateway }}" - "{{ .Values.globals.istio.gateways.public }}"
- mesh - mesh
hosts: hosts:
- "{{ .Values.subdomain }}.{{ .Values.globals.domain }}" - "{{ .Values.subdomain }}.{{ .Values.globals.domain }}"
@@ -16,3 +16,24 @@ spec:
host: "{{ .Release.Name }}" host: "{{ .Release.Name }}"
port: port:
number: 80 number: 80
---
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
name: "{{ .Release.Name }}-private"
namespace: "{{ .Release.Namespace }}"
spec:
gateways:
- "{{ .Values.globals.istio.gateways.private }}"
- mesh
hosts:
- "{{ .Values.subdomain }}.{{ .Values.globals.domain }}"
- mesh
http:
- route:
- destination:
host: "{{ .Release.Name }}"
port:
number: 80

View File

@@ -1,11 +1,11 @@
apiVersion: networking.istio.io/v1 apiVersion: networking.istio.io/v1
kind: VirtualService kind: VirtualService
metadata: metadata:
name: "{{ .Release.Name }}" name: "{{ .Release.Name }}-private"
namespace: "{{ .Release.Namespace }}" namespace: "{{ .Release.Namespace }}"
spec: spec:
gateways: gateways:
- "{{ .Values.globals.istio.gateway }}" - "{{ .Values.globals.istio.gateways.private }}"
- mesh - mesh
hosts: hosts:
- "{{ .Values.subdomain }}.{{ .Values.globals.domain }}" - "{{ .Values.subdomain }}.{{ .Values.globals.domain }}"
@@ -16,3 +16,4 @@ spec:
host: "{{ .Release.Name }}" host: "{{ .Release.Name }}"
port: port:
number: 80 number: 80

View File

@@ -1,11 +1,11 @@
apiVersion: networking.istio.io/v1 apiVersion: networking.istio.io/v1
kind: VirtualService kind: VirtualService
metadata: metadata:
name: "{{ .Release.Name }}" name: "{{ .Release.Name }}-private"
namespace: "{{ .Release.Namespace }}" namespace: "{{ .Release.Namespace }}"
spec: spec:
gateways: gateways:
- "{{ .Values.globals.istio.gateway }}" - "{{ .Values.globals.istio.gateways.private }}"
- mesh - mesh
hosts: hosts:
- "{{ .Values.subdomain }}.{{ .Values.globals.domain }}" - "{{ .Values.subdomain }}.{{ .Values.globals.domain }}"
@@ -16,3 +16,4 @@ spec:
host: "{{ .Release.Name }}" host: "{{ .Release.Name }}"
port: port:
number: 80 number: 80

View File

@@ -1,11 +0,0 @@
apiVersion: homelab.mortenolsen.pro/v1
kind: ExternalHttpService
metadata:
name: "{{ .Release.Name }}"
spec:
environment: "{{ .Values.globals.environment }}"
subdomain: "{{ .Values.subdomain }}"
destination:
host: "{{ .Release.Name }}.{{ .Release.Namespace }}.svc.cluster.local"
port:
number: 80

View File

@@ -1,11 +1,11 @@
apiVersion: networking.istio.io/v1 apiVersion: networking.istio.io/v1
kind: VirtualService kind: VirtualService
metadata: metadata:
name: "{{ .Release.Name }}" name: "{{ .Release.Name }}-public"
namespace: "{{ .Release.Namespace }}" namespace: "{{ .Release.Namespace }}"
spec: spec:
gateways: gateways:
- "{{ .Values.globals.istio.gateway }}" - "{{ .Values.globals.istio.gateways.public }}"
- mesh - mesh
hosts: hosts:
- "{{ .Values.subdomain }}.{{ .Values.globals.domain }}" - "{{ .Values.subdomain }}.{{ .Values.globals.domain }}"
@@ -16,3 +16,24 @@ spec:
host: "{{ .Release.Name }}" host: "{{ .Release.Name }}"
port: port:
number: 80 number: 80
---
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
name: "{{ .Release.Name }}-private"
namespace: "{{ .Release.Namespace }}"
spec:
gateways:
- "{{ .Values.globals.istio.gateways.private }}"
- mesh
hosts:
- "{{ .Values.subdomain }}.{{ .Values.globals.domain }}"
- mesh
http:
- route:
- destination:
host: "{{ .Release.Name }}"
port:
number: 80

View File

@@ -1,11 +0,0 @@
apiVersion: homelab.mortenolsen.pro/v1
kind: ExternalHttpService
metadata:
name: '{{ .Release.Name }}'
spec:
environment: '{{ .Values.globals.environment }}'
subdomain: '{{ .Values.subdomain }}'
destination:
host: '{{ .Release.Name }}.{{ .Release.Namespace }}.svc.cluster.local'
port:
number: 80

View File

@@ -1,11 +1,11 @@
apiVersion: networking.istio.io/v1 apiVersion: networking.istio.io/v1
kind: VirtualService kind: VirtualService
metadata: metadata:
name: "{{ .Release.Name }}" name: "{{ .Release.Name }}-public"
namespace: "{{ .Release.Namespace }}" namespace: "{{ .Release.Namespace }}"
spec: spec:
gateways: gateways:
- "{{ .Values.globals.istio.gateway }}" - "{{ .Values.globals.istio.gateways.public }}"
- mesh - mesh
hosts: hosts:
- "{{ .Values.subdomain }}.{{ .Values.globals.domain }}" - "{{ .Values.subdomain }}.{{ .Values.globals.domain }}"
@@ -16,3 +16,24 @@ spec:
host: "{{ .Release.Name }}" host: "{{ .Release.Name }}"
port: port:
number: 80 number: 80
---
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
name: "{{ .Release.Name }}-private"
namespace: "{{ .Release.Namespace }}"
spec:
gateways:
- "{{ .Values.globals.istio.gateways.private }}"
- mesh
hosts:
- "{{ .Values.subdomain }}.{{ .Values.globals.domain }}"
- mesh
http:
- route:
- destination:
host: "{{ .Release.Name }}"
port:
number: 80

View File

@@ -1,11 +1,11 @@
apiVersion: networking.istio.io/v1 apiVersion: networking.istio.io/v1
kind: VirtualService kind: VirtualService
metadata: metadata:
name: "{{ .Release.Name }}" name: "{{ .Release.Name }}-public"
namespace: "{{ .Release.Namespace }}" namespace: "{{ .Release.Namespace }}"
spec: spec:
gateways: gateways:
- "{{ .Values.globals.istio.gateway }}" - "{{ .Values.globals.istio.gateways.public }}"
- mesh - mesh
hosts: hosts:
- "{{ .Values.subdomain }}.{{ .Values.globals.domain }}" - "{{ .Values.subdomain }}.{{ .Values.globals.domain }}"
@@ -16,3 +16,24 @@ spec:
host: "{{ .Release.Name }}" host: "{{ .Release.Name }}"
port: port:
number: 80 number: 80
---
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
name: "{{ .Release.Name }}-private"
namespace: "{{ .Release.Namespace }}"
spec:
gateways:
- "{{ .Values.globals.istio.gateways.private }}"
- mesh
hosts:
- "{{ .Values.subdomain }}.{{ .Values.globals.domain }}"
- mesh
http:
- route:
- destination:
host: "{{ .Release.Name }}"
port:
number: 80

View File

@@ -8,5 +8,8 @@ globals:
domain: olsen.cloud domain: olsen.cloud
timezone: Europe/Amsterdam timezone: Europe/Amsterdam
istio: istio:
gateway: istio-system/private gateway: shared/private
gateways:
private: shared/private
public: shared/public