From 28d8a10c03415571d8a2da3fcb734a407348f250 Mon Sep 17 00:00:00 2001 From: Stavros kois Date: Tue, 16 May 2023 16:58:45 +0300 Subject: [PATCH] add some strucutre --- library/ix-dev/community/gluetun/Chart.lock | 6 + .../community/gluetun/charts/common-1.0.7.tgz | Bin 0 -> 55256 bytes .../gluetun/ci/airvpn-openvpn-values.yaml | 11 ++ .../ix-dev/community/gluetun/questions.yaml | 159 ++++++++++++++++++ .../community/gluetun/templates/NOTES.txt | 1 + .../gluetun/templates/_configuration.tpl | 23 +++ .../community/gluetun/templates/_gluetun.tpl | 77 +++++++++ .../gluetun/templates/_validation.tpl | 12 ++ .../community/gluetun/templates/common.yaml | 7 + .../gluetun/templates/configs/_common.tpl | 14 ++ .../gluetun/templates/configs/_openvpn.tpl | 8 + .../gluetun/templates/providers/airvpn.tpl | 18 ++ library/ix-dev/community/gluetun/values.yaml | 51 ++++++ 13 files changed, 387 insertions(+) create mode 100644 library/ix-dev/community/gluetun/Chart.lock create mode 100644 library/ix-dev/community/gluetun/charts/common-1.0.7.tgz create mode 100644 library/ix-dev/community/gluetun/ci/airvpn-openvpn-values.yaml create mode 100644 library/ix-dev/community/gluetun/questions.yaml create mode 100644 library/ix-dev/community/gluetun/templates/NOTES.txt create mode 100644 library/ix-dev/community/gluetun/templates/_configuration.tpl create mode 100644 library/ix-dev/community/gluetun/templates/_gluetun.tpl create mode 100644 library/ix-dev/community/gluetun/templates/_validation.tpl create mode 100644 library/ix-dev/community/gluetun/templates/common.yaml create mode 100644 library/ix-dev/community/gluetun/templates/configs/_common.tpl create mode 100644 library/ix-dev/community/gluetun/templates/configs/_openvpn.tpl create mode 100644 library/ix-dev/community/gluetun/templates/providers/airvpn.tpl create mode 100644 library/ix-dev/community/gluetun/values.yaml diff --git a/library/ix-dev/community/gluetun/Chart.lock b/library/ix-dev/community/gluetun/Chart.lock new file mode 100644 index 0000000000..e6736e3cc4 --- /dev/null +++ b/library/ix-dev/community/gluetun/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: file://../../../common + version: 1.0.7 +digest: sha256:919bcf42446fc1748a1b77001ec0161bb7a72a198381794b716a6ebb459ac31b +generated: "2023-05-16T15:42:24.207377102+03:00" diff --git a/library/ix-dev/community/gluetun/charts/common-1.0.7.tgz b/library/ix-dev/community/gluetun/charts/common-1.0.7.tgz new file mode 100644 index 0000000000000000000000000000000000000000..d691d5af091947391764bce70987e6f1ff671c32 GIT binary patch literal 55256 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�oa~f1Dh+ z@t;nPjt(~b-#W?`(6haO!H;u(e4*f=viG@7eCFXcS7q5F4`IF`*(od>@~p5s7ndz( zqkTY3{g-4CxaL<0Xl3(75pC8i-|KVD+|rh2z@@U1c!1+Xa{0 z=;LJ$Bl$osTm59G#Xzt(FpFm(?IVBI45Vdmp8nemWbi@Zt1k3c`>>le19=477nk?P zyWryT{4T;;C473`ExLO

