From 16256dfe2f6dba32bc36128514fb83dadceb931c Mon Sep 17 00:00:00 2001 From: Xstar97 Date: Sun, 18 Dec 2022 14:30:51 -0500 Subject: [PATCH] feat(snowflake-proxy) add snowflake-proxy (#5512) * feat(snowflake-proxy) add snowflake-proxy * Apply suggestions from code review Signed-off-by: Stavros Kois <47820033+stavros-k@users.noreply.github.com> * add some options ;) * more * remove args * hostnet * hmm * hmhm * typo -.- * Update charts/incubator/snowflake-proxy/values.yaml Signed-off-by: Stavros Kois <47820033+stavros-k@users.noreply.github.com> * Update charts/incubator/snowflake-proxy/questions.yaml Signed-off-by: Stavros Kois <47820033+stavros-k@users.noreply.github.com> * try probe * shell * other probe Signed-off-by: Stavros Kois <47820033+stavros-k@users.noreply.github.com> Co-authored-by: Stavros Kois <47820033+stavros-k@users.noreply.github.com> --- charts/incubator/snowflake-proxy/.helmignore | 30 ++++ charts/incubator/snowflake-proxy/CHANGELOG.md | 1 + charts/incubator/snowflake-proxy/Chart.yaml | 30 ++++ charts/incubator/snowflake-proxy/README.md | 1 + charts/incubator/snowflake-proxy/icon.png | Bin 0 -> 31362 bytes .../incubator/snowflake-proxy/questions.yaml | 153 ++++++++++++++++++ .../snowflake-proxy/templates/_args.tpl | 52 ++++++ .../snowflake-proxy/templates/common.yaml | 10 ++ charts/incubator/snowflake-proxy/values.yaml | 61 +++++++ 9 files changed, 338 insertions(+) create mode 100644 charts/incubator/snowflake-proxy/.helmignore create mode 100644 charts/incubator/snowflake-proxy/CHANGELOG.md create mode 100644 charts/incubator/snowflake-proxy/Chart.yaml create mode 100644 charts/incubator/snowflake-proxy/README.md create mode 100644 charts/incubator/snowflake-proxy/icon.png create mode 100644 charts/incubator/snowflake-proxy/questions.yaml create mode 100644 charts/incubator/snowflake-proxy/templates/_args.tpl create mode 100644 charts/incubator/snowflake-proxy/templates/common.yaml create mode 100644 charts/incubator/snowflake-proxy/values.yaml diff --git a/charts/incubator/snowflake-proxy/.helmignore b/charts/incubator/snowflake-proxy/.helmignore new file mode 100644 index 00000000000..77ca5567b26 --- /dev/null +++ b/charts/incubator/snowflake-proxy/.helmignore @@ -0,0 +1,30 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ +# OWNERS file for Kubernetes +OWNERS +# helm-docs templates +*.gotmpl +# docs folder +/docs +# icon +icon.png diff --git a/charts/incubator/snowflake-proxy/CHANGELOG.md b/charts/incubator/snowflake-proxy/CHANGELOG.md new file mode 100644 index 00000000000..825c32f0d03 --- /dev/null +++ b/charts/incubator/snowflake-proxy/CHANGELOG.md @@ -0,0 +1 @@ +# Changelog diff --git a/charts/incubator/snowflake-proxy/Chart.yaml b/charts/incubator/snowflake-proxy/Chart.yaml new file mode 100644 index 00000000000..8833f5afb9a --- /dev/null +++ b/charts/incubator/snowflake-proxy/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +appVersion: "v2.4.1" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.0.7 +deprecated: false +description: Snowflake's Proxy component to help users in the censored regions. +home: https://truecharts.org/docs/charts/incubator/snowflake-proxy +icon: https://truecharts.org/img/hotlink-ok/chart-icons/snowflake-proxy.png +keywords: + - snowflake-proxy + - proxy +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: snowflake-proxy +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/snowflake-proxy + - https://gitlab.torproject.org/tpo/anti-censorship/docker-snowflake-proxy + - https://hub.docker.com/r/thetorproject/snowflake-proxy +type: application +version: 0.0.1 +annotations: + truecharts.org/catagories: | + - proxy + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/charts/incubator/snowflake-proxy/README.md b/charts/incubator/snowflake-proxy/README.md new file mode 100644 index 00000000000..c8f8eb8d1ed --- /dev/null +++ b/charts/incubator/snowflake-proxy/README.md @@ -0,0 +1 @@ +# snowflake-proxy diff --git a/charts/incubator/snowflake-proxy/icon.png b/charts/incubator/snowflake-proxy/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..48d0efdeec6a36bc3bbbbe8214f2e8f90a0b4de3 GIT binary patch literal 31362 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 AxBvhE literal 0 HcmV?d00001 diff --git a/charts/incubator/snowflake-proxy/questions.yaml b/charts/incubator/snowflake-proxy/questions.yaml new file mode 100644 index 00000000000..8131d3de744 --- /dev/null +++ b/charts/incubator/snowflake-proxy/questions.yaml @@ -0,0 +1,153 @@ +# Include{groups} +portals: {} +questions: +# Include{global} +# Include{controller} +# Include{replicas} +# Include{replica1} +# Include{controllerExpertExtraArgs} + - variable: snowflake + group: App Configuration + label: Snowflake Proxy Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: allow_non_tls_relay + label: Allow Non TLS Relay + description: Allow relay without tls encryption + schema: + type: boolean + default: false + - variable: allowed_relay_hostname_pattern + label: Allow Relay Hostname pattern + description: A pattern to specify allowed hostname pattern for relay URL. + schema: + type: string + required: true + default: snowflake.torproject.net$ + - variable: broker + label: Broker + description: Broker URL + schema: + type: string + required: true + default: https://snowflake-broker.torproject.net/ + - variable: capacity + label: Capacity + description: Maximum concurrent clients (0 for unlimited) + schema: + type: int + required: true + default: 0 + - variable: ephemeral_ports_range + label: Ephemeral Ports Range + description: ICE UDP ephemeral ports range in format ("30000:60000") + schema: + type: string + default: "59999:60000" + - variable: keep_local_addresses + label: Keep Local Addresses + description: Keep local LAN address ICE candidates + schema: + type: boolean + default: false + - variable: nat_retest_interval + label: NAT Retest Interval + description: The time interval in second before NAT type is retested, 0s disables retest. Valid time units are s, m, h. + schema: + type: string + required: true + default: 24h0m0s + - variable: relay + label: Relay + description: Websocket Relay URL + schema: + type: string + required: true + default: wss://snowflake.bamsoftware.com/ + - variable: stun + label: Stun + description: STUN URL + schema: + type: string + required: true + default: stun:stun.stunprotocol.org:3478 + - variable: summary_interval + label: Summary Interval + description: The time interval to output summary, 0s disables summaries. Valid time units are s, m, h. + schema: + type: string + required: true + default: 1h0m0s + - variable: unsafe_logging + label: Unsafe Logging + description: Prevent logs from being scrubbed + schema: + type: boolean + default: false + - variable: verbose + label: Verbose + description: Increase log verbosity + schema: + type: boolean + default: false + - variable: log + label: Log + description: Log Filename + schema: + type: string + default: "" +# Include{containerConfig} +# Include{serviceExpertRoot} + default: true +# Include{serviceList} +# Include{persistenceList} +# Include{security} +# Include{securityContextAdvancedRoot} + - variable: privileged + label: Privileged mode + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: ReadOnly Root Filesystem + schema: + type: boolean + default: true + - variable: allowPrivilegeEscalation + label: Allow Privilege Escalation + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: runAsNonRoot + schema: + type: boolean + default: false +# Include{podSecurityContextRoot} + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 0 + - variable: runAsGroup + label: runAsGroup + description: The groupID this App of the user running the application + schema: + type: int + default: 0 + - variable: fsGroup + label: fsGroup + description: The group that should own ALL storage. + schema: + type: int + default: 568 +# Include{podSecurityContextAdvanced} +# Include{resources} +# Include{advanced} +# Include{addons} +# Include{codeserver} +# Include{vpn} +# Include{documentation} diff --git a/charts/incubator/snowflake-proxy/templates/_args.tpl b/charts/incubator/snowflake-proxy/templates/_args.tpl new file mode 100644 index 00000000000..355aa5a89bf --- /dev/null +++ b/charts/incubator/snowflake-proxy/templates/_args.tpl @@ -0,0 +1,52 @@ +{{/* Define the configmap */}} +{{- define "snowflake.args" -}} +args: + {{- with .Values.snowflake.ephemeral_ports_range }} + - "-ephemeral-ports-range" + - {{ . | quote }} + {{- end }} + {{- if .Values.snowflake.allow_non_tls_relay }} + - "-allow-non-tls-relay" + {{- end }} + {{- with .Values.allowed_relay_hostname_pattern }} + - "-allowed-relay-hostname-pattern" + - {{ . | quote }} + {{- end }} + {{- with .Values.snowflake.broker }} + - "-broker" + - {{ . | quote }} + {{- end }} + {{- with .Values.snowflake.capacity }} + - "-capacity" + - {{ int . | quote }} + {{- end }} + {{- if .Values.snowflake.keep_local_addresses }} + - "-keep-local-addresses" + {{- end }} + {{- with .Values.snowflake.nat_retest_interval }} + - "-nat-retest-interval" + - {{ . | quote }} + {{- end }} + {{- with .Values.snowflake.relay }} + - "-relay" + - {{ . | quote }} + {{- end }} + {{- with .Values.snowflake.stun }} + - "-stun" + - {{ . | quote }} + {{- end }} + {{- with .Values.snowflake.summary_interval }} + - "-summary-interval" + - {{ . | quote }} + {{- end }} + {{- with .Values.snowflake.unsafe_logging }} + - "-unsafe-logging" + {{- end }} + {{- with .Values.snowflake.verbose }} + - "-verbose" + {{- end }} + {{- with .Values.snowflake.log }} + - "-log" + - {{ . | quote }} + {{- end }} +{{- end -}} diff --git a/charts/incubator/snowflake-proxy/templates/common.yaml b/charts/incubator/snowflake-proxy/templates/common.yaml new file mode 100644 index 00000000000..566221d0b7b --- /dev/null +++ b/charts/incubator/snowflake-proxy/templates/common.yaml @@ -0,0 +1,10 @@ +{{/* Make sure all variables are set properly */}} +{{- include "tc.common.loader.init" . }} + +{{- $newArgs := (include "snowflake.args" . | fromYaml) }} +{{- $_ := set .Values "newArgs" $newArgs -}} +{{- $args := concat .Values.args .Values.newArgs.args }} +{{- $_ := set .Values "args" $args -}} + +{{/* Render the templates */}} +{{ include "tc.common.loader.apply" . }} diff --git a/charts/incubator/snowflake-proxy/values.yaml b/charts/incubator/snowflake-proxy/values.yaml new file mode 100644 index 00000000000..a41653c471b --- /dev/null +++ b/charts/incubator/snowflake-proxy/values.yaml @@ -0,0 +1,61 @@ +image: + repository: tccr.io/truecharts/snowflake-proxy + pullPolicy: IfNotPresent + tag: 2.4.1@sha256:aec084e33088c8a8192940aa61d3ff52df91816c4a9465eee6f13c3fdb2e31fd + +podSecurityContext: + runAsUser: 1000 + runAsGroup: 1000 + +# securityContext: +# readOnlyRootFilesystem: false + +hostNetwork: true + +snowflake: + allow_non_tls_relay: false + allowed_relay_hostname_pattern: "snowflake.torproject.net$" + broker: "https://snowflake-broker.torproject.net/" + capacity: 0 + ephemeral_ports_range: "59999:60000" + keep_local_addresses: false + nat_retest_interval: 24h0m0s + relay: "wss://snowflake.bamsoftware.com/" + stun: "stun:stun.stunprotocol.org:3478" + summary_interval: 1h0m0s + unsafe_logging: false + verbose: false + log: "" + +service: + main: + enabled: false + ports: + main: + enabled: false + +probes: + liveness: + custom: true + spec: + exec: + command: + - /bin/proxy + - -version + readiness: + custom: true + spec: + exec: + command: + - /bin/proxy + - -version + startup: + custom: true + spec: + exec: + command: + - /bin/proxy + - -version + +portal: + enabled: false