From 046a599d59111710707f3692b095024fb0ab88b0 Mon Sep 17 00:00:00 2001 From: Yevhen Kizin <84331044+ykizin@users.noreply.github.com> Date: Thu, 5 Sep 2024 18:21:52 +0300 Subject: [PATCH 1/3] Added imagePullSecrets to helm chart (#50) --- stable/connector/Chart.yaml | 2 +- stable/connector/README.md | 2 +- stable/connector/templates/_helpers.tpl | 12 +++- stable/connector/templates/deployment.yaml | 1 + stable/connector/values.schema.json | 16 ++++- stable/connector/values.yaml | 1 + test/golden/default-values.yaml | 1 + test/golden/image-pull-secrets.golden.yaml | 69 ++++++++++++++++++++++ test/golden/image-pull-secrets.yaml | 3 + 9 files changed, 102 insertions(+), 5 deletions(-) create mode 100644 test/golden/image-pull-secrets.golden.yaml create mode 100644 test/golden/image-pull-secrets.yaml diff --git a/stable/connector/Chart.yaml b/stable/connector/Chart.yaml index b320476..e084b35 100644 --- a/stable/connector/Chart.yaml +++ b/stable/connector/Chart.yaml @@ -4,4 +4,4 @@ home: https://www.twingate.com description: Twingate Connector helm chart icon: https://www.twingate.com/twingate.png name: connector -version: 0.1.26 +version: 0.1.27 diff --git a/stable/connector/README.md b/stable/connector/README.md index 4993b3c..920888e 100644 --- a/stable/connector/README.md +++ b/stable/connector/README.md @@ -72,7 +72,7 @@ The following table lists the configurable parameters of the Twingate chart and | `image.repository` | Twingate image name | `twingate/connector` | | `image.tag` | Twingate image tag | `latest` | | `image.pullPolicy` | Twingate image pull policy | `Always` | -| `image.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) | +| `image.imagePullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) | | `nameOverride` | String to partially override twingate.fullname template | `nil` | | `fullnameOverride` | String to fully override twingate.fullname template | `nil` | | `icmpSupport.enabled` | Enable the ICMP securityContext. See more in values file | `false` | diff --git a/stable/connector/templates/_helpers.tpl b/stable/connector/templates/_helpers.tpl index 01a1579..f230dcd 100644 --- a/stable/connector/templates/_helpers.tpl +++ b/stable/connector/templates/_helpers.tpl @@ -23,7 +23,17 @@ If release name contains chart name it will be used as a full name. {{- end -}} {{- end -}} {{- end -}} - +{{/* +Add the imagePullSecrets to the pod +*/}} +{{- define "cn.imagePullSecrets" -}} +{{- if .Values.image.imagePullSecrets}} +imagePullSecrets: +{{- range .Values.image.imagePullSecrets }} + - name: {{ . }} +{{- end }} +{{- end -}} +{{- end -}} {{/* Create chart name and version as used by the chart label. */}} diff --git a/stable/connector/templates/deployment.yaml b/stable/connector/templates/deployment.yaml index 932e733..9bc7845 100644 --- a/stable/connector/templates/deployment.yaml +++ b/stable/connector/templates/deployment.yaml @@ -35,6 +35,7 @@ spec: {{- if .Values.hostNetwork }} hostNetwork: true {{- end }} + {{- include "cn.imagePullSecrets" . | indent 6 }} containers: - name: {{ .Chart.Name }} image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" diff --git a/stable/connector/values.schema.json b/stable/connector/values.schema.json index 2574883..18e7d7f 100644 --- a/stable/connector/values.schema.json +++ b/stable/connector/values.schema.json @@ -35,12 +35,22 @@ "IfNotPresent", "Never" ] + }, + "imagePullSecrets": { + "type": "array", + "default": [], + "title": "The imagePullSecrets Schema", + "items": { + "type": "string" + } } }, "examples": [{ "repository": "twingate/connector", "tag": 1, - "pullPolicy": "Always" + "pullPolicy": "Always", + "imagePullSecrets": + ["dockerhub-secret"] }] }, "hostNetwork": { @@ -131,7 +141,9 @@ "image": { "repository": "twingate/connector", "tag": 1, - "pullPolicy": "Always" + "pullPolicy": "Always", + "imagePullSecrets": + ["dockerhub-secret"] }, "hostNetwork": false, "resources": { diff --git a/stable/connector/values.yaml b/stable/connector/values.yaml index fb038c5..a5f73e0 100644 --- a/stable/connector/values.yaml +++ b/stable/connector/values.yaml @@ -9,6 +9,7 @@ image: repository: twingate/connector tag: 1 pullPolicy: Always + imagePullSecrets: [] ## Enable/Disable host network for the pod ## diff --git a/test/golden/default-values.yaml b/test/golden/default-values.yaml index 59c41c8..6af56a1 100644 --- a/test/golden/default-values.yaml +++ b/test/golden/default-values.yaml @@ -2,6 +2,7 @@ image: repository: twingate/connector tag: 1 pullPolicy: Always + imagePullSecrets: [] resources: requests: diff --git a/test/golden/image-pull-secrets.golden.yaml b/test/golden/image-pull-secrets.golden.yaml new file mode 100644 index 0000000..b39af5c --- /dev/null +++ b/test/golden/image-pull-secrets.golden.yaml @@ -0,0 +1,69 @@ +--- +# Source: connector/templates/secret.yaml +apiVersion: v1 +kind: Secret +metadata: + name: test-connector + labels: + app.kubernetes.io/name: connector + helm.sh/chart: connector-major.minor.patch-test + app.kubernetes.io/instance: test + app.kubernetes.io/version: "latest" + app.kubernetes.io/managed-by: Helm +type: Opaque +data: + TWINGATE_ACCESS_TOKEN: "QUNDRVNTX1RPS0VO" + TWINGATE_REFRESH_TOKEN: "UkVGUkVTSF9UT0tFTg==" +--- +# Source: connector/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: test-connector + labels: + app.kubernetes.io/name: connector + helm.sh/chart: connector-major.minor.patch-test + app.kubernetes.io/instance: test + app.kubernetes.io/version: "latest" + app.kubernetes.io/managed-by: Helm +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: connector + app.kubernetes.io/instance: test + template: + metadata: + labels: + app.kubernetes.io/name: connector + app.kubernetes.io/instance: test + spec: + imagePullSecrets: + - name: docker-hub-registry + containers: + - name: connector + image: "twingate/connector:1" + imagePullPolicy: Always + envFrom: + - secretRef: + name: test-connector + optional: false + env: + - name: TWINGATE_LABEL_DEPLOYED_BY + value: helm + - name: TWINGATE_LABEL_HELM_CHART + value: connector-major.minor.patch-test + - name: TWINGATE_URL + value: "https://test-tenant.twingate.com" + - name: TWINGATE_LOG_LEVEL + value: "3" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] + runAsNonRoot: true + runAsUser: 65532 + resources: + requests: + cpu: 50m + memory: 200Mi diff --git a/test/golden/image-pull-secrets.yaml b/test/golden/image-pull-secrets.yaml new file mode 100644 index 0000000..a40d910 --- /dev/null +++ b/test/golden/image-pull-secrets.yaml @@ -0,0 +1,3 @@ +image: + imagePullSecrets: + - docker-hub-registry From 5435363f03339ffd3e46aa8a9760ec793f624e7c Mon Sep 17 00:00:00 2001 From: Eran Kampf Date: Thu, 5 Sep 2024 08:33:33 -0700 Subject: [PATCH 2/3] Revert "Added imagePullSecrets to helm chart (#50)" This reverts commit 046a599d59111710707f3692b095024fb0ab88b0. --- stable/connector/Chart.yaml | 2 +- stable/connector/README.md | 2 +- stable/connector/templates/_helpers.tpl | 12 +--- stable/connector/templates/deployment.yaml | 1 - stable/connector/values.schema.json | 16 +---- stable/connector/values.yaml | 1 - test/golden/default-values.yaml | 1 - test/golden/image-pull-secrets.golden.yaml | 69 ---------------------- test/golden/image-pull-secrets.yaml | 3 - 9 files changed, 5 insertions(+), 102 deletions(-) delete mode 100644 test/golden/image-pull-secrets.golden.yaml delete mode 100644 test/golden/image-pull-secrets.yaml diff --git a/stable/connector/Chart.yaml b/stable/connector/Chart.yaml index e084b35..b320476 100644 --- a/stable/connector/Chart.yaml +++ b/stable/connector/Chart.yaml @@ -4,4 +4,4 @@ home: https://www.twingate.com description: Twingate Connector helm chart icon: https://www.twingate.com/twingate.png name: connector -version: 0.1.27 +version: 0.1.26 diff --git a/stable/connector/README.md b/stable/connector/README.md index 920888e..4993b3c 100644 --- a/stable/connector/README.md +++ b/stable/connector/README.md @@ -72,7 +72,7 @@ The following table lists the configurable parameters of the Twingate chart and | `image.repository` | Twingate image name | `twingate/connector` | | `image.tag` | Twingate image tag | `latest` | | `image.pullPolicy` | Twingate image pull policy | `Always` | -| `image.imagePullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) | +| `image.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) | | `nameOverride` | String to partially override twingate.fullname template | `nil` | | `fullnameOverride` | String to fully override twingate.fullname template | `nil` | | `icmpSupport.enabled` | Enable the ICMP securityContext. See more in values file | `false` | diff --git a/stable/connector/templates/_helpers.tpl b/stable/connector/templates/_helpers.tpl index f230dcd..01a1579 100644 --- a/stable/connector/templates/_helpers.tpl +++ b/stable/connector/templates/_helpers.tpl @@ -23,17 +23,7 @@ If release name contains chart name it will be used as a full name. {{- end -}} {{- end -}} {{- end -}} -{{/* -Add the imagePullSecrets to the pod -*/}} -{{- define "cn.imagePullSecrets" -}} -{{- if .Values.image.imagePullSecrets}} -imagePullSecrets: -{{- range .Values.image.imagePullSecrets }} - - name: {{ . }} -{{- end }} -{{- end -}} -{{- end -}} + {{/* Create chart name and version as used by the chart label. */}} diff --git a/stable/connector/templates/deployment.yaml b/stable/connector/templates/deployment.yaml index 9bc7845..932e733 100644 --- a/stable/connector/templates/deployment.yaml +++ b/stable/connector/templates/deployment.yaml @@ -35,7 +35,6 @@ spec: {{- if .Values.hostNetwork }} hostNetwork: true {{- end }} - {{- include "cn.imagePullSecrets" . | indent 6 }} containers: - name: {{ .Chart.Name }} image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" diff --git a/stable/connector/values.schema.json b/stable/connector/values.schema.json index 18e7d7f..2574883 100644 --- a/stable/connector/values.schema.json +++ b/stable/connector/values.schema.json @@ -35,22 +35,12 @@ "IfNotPresent", "Never" ] - }, - "imagePullSecrets": { - "type": "array", - "default": [], - "title": "The imagePullSecrets Schema", - "items": { - "type": "string" - } } }, "examples": [{ "repository": "twingate/connector", "tag": 1, - "pullPolicy": "Always", - "imagePullSecrets": - ["dockerhub-secret"] + "pullPolicy": "Always" }] }, "hostNetwork": { @@ -141,9 +131,7 @@ "image": { "repository": "twingate/connector", "tag": 1, - "pullPolicy": "Always", - "imagePullSecrets": - ["dockerhub-secret"] + "pullPolicy": "Always" }, "hostNetwork": false, "resources": { diff --git a/stable/connector/values.yaml b/stable/connector/values.yaml index a5f73e0..fb038c5 100644 --- a/stable/connector/values.yaml +++ b/stable/connector/values.yaml @@ -9,7 +9,6 @@ image: repository: twingate/connector tag: 1 pullPolicy: Always - imagePullSecrets: [] ## Enable/Disable host network for the pod ## diff --git a/test/golden/default-values.yaml b/test/golden/default-values.yaml index 6af56a1..59c41c8 100644 --- a/test/golden/default-values.yaml +++ b/test/golden/default-values.yaml @@ -2,7 +2,6 @@ image: repository: twingate/connector tag: 1 pullPolicy: Always - imagePullSecrets: [] resources: requests: diff --git a/test/golden/image-pull-secrets.golden.yaml b/test/golden/image-pull-secrets.golden.yaml deleted file mode 100644 index b39af5c..0000000 --- a/test/golden/image-pull-secrets.golden.yaml +++ /dev/null @@ -1,69 +0,0 @@ ---- -# Source: connector/templates/secret.yaml -apiVersion: v1 -kind: Secret -metadata: - name: test-connector - labels: - app.kubernetes.io/name: connector - helm.sh/chart: connector-major.minor.patch-test - app.kubernetes.io/instance: test - app.kubernetes.io/version: "latest" - app.kubernetes.io/managed-by: Helm -type: Opaque -data: - TWINGATE_ACCESS_TOKEN: "QUNDRVNTX1RPS0VO" - TWINGATE_REFRESH_TOKEN: "UkVGUkVTSF9UT0tFTg==" ---- -# Source: connector/templates/deployment.yaml -apiVersion: apps/v1 -kind: Deployment -metadata: - name: test-connector - labels: - app.kubernetes.io/name: connector - helm.sh/chart: connector-major.minor.patch-test - app.kubernetes.io/instance: test - app.kubernetes.io/version: "latest" - app.kubernetes.io/managed-by: Helm -spec: - replicas: 1 - selector: - matchLabels: - app.kubernetes.io/name: connector - app.kubernetes.io/instance: test - template: - metadata: - labels: - app.kubernetes.io/name: connector - app.kubernetes.io/instance: test - spec: - imagePullSecrets: - - name: docker-hub-registry - containers: - - name: connector - image: "twingate/connector:1" - imagePullPolicy: Always - envFrom: - - secretRef: - name: test-connector - optional: false - env: - - name: TWINGATE_LABEL_DEPLOYED_BY - value: helm - - name: TWINGATE_LABEL_HELM_CHART - value: connector-major.minor.patch-test - - name: TWINGATE_URL - value: "https://test-tenant.twingate.com" - - name: TWINGATE_LOG_LEVEL - value: "3" - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: ["ALL"] - runAsNonRoot: true - runAsUser: 65532 - resources: - requests: - cpu: 50m - memory: 200Mi diff --git a/test/golden/image-pull-secrets.yaml b/test/golden/image-pull-secrets.yaml deleted file mode 100644 index a40d910..0000000 --- a/test/golden/image-pull-secrets.yaml +++ /dev/null @@ -1,3 +0,0 @@ -image: - imagePullSecrets: - - docker-hub-registry From 4a0d45b7292e933b35b062621ddcd4a1eee78954 Mon Sep 17 00:00:00 2001 From: twingate-build-bot Date: Thu, 5 Sep 2024 15:35:16 +0000 Subject: [PATCH 3/3] publish 394 --- index.yaml | 192 ++++++++++++++++++++++++++++++++++ packages/connector-0.1.26.tgz | Bin 0 -> 5540 bytes 2 files changed, 192 insertions(+) create mode 100644 index.yaml create mode 100644 packages/connector-0.1.26.tgz diff --git a/index.yaml b/index.yaml new file mode 100644 index 0000000..510acea --- /dev/null +++ b/index.yaml @@ -0,0 +1,192 @@ +apiVersion: v1 +entries: + connector: + - apiVersion: v1 + appVersion: latest + created: "2024-09-05T15:35:16.795919302Z" + description: Twingate Connector helm chart + digest: a362bcc7b30d4beaaa9db1a7d33adf624af4c976b0ff5495aff5b296ab68af9b + home: https://www.twingate.com + icon: https://www.twingate.com/twingate.png + name: connector + urls: + - https://twingate.github.io/helm-charts/packages/connector-0.1.26.tgz + version: 0.1.26 + - apiVersion: v1 + appVersion: latest + created: "2024-06-11T15:53:12.408518685Z" + description: Twingate Connector helm chart + digest: 93d3ace13a3becd36bff707235ca9c7948382c3a67a7cd096a186b048bf78163 + home: https://www.twingate.com + icon: https://www.twingate.com/twingate.png + name: connector + urls: + - https://twingate.github.io/helm-charts/packages/connector-0.1.25.tgz + version: 0.1.25 + - apiVersion: v1 + appVersion: latest + created: "2024-06-11T05:40:02.441706024Z" + description: Twingate Connector helm chart + digest: a734031f6421083fc63ace53924ed349a88f1016123773b10b6c43f1de1ebcc5 + home: https://www.twingate.com + icon: https://www.twingate.com/twingate.png + name: connector + urls: + - https://twingate.github.io/helm-charts/packages/connector-0.1.24.tgz + version: 0.1.24 + - apiVersion: v1 + appVersion: latest + created: "2023-12-20T18:03:46.812556341Z" + description: Twingate Connector helm chart + digest: 859f8b9be9e6129f3c7fdcf197129525e5dd83c9d396744a501af0aecf8d17f1 + home: https://www.twingate.com + icon: https://www.twingate.com/twingate.png + name: connector + urls: + - https://twingate.github.io/helm-charts/packages/connector-0.1.23.tgz + version: 0.1.23 + - apiVersion: v1 + appVersion: latest + created: "2023-09-11T17:05:07.861777017Z" + description: Twingate Connector helm chart + digest: 1f13149b70ce886d1670c005a0853be581e68e81553e32cbdc32e70e4df02b03 + home: https://www.twingate.com + icon: https://www.twingate.com/twingate.png + name: connector + urls: + - https://twingate.github.io/helm-charts/packages/connector-0.1.22.tgz + version: 0.1.22 + - apiVersion: v1 + appVersion: latest + created: "2023-09-07T23:29:24.322329463Z" + description: Twingate Connector helm chart + digest: 0ef16e163ef90d9e6b523279df00b88307fbb77504bfacdf1584c9d3c67728c0 + home: https://www.twingate.com + icon: https://www.twingate.com/twingate.png + name: connector + urls: + - https://twingate.github.io/helm-charts/packages/connector-0.1.21.tgz + version: 0.1.21 + - apiVersion: v1 + appVersion: latest + created: "2023-08-25T05:01:00.702065089Z" + description: Twingate Connector helm chart + digest: 926016f8e52026a1c3b450c7b4dc0660c6909e469383d7e6c5655d0d21de698f + home: https://www.twingate.com + icon: https://www.twingate.com/twingate.png + name: connector + urls: + - https://twingate.github.io/helm-charts/packages/connector-0.1.20.tgz + version: 0.1.20 + - apiVersion: v1 + appVersion: latest + created: "2023-08-14T22:49:08.358363332Z" + description: Twingate Connector helm chart + digest: 57a15f0b7533ca8c9ff8e3a180defbeb12c314716c1871cfcfd6ef6cb5e6252c + home: https://www.twingate.com + icon: https://www.twingate.com/twingate.png + name: connector + urls: + - https://twingate.github.io/helm-charts/packages/connector-0.1.19.tgz + version: 0.1.19 + - apiVersion: v1 + appVersion: latest + created: "2023-07-31T15:59:00.114856576Z" + description: Twingate Connector helm chart + digest: 79b863c61e8f6766cc7611dd3017ecb82a92d935b647357799ddea00791d37f7 + home: https://www.twingate.com + name: connector + urls: + - https://twingate.github.io/helm-charts/packages/connector-0.1.18.tgz + version: 0.1.18 + - apiVersion: v1 + appVersion: latest + created: "2023-07-28T22:01:46.580635997Z" + description: Twingate Connector helm chart + digest: 9ec38e5396d8ea804daa923500969ee25ed4dd6325b8eebd30f6eb9c8cdd34f4 + home: https://www.twingate.com + name: connector + urls: + - https://twingate.github.io/helm-charts/packages/connector-0.1.17.tgz + version: 0.1.17 + - apiVersion: v1 + appVersion: latest + created: "2023-06-05T01:45:14.85107974Z" + description: Twingate Connector helm chart + digest: 2728c6bcc9e8f9f79c38da06935a554e7f23575c1d1f9da882c7e08f3404aeb3 + home: https://www.twingate.com + name: connector + urls: + - https://twingate.github.io/helm-charts/packages/connector-0.1.16.tgz + version: 0.1.16 + - apiVersion: v1 + appVersion: latest + created: "2023-05-30T15:42:08.25908964Z" + description: Twingate Connector helm chart + digest: 0bdd619a0a66c6c12167717fa9f9ae143e3367e9fee9ac83e3f1d2a964caada7 + home: https://www.twingate.com + name: connector + urls: + - https://twingate.github.io/helm-charts/packages/connector-0.1.15.tgz + version: 0.1.15 + - apiVersion: v1 + appVersion: latest + created: "2023-05-15T22:24:13.815966128Z" + description: Twingate Connector helm chart + digest: edb9b79c6bd250fa82c17ad1023472a45aa023bb4c0bbf808bab0f065952007f + home: https://www.twingate.com + name: connector + urls: + - https://twingate.github.io/helm-charts/packages/connector-0.1.14.tgz + version: 0.1.14 + - apiVersion: v1 + appVersion: latest + created: "2022-10-03T21:00:38.668519433Z" + description: Twingate Connector helm chart + digest: cd667b14eede671eb1fd4fe22b716c2ce2ee68104c9c5be01181dec486af7100 + home: https://www.twingate.com + name: connector + urls: + - https://twingate.github.io/helm-charts/packages/connector-0.1.13.tgz + version: 0.1.13 + - apiVersion: v1 + appVersion: latest + created: "2022-07-06T17:41:51.672421099Z" + description: Twingate Connector helm chart + digest: bb3e01cadf2123eead1ac0c6efc69e08e80612535c49fe737b151bad8210b840 + home: https://www.twingate.com + name: connector + urls: + - https://twingate.github.io/helm-charts/packages/connector-0.1.12.tgz + version: 0.1.12 + - apiVersion: v1 + appVersion: latest + created: "2022-07-06T17:14:04.135784651Z" + description: Twingate Connector helm chart + digest: 8b3682202a5c7f18812e324cc876355c99e6dba888ee435b0e7fbd3822612682 + home: https://www.twingate.com + name: connector + urls: + - https://twingate.github.io/helm-charts/packages/connector-0.1.11.tgz + version: 0.1.11 + - apiVersion: v1 + appVersion: latest + created: "2021-12-15T20:45:25.693118238Z" + description: Twingate Connector helm chart + digest: 38f00e914b99e661c2b60d4bdc9b1be6a818920b2daaeec15ea25d46b076e48d + home: https://www.twingate.com + name: connector + urls: + - https://twingate.github.io/helm-charts/packages/connector-0.1.10.tgz + version: 0.1.10 + - apiVersion: v1 + appVersion: latest + created: "2021-12-09T04:58:11.393000932Z" + description: Twingate Connector helm chart + digest: 6608e29b7c9e5499947c08c62ebecd44dc66721398fcc8248deb6b3aaf649ccb + home: https://www.twingate.com + name: connector + urls: + - https://twingate.github.io/helm-charts/packages/connector-0.1.9.tgz + version: 0.1.9 +generated: "2024-09-05T15:35:16.795164Z" diff --git a/packages/connector-0.1.26.tgz b/packages/connector-0.1.26.tgz new file mode 100644 index 0000000000000000000000000000000000000000..5176349e9fc7eb7b408fc0d68432f8fdee011195 GIT binary patch literal 5540 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 literal 0 HcmV?d00001