PV4MaA_y!L4$H%;8Hl>KxVUVyY%2{s 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 + Host Path: Is a path that already exists on the system. + schema: + type: string + required: true + default: ixVolume + enum: + - value: hostPath + description: Host Path (Path that already exists on the system) + - value: ixVolume + description: ixVolume (Dataset created automatically by the system) + - variable: datasetName + label: Dataset Name + schema: + type: string + show_if: [["type", "=", "ixVolume"]] + required: true + hidden: true + immutable: true + default: "data" + $ref: + - "normalize/ixVolume" + - variable: hostPath + label: Host Path + schema: + type: hostpath + show_if: [["type", "=", "hostPath"]] + immutable: true + required: true + + - variable: resources + label: "" + group: Resources Configuration + schema: + type: dict + attrs: + - variable: limits + label: Limits + schema: + type: dict + attrs: + - variable: cpu + label: CPU + description: CPU limit for Gluetun. + schema: + type: string + default: 4000m + required: true + - variable: memory + label: Memory + description: Memory limit for Gluetun. + schema: + type: string + default: 8Gi + required: true diff --git a/library/ix-dev/community/gluetun/templates/NOTES.txt b/library/ix-dev/community/gluetun/templates/NOTES.txt new file mode 100644 index 0000000000..ba4e01146c --- /dev/null +++ b/library/ix-dev/community/gluetun/templates/NOTES.txt @@ -0,0 +1 @@ +{{ include "ix.v1.common.lib.chart.notes" $ }} diff --git a/library/ix-dev/community/gluetun/templates/_configuration.tpl b/library/ix-dev/community/gluetun/templates/_configuration.tpl new file mode 100644 index 0000000000..5d74e1f878 --- /dev/null +++ b/library/ix-dev/community/gluetun/templates/_configuration.tpl @@ -0,0 +1,23 @@ +{{- define "gluetun.configuration" -}} +{{- include "gluetun.validation" $ }} +configmap: + gluetun: + enabled: true + data: + VPN_SERVICE_PROVIDER: {{ .Values.gluetunConfig.provider }} + VPN_TYPE: {{ .Values.gluetunConfig.type }} + + {{- include (printf "gluetun.%v.%v.env" .Values.gluetunConfig.provider .Values.gluetunConfig.type) $ | nindent 6 }} + {{- include "gluetun.configs.common.env" $ | nindent 6 }} + + {{- if eq .Values.gluetunConfig.type "openvpn" }} + {{- with .Values.gluetunConfig.openvpnUser }} + OPENVPN_USER: {{ . }} + {{- end }} + {{- with .Values.gluetunConfig.openvpnPassword }} + OPENVPN_PASSWORD: {{ . }} + {{- end }} + {{- else if eq .Values.gluetunConfig.type "wireguard" }} + + {{- end }} +{{- end -}} diff --git a/library/ix-dev/community/gluetun/templates/_gluetun.tpl b/library/ix-dev/community/gluetun/templates/_gluetun.tpl new file mode 100644 index 0000000000..4f54e162ae --- /dev/null +++ b/library/ix-dev/community/gluetun/templates/_gluetun.tpl @@ -0,0 +1,77 @@ +{{- define "gluetun.workload" -}} +workload: + gluetun: + enabled: true + primary: true + type: Deployment + podSpec: + hostNetwork: {{ .Values.gluetunNetwork.hostNetwork }} + securityContext: + fsGroup: {{ .Values.gluetunID.group }} + containers: + gluetun: + enabled: true + primary: true + imageSelector: image + securityContext: + runAsUser: 0 + runAsGroup: 0 + runAsNonRoot: false + capabilities: + add: + - NET_ADMIN + fixedEnv: + PUID: {{ .Values.gluetunID.user }} + envFrom: + - configMapRef: + name: gluetun + {{ with .Values.gluetunConfig.additionalEnvs }} + envList: + {{ range $env := . }} + - name: {{ $env.name }} + value: {{ $env.value }} + {{ end }} + {{ end }} + probes: + liveness: + enabled: true + type: exec + command: + - /gluetun-entrypoint + - healthcheck + readiness: + enabled: true + type: exec + command: + - /gluetun-entrypoint + - healthcheck + startup: + enabled: true + type: exec + command: + - /gluetun-entrypoint + - healthcheck + +{{/* Service */}} + + +{{/* Persistence */}} +persistence: + devtun: + enabled: true + type: device + hostPath: /dev/net/tun + targetSelector: + gluetun: + gluetun: + mountPath: /dev/net/tun + data: + enabled: true + type: {{ .Values.gluetunStorage.data.type }} + datasetName: {{ .Values.gluetunStorage.data.datasetName | default "" }} + hostPath: {{ .Values.gluetunStorage.data.hostPath | default "" }} + targetSelector: + gluetun: + gluetun: + mountPath: /gluetun +{{- end -}} diff --git a/library/ix-dev/community/gluetun/templates/_validation.tpl b/library/ix-dev/community/gluetun/templates/_validation.tpl new file mode 100644 index 0000000000..a5cab31688 --- /dev/null +++ b/library/ix-dev/community/gluetun/templates/_validation.tpl @@ -0,0 +1,12 @@ +{{- define "gluetun.validation" -}} + {{- $providers := (list "custom" "airvpn") -}} + {{- if not (mustHas .Values.gluetunConfig.provider $providers) -}} + {{- fail (printf "Gluetun - Expected [Provider] to be one of [%v], but got [%v]" (join ", " $providers) .Values.gluetunConfig.provider) -}} + {{- end -}} + + {{- $types := (list "openvpn" "wireguard") -}} + {{- if not (mustHas .Values.gluetunConfig.type $types) -}} + {{- fail (printf "Gluetun - Expected [Type] to be one of [%v], but got [%v]" (join ", " $providers) .Values.gluetunConfig.type) -}} + {{- end -}} + +{{- end -}} diff --git a/library/ix-dev/community/gluetun/templates/common.yaml b/library/ix-dev/community/gluetun/templates/common.yaml new file mode 100644 index 0000000000..a20c02f538 --- /dev/null +++ b/library/ix-dev/community/gluetun/templates/common.yaml @@ -0,0 +1,7 @@ +{{- include "ix.v1.common.loader.init" . -}} + +{{/* Merge the templates with Values */}} +{{- $_ := mustMergeOverwrite .Values (include "gluetun.configuration" $ | fromYaml) -}} +{{- $_ := mustMergeOverwrite .Values (include "gluetun.workload" $ | fromYaml) -}} + +{{- include "ix.v1.common.loader.apply" . -}} diff --git a/library/ix-dev/community/gluetun/templates/configs/_common.tpl b/library/ix-dev/community/gluetun/templates/configs/_common.tpl new file mode 100644 index 0000000000..de5b8ae5fd --- /dev/null +++ b/library/ix-dev/community/gluetun/templates/configs/_common.tpl @@ -0,0 +1,14 @@ +{{- define "gluetun.configs.common.env" -}} + {{- with .Values.gluetunConfig.serverCountries }} +SERVER_COUNTRIES: {{ join "," }} + {{- end }} + {{- with .Values.gluetunConfig.serverRegions }} +SERVER_REGIONS: {{ join "," }} + {{- end }} + {{- with .Values.gluetunConfig.serverCities }} +SERVER_CITIES: {{ join "," }} + {{- end }} + {{- with .Values.gluetunConfig.serverHostnames }} +SERVER_HOSTNAMES: {{ join "," }} + {{- end }} +{{- end -}} diff --git a/library/ix-dev/community/gluetun/templates/configs/_openvpn.tpl b/library/ix-dev/community/gluetun/templates/configs/_openvpn.tpl new file mode 100644 index 0000000000..d84241c5c5 --- /dev/null +++ b/library/ix-dev/community/gluetun/templates/configs/_openvpn.tpl @@ -0,0 +1,8 @@ +{{- define "gluetun.configs.openvpn.env" -}} + {{- with .Values.gluetunConfig.openvpnKey }} +OPENVPN_KEY: {{ . }} + {{- end }} + {{- with .Values.gluetunConfig.openvpnCert }} +OPENVPN_CERT: {{ . }} + {{- end }} +{{- end -}} diff --git a/library/ix-dev/community/gluetun/templates/providers/airvpn.tpl b/library/ix-dev/community/gluetun/templates/providers/airvpn.tpl new file mode 100644 index 0000000000..ad159be25e --- /dev/null +++ b/library/ix-dev/community/gluetun/templates/providers/airvpn.tpl @@ -0,0 +1,18 @@ +{{- define "gluetun.airvpn.openvpn.env" -}} + {{- include "gluetun.configs.openvpn.env" $ -}} +{{- end -}} + +{{- define "gluetun.airvpn.wireguard.env" -}} + {{- if not .Values.gluetunConfig.wireguardPrivateKey -}} + {{- fail "Gluetun - Expected non empty [Wireguard Private Key] on [AirVPN] provider and [Wireguard] Type" -}} + {{- end -}} + {{- if not .Values.gluetunConfig.wireguardPresharedKey -}} + {{- fail "Gluetun - Expected non empty [Wireguard Preshared Key] on [AirVPN] provider and [Wireguard] Type" -}} + {{- end -}} + {{- if not .Values.gluetunConfig.wireguardAddresses -}} + {{- fail "Gluetun - Expected non empty [Wireguard Addresses] on [AirVPN] provider and [Wireguard] Type" -}} + {{- end }} +WIREGUARD_PRIVATE_KEY: {{ .Values.gluetunConfig.wireguardPrivateKey }} +WIREGUARD_PRESHARED_KEY: {{ .Values.gluetunConfig.wireguardPresharedKey }} +WIREGUARD_ADDRESSES: {{ join "," .Values.gluetunConfig.wireguardAddresses }} +{{- end -}} diff --git a/library/ix-dev/community/gluetun/values.yaml b/library/ix-dev/community/gluetun/values.yaml new file mode 100644 index 0000000000..1879294fe3 --- /dev/null +++ b/library/ix-dev/community/gluetun/values.yaml @@ -0,0 +1,51 @@ +image: + repository: qmcgaw/gluetun + pullPolicy: IfNotPresent + tag: v3.33.0 + +resources: + limits: + cpu: 4000m + memory: 8Gi + +gluetunNetwork: + hostNetwork: false + +gluetunID: + user: 568 + group: 568 + +gluetunStorage: + data: + type: ixVolume + hostPath: '' + datasetName: data + + +gluetunConfig: + provider: '' + type: '' + openvpnUser: '' + openvpnPassword: '' + + # - Common Wireguard options + wireguardPrivateKey: '' + wireguardPresharedKey: '' + wireguardAddresses: [] + # - Common OpenVPN options + # Optional - Alternative place the file in the data dir + # https://github.com/qdm12/gluetun/wiki/OpenVPN-client-key + openvpnKey: '' + # Optional - Alternative place the file in the data dir + # https://github.com/qdm12/gluetun/wiki/OpenVPN-client-key + openvpnCert: '' + + # - Common options (Optional) + # https://raw.githubusercontent.com/qdm12/gluetun/master/internal/storage/servers.json + serverCountries: [] + serverRegions: [] + serverCities: [] + serverHostnames: [] + serverNames: [] + + additionalEnvs: []