Skip to content

Commit ba86b83

Browse files
feat(tn): add gateway network policy (#129)
allow tenant gateway to reach gateway operator
1 parent ae6c013 commit ba86b83

3 files changed

Lines changed: 58 additions & 2 deletions

File tree

charts/charts/tenant-namespace/Chart.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ apiVersion: v2
22
type: application
33
description: Chart for setting up a tenants namespace with all the goodies
44
name: tenant-namespace
5-
version: 0.9.3
5+
version: 0.9.4
66
appVersion: "1.0"
77
dependencies:
88
- name: magic-namespace
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
{{- if (and .Values.gateway.enabled .Values.gateway.networkPolicy.enabled (eq .Values.gateway.deploymentMode "tenant")) }}
2+
apiVersion: networking.k8s.io/v1
3+
kind: NetworkPolicy
4+
metadata:
5+
name: tenant-gateway
6+
namespace: {{ .Values.magicnamespace.namespace }}
7+
labels:
8+
{{- include "namespace.labels" . | nindent 4 }}
9+
spec:
10+
podSelector:
11+
matchLabels:
12+
gateway.networking.k8s.io/gateway-name: {{ template "namespace.gatewayName" . }}
13+
policyTypes:
14+
- Egress
15+
egress:
16+
- to:
17+
# Allow envoy to reach gateway operator
18+
- namespaceSelector:
19+
matchLabels:
20+
kubernetes.io/metadata.name: {{ default "envoy-gateway-system" .Values.gateway.networkPolicy.envoyGateway.operatorNamespace }}
21+
podSelector:
22+
matchLabels:
23+
{{- if .Values.gateway.networkPolicy.envoyGateway.operatorPodMatchLabels }}
24+
{{ toYaml .Values.gateway.networkPolicy.envoyGateway.operatorPodMatchLabels | nindent 10 }}
25+
{{- else }}
26+
app.kubernetes.io/name: gateway-helm
27+
{{- end }}
28+
ports:
29+
- port: {{ default 18000 .Values.gateway.networkPolicy.envoyGateway.operatorPort }}
30+
{{- if .Values.gateway.networkPolicy.envoyGateway.rateLimitEnabled }}
31+
# Allow envoy to reach ratelimit deployment
32+
- to:
33+
- namespaceSelector:
34+
matchLabels:
35+
kubernetes.io/metadata.name: {{ default "envoy-gateway-system" .Values.gateway.networkPolicy.envoyGateway.operatorNamespace }}
36+
podSelector:
37+
matchLabels:
38+
{{- if .Values.gateway.networkPolicy.envoyGateway.rateLimitPodMatchLabels }}
39+
{{ toYaml .Values.gateway.networkPolicy.envoyGateway.rateLimitPodMatchLabels | nindent 10 }}
40+
{{- else }}
41+
app.kubernetes.io/name: envoy-ratelimit
42+
{{- end }}
43+
ports:
44+
- port: {{ default 8081 .Values.gateway.networkPolicy.envoyGateway.rateLimitPort }}
45+
{{- end }}
46+
{{- end }}

charts/charts/tenant-namespace/values.yaml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,17 @@ gateway:
123123
# group: gateway.envoyproxy.io
124124
# kind: EnvoyProxy
125125
# name: project-gateway
126-
126+
networkPolicy:
127+
enabled: false
128+
envoyGateway: {}
129+
# operatorNamespace: envoy-gateway-system
130+
# operatorPort: 18000
131+
# operatorPodMatchLabels:
132+
# app.kubernetes.io/name: gateway-helm
133+
# rateLimitEnabled: false
134+
# rateLimitPort: 8081
135+
# rateLimitPodMatchLabels:
136+
# app.kubernetes.io/name: envoy-ratelimit
127137

128138
quota:
129139
enabled: true

0 commit comments

Comments
 (0)