blob: 1d9155180ead296c1858c0e9b40374c28b505378 [file] [log] [blame]
Sketch🕴️6fffda22025-08-01 07:05:23 +04001apiVersion: v1
2kind: ConfigMap
3metadata:
4 name: {{ .Values.name }}
5 namespace: {{ .Release.Namespace }}
6data:
7 nginx.conf: |
Sketch🕴️55297d72025-08-01 07:35:39 +04008 {{ .Values.config | nindent 4 }}
Sketch🕴️6fffda22025-08-01 07:05:23 +04009---
Sketch🕴️0af70852025-08-01 12:24:44 +040010{{- if .Values.vpn.enabled }}
11apiVersion: v1
12kind: Secret
13metadata:
14 name: {{ .Values.name }}-vpn-pre-auth-key
15 namespace: {{ .Release.Namespace }}
16stringData:
Sketch🕴️1557f2d2025-08-01 13:10:08 +040017 authkey: {{ .Values.vpn.preAuthKey }}
Sketch🕴️0af70852025-08-01 12:24:44 +040018{{- end }}
19---
Sketch🕴️6fffda22025-08-01 07:05:23 +040020apiVersion: apps/v1
21kind: Deployment
22metadata:
23 name: {{ .Values.name }}
24 namespace: {{ .Release.Namespace }}
25spec:
26 selector:
27 matchLabels:
28 app: proxy
29 replicas: 1
30 template:
31 metadata:
32 labels:
33 app: proxy
34 spec:
Sketch🕴️0af70852025-08-01 12:24:44 +040035 serviceAccountName: {{ .Values.name }}-proxy
Sketch🕴️b65080b2025-08-01 12:30:18 +040036 volumes:
37 - name: config
38 configMap:
39 name: {{ .Values.name }}
Sketch🕴️6fffda22025-08-01 07:05:23 +040040 containers:
41 - name: proxy
42 image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
43 imagePullPolicy: {{ .Values.image.pullPolicy }}
44 ports:
45 {{- range .Values.ports }}
46 - name: {{ .name }}
47 containerPort: {{ .value }}
48 protocol: {{ .protocol }}
49 {{- end }}
50 volumeMounts:
51 - name: config
52 mountPath: /etc/nginx
Sketch🕴️0af70852025-08-01 12:24:44 +040053 {{- if .Values.vpn.enabled }}
54 - name: tailscale
55 image: {{ .Values.vpn.image.repository }}:{{ .Values.vpn.image.tag }}
56 imagePullPolicy: {{ .Values.vpn.image.pullPolicy }}
57 securityContext:
58 privileged: true
59 capabilities:
60 add:
61 - NET_ADMIN
62 env:
63 - name: TS_KUBE_SECRET
64 value: {{ .Values.name }}-vpn-pre-auth-key
65 - name: TS_HOSTNAME
66 value: {{ .Values.vpn.hostname }}
67 - name: TS_EXTRA_ARGS
68 value: --login-server={{ .Values.vpn.loginServer }}
69 {{- end }}
Sketch🕴️6fffda22025-08-01 07:05:23 +040070---
71apiVersion: v1
72kind: Service
73metadata:
74 name: {{ .Values.name }}
75 namespace: {{ .Release.Namespace }}
76spec:
77 type: ClusterIP
78 selector:
79 app: proxy
80 ports:
81 {{- range .Values.ports }}
82 - name: {{ .name }}
83 port: {{ .value }}
84 targetPort: {{ .name }}
85 protocol: {{ .protocol }}
86 {{- end }}
Sketch🕴️0af70852025-08-01 12:24:44 +040087---
88apiVersion: v1
89kind: ServiceAccount
90metadata:
91 name: {{ .Values.name }}-proxy
Sketch🕴️1557f2d2025-08-01 13:10:08 +040092 namespace: {{ .Release.Namespace }}
Sketch🕴️0af70852025-08-01 12:24:44 +040093---
94apiVersion: rbac.authorization.k8s.io/v1
95kind: Role
96metadata:
97 name: {{ .Values.name }}-proxy
98 namespace: {{ .Release.Namespace }}
99rules:
100- apiGroups: [""] # "" indicates the core API group
101 resources: ["secrets"]
102 # Create can not be restricted to a resource name.
103 verbs: ["create"]
104- apiGroups: [""] # "" indicates the core API group
105 resourceNames: ["{{ .Values.name }}-vpn-pre-auth-key"]
106 resources: ["secrets"]
107 verbs: ["get", "update", "patch"]
108- apiGroups: [""] # "" indicates the core API group
109 resources: ["events"]
110 verbs: ["get", "create", "patch"]
111---
112apiVersion: rbac.authorization.k8s.io/v1
113kind: RoleBinding
114metadata:
115 name: {{ .Values.name }}-proxy
Sketch🕴️c6d49dc2025-08-01 13:01:38 +0400116 namespace: {{ .Release.Namespace }}
Sketch🕴️0af70852025-08-01 12:24:44 +0400117subjects:
118- kind: ServiceAccount
119 name: {{ .Values.name }}-proxy
120roleRef:
121 kind: Role
122 name: {{ .Values.name }}-proxy
123 apiGroup: rbac.authorization.k8s.io