From b8ed7b2e82c1ae49e66671e2b69d9ccfb4fdf4f9 Mon Sep 17 00:00:00 2001 From: Stavros Kois <47820033+stavros-k@users.noreply.github.com> Date: Mon, 18 Sep 2023 18:44:34 +0300 Subject: [PATCH] NAS-124107 / 24.04 / add `cloudflared` to `community` catalog (#1539) --- .../ix-dev/community/cloudflared/Chart.lock | 6 + .../ix-dev/community/cloudflared/Chart.yaml | 27 +++ .../ix-dev/community/cloudflared/README.md | 3 + .../community/cloudflared/app-readme.md | 3 + .../cloudflared/charts/common-1.1.1.tgz | Bin 0 -> 61733 bytes .../cloudflared/ci/basic-values.yaml | 8 + .../cloudflared/ci/hostNet-values.yaml | 13 ++ .../ix-dev/community/cloudflared/item.yaml | 7 + .../community/cloudflared/metadata.yaml | 8 + .../community/cloudflared/questions.yaml | 201 ++++++++++++++++++ .../community/cloudflared/templates/NOTES.txt | 1 + .../cloudflared/templates/_cloudflared.tpl | 55 +++++ .../cloudflared/templates/_persistance.tpl | 14 ++ .../cloudflared/templates/common.yaml | 7 + .../community/cloudflared/upgrade_info.json | 1 + .../community/cloudflared/upgrade_strategy | 31 +++ .../ix-dev/community/cloudflared/values.yaml | 26 +++ 17 files changed, 411 insertions(+) create mode 100644 library/ix-dev/community/cloudflared/Chart.lock create mode 100644 library/ix-dev/community/cloudflared/Chart.yaml create mode 100644 library/ix-dev/community/cloudflared/README.md create mode 100644 library/ix-dev/community/cloudflared/app-readme.md create mode 100644 library/ix-dev/community/cloudflared/charts/common-1.1.1.tgz create mode 100644 library/ix-dev/community/cloudflared/ci/basic-values.yaml create mode 100644 library/ix-dev/community/cloudflared/ci/hostNet-values.yaml create mode 100644 library/ix-dev/community/cloudflared/item.yaml create mode 100644 library/ix-dev/community/cloudflared/metadata.yaml create mode 100644 library/ix-dev/community/cloudflared/questions.yaml create mode 100644 library/ix-dev/community/cloudflared/templates/NOTES.txt create mode 100644 library/ix-dev/community/cloudflared/templates/_cloudflared.tpl create mode 100644 library/ix-dev/community/cloudflared/templates/_persistance.tpl create mode 100644 library/ix-dev/community/cloudflared/templates/common.yaml create mode 100644 library/ix-dev/community/cloudflared/upgrade_info.json create mode 100755 library/ix-dev/community/cloudflared/upgrade_strategy create mode 100644 library/ix-dev/community/cloudflared/values.yaml diff --git a/library/ix-dev/community/cloudflared/Chart.lock b/library/ix-dev/community/cloudflared/Chart.lock new file mode 100644 index 0000000000..e69f850976 --- /dev/null +++ b/library/ix-dev/community/cloudflared/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: file://../../../common + version: 1.1.1 +digest: sha256:a7dbe3e4d42dbcd4325776e5e01a1d630c7f185f79e7ebf22b1b9cc80f56eed7 +generated: "2023-09-14T16:02:43.614243798+03:00" diff --git a/library/ix-dev/community/cloudflared/Chart.yaml b/library/ix-dev/community/cloudflared/Chart.yaml new file mode 100644 index 0000000000..4ea468ae36 --- /dev/null +++ b/library/ix-dev/community/cloudflared/Chart.yaml @@ -0,0 +1,27 @@ +name: cloudflared +description: Cloudflared is a client for Cloudflare Tunnel, a daemon that exposes private services through the Cloudflare edge. +annotations: + title: Cloudflared +type: application +version: 1.0.0 +apiVersion: v2 +appVersion: 2023.8.2 +kubeVersion: '>=1.16.0-0' +maintainers: + - name: truenas + url: https://www.truenas.com/ + email: dev@ixsystems.com +dependencies: + - name: common + repository: file://../../../common + version: 1.1.1 +home: https://github.com/cloudflare/cloudflared +icon: https://avatars.githubusercontent.com/u/314135 +sources: + - https://github.com/cloudflare/cloudflared + - https://github.com/truenas/charts/tree/master/library/ix-dev/community/cloudflared + - https://hub.docker.com/r/cloudflare/cloudflared +keywords: + - network + - cloudflare + - tunnel diff --git a/library/ix-dev/community/cloudflared/README.md b/library/ix-dev/community/cloudflared/README.md new file mode 100644 index 0000000000..fb8d18e79b --- /dev/null +++ b/library/ix-dev/community/cloudflared/README.md @@ -0,0 +1,3 @@ +# Cloudflared + +[Cloudflared](https://github.com/cloudflare/cloudflared) is a client for Cloudflare Tunnel, a daemon that exposes private services through the Cloudflare edge. diff --git a/library/ix-dev/community/cloudflared/app-readme.md b/library/ix-dev/community/cloudflared/app-readme.md new file mode 100644 index 0000000000..fb8d18e79b --- /dev/null +++ b/library/ix-dev/community/cloudflared/app-readme.md @@ -0,0 +1,3 @@ +# Cloudflared + +[Cloudflared](https://github.com/cloudflare/cloudflared) is a client for Cloudflare Tunnel, a daemon that exposes private services through the Cloudflare edge. diff --git a/library/ix-dev/community/cloudflared/charts/common-1.1.1.tgz b/library/ix-dev/community/cloudflared/charts/common-1.1.1.tgz new file mode 100644 index 0000000000000000000000000000000000000000..1379b77287a094f477e996955773b2e6c5f13d15 GIT binary patch literal 61733 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 H00IaA!N9Wh literal 0 HcmV?d00001 diff --git a/library/ix-dev/community/cloudflared/ci/basic-values.yaml b/library/ix-dev/community/cloudflared/ci/basic-values.yaml new file mode 100644 index 0000000000..54eb34cc12 --- /dev/null +++ b/library/ix-dev/community/cloudflared/ci/basic-values.yaml @@ -0,0 +1,8 @@ +cloudflaredRunAs: + user: 1000 + group: 1000 + +cloudflaredConfig: + tunnelToken: supersecrettoken + +ci: true diff --git a/library/ix-dev/community/cloudflared/ci/hostNet-values.yaml b/library/ix-dev/community/cloudflared/ci/hostNet-values.yaml new file mode 100644 index 0000000000..27f6102b88 --- /dev/null +++ b/library/ix-dev/community/cloudflared/ci/hostNet-values.yaml @@ -0,0 +1,13 @@ +cloudflaredNetwork: + hostNetwork: true + +cloudflaredStorage: + additionalStorages: + - type: hostPath + hostPath: /mnt/{{ .Release.Namespace }}/data1 + mountPath: /data1 + +cloudflaredConfig: + tunnelToken: supersecrettoken + +ci: true diff --git a/library/ix-dev/community/cloudflared/item.yaml b/library/ix-dev/community/cloudflared/item.yaml new file mode 100644 index 0000000000..6ce36c29c8 --- /dev/null +++ b/library/ix-dev/community/cloudflared/item.yaml @@ -0,0 +1,7 @@ +icon_url: https://avatars.githubusercontent.com/u/314135 +categories: + - network +screenshots: [] +tags: + - tunnel + - cloudflare diff --git a/library/ix-dev/community/cloudflared/metadata.yaml b/library/ix-dev/community/cloudflared/metadata.yaml new file mode 100644 index 0000000000..cb65c696ac --- /dev/null +++ b/library/ix-dev/community/cloudflared/metadata.yaml @@ -0,0 +1,8 @@ +runAsContext: + - userName: cloudflared + groupName: cloudflared + gid: 568 + uid: 568 + description: Cloudflared can run as any non-root user. +capabilities: [] +hostMounts: [] diff --git a/library/ix-dev/community/cloudflared/questions.yaml b/library/ix-dev/community/cloudflared/questions.yaml new file mode 100644 index 0000000000..756ba3cb5d --- /dev/null +++ b/library/ix-dev/community/cloudflared/questions.yaml @@ -0,0 +1,201 @@ +groups: + - name: Cloudflared Configuration + description: Configure Cloudflared + - name: User and Group Configuration + description: Configure User and Group for Cloudflared + - name: Network Configuration + description: Configure Network for Cloudflared + - name: Storage Configuration + description: Configure Storage for Cloudflared + - name: Resources Configuration + description: Configure Resources for Cloudflared + +questions: + - variable: cloudflaredConfig + label: "" + group: Cloudflared Configuration + schema: + type: dict + attrs: + - variable: tunnelToken + label: Tunnel Token + description: The tunnel token to use for Cloudflared. + schema: + type: string + default: "" + required: true + private: true + - variable: additionalArgs + label: Additional Arguments + description: | + Configure additional arguments for Cloudflared.
+ Those will be placed after the "tunnel --no-autoupdate" and before "run".
+ Example:
+ tunnel --no-autoupdate run
+ One argument per line. + schema: + type: list + default: [] + items: + - variable: arg + label: Argument + schema: + type: string + required: true + - variable: additionalEnvs + label: Additional Environment Variables + description: Configure additional environment variables for Cloudflared. + schema: + type: list + default: [] + items: + - variable: env + label: Environment Variable + schema: + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + + - variable: cloudflaredRunAs + label: "" + group: User and Group Configuration + schema: + type: dict + attrs: + - variable: user + label: User ID + description: The user id that Cloudflared will run as. + schema: + type: int + min: 2 + default: 568 + required: true + - variable: group + label: Group ID + description: The group id that Cloudflared will run as. + schema: + type: int + min: 2 + default: 568 + required: true + + - variable: cloudflaredNetwork + label: "" + group: Network Configuration + schema: + type: dict + attrs: + - variable: hostNetwork + label: Host Network + description: | + Bind to the host network. It's recommended to keep this disabled.
+ schema: + type: boolean + default: false + + - variable: cloudflaredStorage + label: "" + group: Storage Configuration + schema: + type: dict + attrs: + - variable: additionalStorages + label: Additional Storage + description: Additional storage for Cloudflared. + schema: + type: list + default: [] + items: + - variable: storageEntry + label: Storage Entry + schema: + type: dict + attrs: + - variable: type + label: Type + description: | + ixVolume: Is dataset created automatically by the system.
+ 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: mountPath + label: Mount Path + description: The path inside the container to mount the storage. + schema: + type: path + required: true + - variable: hostPath + label: Host Path + description: The host path to use for storage. + schema: + type: hostpath + show_if: [["type", "=", "hostPath"]] + required: true + - variable: datasetName + label: Dataset Name + description: The name of the dataset to use for storage. + schema: + type: string + show_if: [["type", "=", "ixVolume"]] + required: true + immutable: true + default: "storage_entry" + $ref: + - "normalize/ixVolume" + + - variable: resources + group: Resources Configuration + label: "" + schema: + type: dict + attrs: + - variable: limits + label: Limits + schema: + type: dict + attrs: + - variable: cpu + label: CPU + description: CPU limit for Cloudflared. + schema: + type: string + max_length: 6 + valid_chars: '^(0\.[1-9]|[1-9][0-9]*)(\.[0-9]|m?)$' + valid_chars_error: | + Valid CPU limit formats are
+ - Plain Integer - eg. 1
+ - Float - eg. 0.5
+ - Milicpu - eg. 500m + default: "4000m" + required: true + - variable: memory + label: Memory + description: Memory limit for Cloudflared. + schema: + type: string + max_length: 12 + valid_chars: '^[1-9][0-9]*([EPTGMK]i?|e[0-9]+)?$' + valid_chars_error: | + Valid Memory limit formats are
+ - Suffixed with E/P/T/G/M/K - eg. 1G
+ - Suffixed with Ei/Pi/Ti/Gi/Mi/Ki - eg. 1Gi
+ - Plain Integer in bytes - eg. 1024
+ - Exponent - eg. 134e6 + default: "8Gi" + required: true diff --git a/library/ix-dev/community/cloudflared/templates/NOTES.txt b/library/ix-dev/community/cloudflared/templates/NOTES.txt new file mode 100644 index 0000000000..ba4e01146c --- /dev/null +++ b/library/ix-dev/community/cloudflared/templates/NOTES.txt @@ -0,0 +1 @@ +{{ include "ix.v1.common.lib.chart.notes" $ }} diff --git a/library/ix-dev/community/cloudflared/templates/_cloudflared.tpl b/library/ix-dev/community/cloudflared/templates/_cloudflared.tpl new file mode 100644 index 0000000000..a03966630b --- /dev/null +++ b/library/ix-dev/community/cloudflared/templates/_cloudflared.tpl @@ -0,0 +1,55 @@ +{{- define "cloudflared.workload" -}} +{{- if not .Values.cloudflaredConfig.tunnelToken -}} + {{- fail "Cloudflared - Tunnel Token is required" -}} +{{- end -}} +{{- $reservedArgs := (list "tunnel" "--no-autoupdate" "run") -}} +{{- $addArgs := .Values.cloudflaredConfig.additionalArgs -}} +{{- if not (deepEqual $addArgs (uniq $addArgs)) -}} + {{- fail (printf "Cloudflared - Expected Additional arguments to be unique, but got [%s]" (join ", " $addArgs)) -}} +{{- end }} +workload: + cloudflared: + enabled: true + primary: true + type: Deployment + podSpec: + hostNetwork: {{ .Values.cloudflaredNetwork.hostNetwork }} + containers: + cloudflared: + enabled: true + primary: true + imageSelector: image + securityContext: + runAsUser: {{ .Values.cloudflaredRunAs.user }} + runAsGroup: {{ .Values.cloudflaredRunAs.group }} + args: + - tunnel + - --no-autoupdate + {{ if not .Values.ci }} + {{ range $arg := $addArgs }} + {{- if (mustHas $arg $reservedArgs) -}} + {{- fail (printf "Cloudflared - Argument [%s] is already applied" $arg) -}} + {{- end }} + - {{ $arg }} + {{ end }} + - run + {{ else }} + - --hello-world + {{ end }} + env: + TUNNEL_TOKEN: {{ .Values.cloudflaredConfig.tunnelToken }} + {{ with .Values.cloudflaredConfig.additionalEnvs }} + envList: + {{ range $env := . }} + - name: {{ $env.name }} + value: {{ $env.value }} + {{ end }} + {{ end }} + probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false +{{- end -}} diff --git a/library/ix-dev/community/cloudflared/templates/_persistance.tpl b/library/ix-dev/community/cloudflared/templates/_persistance.tpl new file mode 100644 index 0000000000..df86e50bcf --- /dev/null +++ b/library/ix-dev/community/cloudflared/templates/_persistance.tpl @@ -0,0 +1,14 @@ +{{- define "cloudflared.persistence" -}} +persistence: + {{- range $idx, $storage := .Values.cloudflaredStorage.additionalStorages }} + {{ printf "cloudflared-%v" (int $idx) }}: + enabled: true + type: {{ $storage.type }} + datasetName: {{ $storage.datasetName | default "" }} + hostPath: {{ $storage.hostPath | default "" }} + targetSelector: + cloudflared: + cloudflared: + mountPath: {{ $storage.mountPath }} + {{- end }} +{{- end -}} diff --git a/library/ix-dev/community/cloudflared/templates/common.yaml b/library/ix-dev/community/cloudflared/templates/common.yaml new file mode 100644 index 0000000000..f393748a0c --- /dev/null +++ b/library/ix-dev/community/cloudflared/templates/common.yaml @@ -0,0 +1,7 @@ +{{- include "ix.v1.common.loader.init" . -}} + +{{/* Merge the templates with Values */}} +{{- $_ := mustMergeOverwrite .Values (include "cloudflared.workload" $ | fromYaml) -}} +{{- $_ := mustMergeOverwrite .Values (include "cloudflared.persistence" $ | fromYaml) -}} + +{{- include "ix.v1.common.loader.apply" . -}} diff --git a/library/ix-dev/community/cloudflared/upgrade_info.json b/library/ix-dev/community/cloudflared/upgrade_info.json new file mode 100644 index 0000000000..767388094a --- /dev/null +++ b/library/ix-dev/community/cloudflared/upgrade_info.json @@ -0,0 +1 @@ +{"filename": "values.yaml", "keys": ["image"]} diff --git a/library/ix-dev/community/cloudflared/upgrade_strategy b/library/ix-dev/community/cloudflared/upgrade_strategy new file mode 100755 index 0000000000..af685230a1 --- /dev/null +++ b/library/ix-dev/community/cloudflared/upgrade_strategy @@ -0,0 +1,31 @@ +#!/usr/bin/python3 +import json +import re +import sys + +from catalog_update.upgrade_strategy import semantic_versioning + + +RE_STABLE_VERSION = re.compile(r'\d+\.\d+\.\d+') + + +def newer_mapping(image_tags): + key = list(image_tags.keys())[0] + tags = {t: t for t in image_tags[key] if RE_STABLE_VERSION.fullmatch(t)} + version = semantic_versioning(list(tags)) + if not version: + return {} + + return { + 'tags': {key: tags[version]}, + 'app_version': version, + } + + +if __name__ == '__main__': + try: + versions_json = json.loads(sys.stdin.read()) + except ValueError: + raise ValueError('Invalid json specified') + + print(json.dumps(newer_mapping(versions_json))) diff --git a/library/ix-dev/community/cloudflared/values.yaml b/library/ix-dev/community/cloudflared/values.yaml new file mode 100644 index 0000000000..4aeb470f0e --- /dev/null +++ b/library/ix-dev/community/cloudflared/values.yaml @@ -0,0 +1,26 @@ +image: + repository: cloudflare/cloudflared + pullPolicy: IfNotPresent + tag: 2023.8.2 + +ci: false + +resources: + limits: + cpu: 4000m + memory: 8Gi + +cloudflaredConfig: + tunnelToken: '' + additionalArgs: [] + additionalEnvs: [] + +cloudflaredNetwork: + hostNetwork: false + +cloudflaredRunAs: + user: 568 + group: 568 + +cloudflaredStorage: + additionalStorages: []