blob: 849cd75c74960374913b19df9e4a1507e6d822d2 [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 }}
Sketch🕴️bc1983f2025-08-02 11:33:10 +040067 - name: TS_USERSPACE
68 value: "false"
69 - name: TS_ACCEPT_DNS
70 value: "true"
Sketch🕴️0af70852025-08-01 12:24:44 +040071 - name: TS_EXTRA_ARGS
72 value: --login-server={{ .Values.vpn.loginServer }}
73 {{- end }}
Sketch🕴️6fffda22025-08-01 07:05:23 +040074---
75apiVersion: v1
76kind: Service
77metadata:
78 name: {{ .Values.name }}
79 namespace: {{ .Release.Namespace }}
80spec:
81 type: ClusterIP
82 selector:
83 app: proxy
84 ports:
85 {{- range .Values.ports }}
86 - name: {{ .name }}
87 port: {{ .value }}
88 targetPort: {{ .name }}
89 protocol: {{ .protocol }}
90 {{- end }}
Sketch🕴️0af70852025-08-01 12:24:44 +040091---
92apiVersion: v1
93kind: ServiceAccount
94metadata:
95 name: {{ .Values.name }}-proxy
Sketch🕴️1557f2d2025-08-01 13:10:08 +040096 namespace: {{ .Release.Namespace }}
Sketch🕴️0af70852025-08-01 12:24:44 +040097---
98apiVersion: rbac.authorization.k8s.io/v1
99kind: Role
100metadata:
101 name: {{ .Values.name }}-proxy
102 namespace: {{ .Release.Namespace }}
103rules:
104- apiGroups: [""] # "" indicates the core API group
105 resources: ["secrets"]
106 # Create can not be restricted to a resource name.
107 verbs: ["create"]
108- apiGroups: [""] # "" indicates the core API group
109 resourceNames: ["{{ .Values.name }}-vpn-pre-auth-key"]
110 resources: ["secrets"]
111 verbs: ["get", "update", "patch"]
112- apiGroups: [""] # "" indicates the core API group
113 resources: ["events"]
114 verbs: ["get", "create", "patch"]
115---
116apiVersion: rbac.authorization.k8s.io/v1
117kind: RoleBinding
118metadata:
119 name: {{ .Values.name }}-proxy
Sketch🕴️c6d49dc2025-08-01 13:01:38 +0400120 namespace: {{ .Release.Namespace }}
Sketch🕴️0af70852025-08-01 12:24:44 +0400121subjects:
122- kind: ServiceAccount
123 name: {{ .Values.name }}-proxy
124roleRef:
125 kind: Role
126 name: {{ .Values.name }}-proxy
127 apiGroup: rbac.authorization.k8s.io