From 774dc11ea3036ebb028d02845d7635639385adc4 Mon Sep 17 00:00:00 2001 From: Hamid <33328203+emamihe@users.noreply.github.com> Date: Thu, 14 Sep 2023 11:50:30 +0300 Subject: [PATCH] testkube-cloud-secrets added (#33) * testkube-cloud-secrets added * added the keys into one secrets * updated README.md * moved the configurations into testkube-cloud api and ui * some improvement * made some hardcodes to configurable options * doc update * conflict resolution --- charts/testkube-cloud-api/README.md | 8 +++++++ .../templates/deployment.yaml | 9 ++++++++ .../templates/external-secret.yaml | 21 ++++++++++++++++++ charts/testkube-cloud-api/values.yaml | 6 +++++ charts/testkube-cloud-ui-1.13.39.tgz | Bin 6137 -> 6393 bytes charts/testkube-cloud-ui/README.md | 8 +++++++ .../templates/deployment.yaml | 9 ++++++++ .../templates/external-secret.yaml | 21 ++++++++++++++++++ charts/testkube-cloud-ui/values.yaml | 6 +++++ charts/testkube-enterprise/README.md | 13 +++++++++++ .../charts/testkube-cloud-api-1.14.18.tgz | Bin 14565 -> 16043 bytes .../charts/testkube-cloud-ui-1.14.17.tgz | Bin 6127 -> 6465 bytes 12 files changed, 101 insertions(+) create mode 100644 charts/testkube-cloud-api/templates/external-secret.yaml create mode 100644 charts/testkube-cloud-ui/templates/external-secret.yaml diff --git a/charts/testkube-cloud-api/README.md b/charts/testkube-cloud-api/README.md index 684228778..f03b39982 100644 --- a/charts/testkube-cloud-api/README.md +++ b/charts/testkube-cloud-api/README.md @@ -1,6 +1,10 @@ # testkube-cloud-api +<<<<<<< HEAD +![Version: 1.14.7](https://img.shields.io/badge/Version-1.14.7-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.3.13](https://img.shields.io/badge/AppVersion-1.3.13-informational?style=flat-square) +======= ![Version: 1.14.12](https://img.shields.io/badge/Version-1.14.12-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.3.14](https://img.shields.io/badge/AppVersion-1.3.14-informational?style=flat-square) +>>>>>>> origin/develop A Helm chart for Testkube Cloud API @@ -79,6 +83,10 @@ A Helm chart for Testkube Cloud API | autoscaling.minReplicas | int | `1` | | | autoscaling.targetCPUUtilizationPercentage | int | `80` | | | autoscaling.targetMemoryUtilizationPercentage | int | `80` | | +| externalSecrets.clusterSecretStoreName | string | `"secret-store"` | | +| externalSecrets.enabled | bool | `false` | | +| externalSecrets.keys | object | `{}` | | +| externalSecrets.refreshInterval | string | `"5m"` | | | fullnameOverride | string | `""` | | | global.certManager.issuerRef | string | `""` | Certificate Issuer ref (only used if `provider` is set to `cert-manager`) | | global.certificateProvider | string | `""` | TLS provider (possible values: "", "cert-manager") | diff --git a/charts/testkube-cloud-api/templates/deployment.yaml b/charts/testkube-cloud-api/templates/deployment.yaml index 6a4bdc1f7..fa6d227bf 100644 --- a/charts/testkube-cloud-api/templates/deployment.yaml +++ b/charts/testkube-cloud-api/templates/deployment.yaml @@ -277,6 +277,15 @@ spec: - name: {{ $k }} value: "{{ $v }}" {{- end}} + {{- if .Values.externalSecrets.enabled -}} + {{- range $key, $value := .Values.externalSecrets.keys }} + - name: {{ $value }} + valueFrom: + secretKeyRef: + key: {{ $value }} + name: api-external-secrets + {{ end }} + {{- end}} ports: - name: {{ if .Values.api.tls.serveHTTPS }}https{{ else }}http{{ end }} containerPort: {{ if .Values.api.tls.serveHTTPS }}{{ .Values.api.tls.apiPort }}{{ else }}8090{{ end }} diff --git a/charts/testkube-cloud-api/templates/external-secret.yaml b/charts/testkube-cloud-api/templates/external-secret.yaml new file mode 100644 index 000000000..55b403f0a --- /dev/null +++ b/charts/testkube-cloud-api/templates/external-secret.yaml @@ -0,0 +1,21 @@ +{{- if .Values.externalSecrets.enabled -}} +apiVersion: external-secrets.io/v1beta1 +kind: ExternalSecret +metadata: + name: api-external-secrets +spec: + data: +{{- range $key, $value := .Values.externalSecrets.keys }} + - remoteRef: + key: {{ $value }} + secretKey: {{ $key }} +{{ end }} + refreshInterval: {{ .Values.externalSecrets.refreshInterval }} + secretStoreRef: + kind: ClusterSecretStore + name: {{ .Values.externalSecrets.clusterSecretStoreName }} + target: + creationPolicy: Owner + deletionPolicy: Retain + name: api-external-secrets +{{- end }} diff --git a/charts/testkube-cloud-api/values.yaml b/charts/testkube-cloud-api/values.yaml index 9982124db..647eff94f 100644 --- a/charts/testkube-cloud-api/values.yaml +++ b/charts/testkube-cloud-api/values.yaml @@ -186,6 +186,12 @@ api: # -- Comma-separated list of allowed external redirect URIs (example: `https://cloud.testkube.xyz,http://localhost:3000`) allowedExternalRedirectURIs: "" +externalSecrets: + enabled: false + refreshInterval: 5m + clusterSecretStoreName: secret-store + keys: {} + serviceAccount: # -- Toggle whether to create a ServiceAccount resource create: false diff --git a/charts/testkube-cloud-ui-1.13.39.tgz b/charts/testkube-cloud-ui-1.13.39.tgz index d4eb9312551e678a702ec5e1854bdfead19b234e..80312767b58d82d7feafa300938372930ebea18e 100644 GIT binary patch delta 6390 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 E082*Hh5!Hn delta 6132 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 GegFW!u1#A2 diff --git a/charts/testkube-cloud-ui/README.md b/charts/testkube-cloud-ui/README.md index 657cb61a7..1d7408f78 100644 --- a/charts/testkube-cloud-ui/README.md +++ b/charts/testkube-cloud-ui/README.md @@ -1,6 +1,10 @@ # testkube-cloud-ui +<<<<<<< HEAD +![Version: 1.14.8](https://img.shields.io/badge/Version-1.14.8-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.4.0-dev-d3d68fc](https://img.shields.io/badge/AppVersion-1.4.0--dev--d3d68fc-informational?style=flat-square) +======= ![Version: 1.14.17](https://img.shields.io/badge/Version-1.14.17-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.4.0-dev-84e330b](https://img.shields.io/badge/AppVersion-1.4.0--dev--84e330b-informational?style=flat-square) +>>>>>>> origin/develop A Helm chart for Testkube Cloud UI @@ -26,6 +30,10 @@ A Helm chart for Testkube Cloud UI | autoscaling.minReplicas | int | `1` | | | autoscaling.targetCPUUtilizationPercentage | int | `80` | | | autoscaling.targetMemoryUtilizationPercentage | int | `80` | | +| externalSecrets.clusterSecretStoreName | string | `"secret-store"` | | +| externalSecrets.enabled | bool | `false` | | +| externalSecrets.keys | object | `{}` | | +| externalSecrets.refreshInterval | string | `"5m"` | | | fullnameOverride | string | `""` | | | global.certManager.issuerRef | string | `""` | Certificate Issuer ref (only used if `provider` is set to `cert-manager`) | | global.certificateProvider | string | `""` | TLS provider (possible values: "", "cert-manager") | diff --git a/charts/testkube-cloud-ui/templates/deployment.yaml b/charts/testkube-cloud-ui/templates/deployment.yaml index eef5a0da6..2f710c084 100644 --- a/charts/testkube-cloud-ui/templates/deployment.yaml +++ b/charts/testkube-cloud-ui/templates/deployment.yaml @@ -60,6 +60,15 @@ spec: - name: REACT_APP_DISABLE_TELEMETRY value: "true" {{- end }} + {{- if .Values.externalSecrets.enabled -}} + {{- range $key, $value := .Values.externalSecrets.keys }} + - name: {{ $value }} + valueFrom: + secretKeyRef: + key: {{ $value }} + name: ui-external-secrets + {{ end }} + {{- end}} livenessProbe: httpGet: path: / diff --git a/charts/testkube-cloud-ui/templates/external-secret.yaml b/charts/testkube-cloud-ui/templates/external-secret.yaml new file mode 100644 index 000000000..dfda1260c --- /dev/null +++ b/charts/testkube-cloud-ui/templates/external-secret.yaml @@ -0,0 +1,21 @@ +{{- if .Values.externalSecrets.enabled -}} +apiVersion: external-secrets.io/v1beta1 +kind: ExternalSecret +metadata: + name: ui-external-secrets +spec: + data: +{{- range $key, $value := .Values.externalSecrets.keys }} + - remoteRef: + key: {{ $value }} + secretKey: {{ $key }} +{{ end }} + refreshInterval: {{ .Values.externalSecrets.refreshInterval }} + secretStoreRef: + kind: ClusterSecretStore + name: {{ .Values.externalSecrets.clusterSecretStoreName }} + target: + creationPolicy: Owner + deletionPolicy: Retain + name: ui-external-secrets +{{- end }} diff --git a/charts/testkube-cloud-ui/values.yaml b/charts/testkube-cloud-ui/values.yaml index bbd946751..45aad9129 100644 --- a/charts/testkube-cloud-ui/values.yaml +++ b/charts/testkube-cloud-ui/values.yaml @@ -53,6 +53,12 @@ ui: # -- Force disabling telemetry on the UI disableTelemetry: false +externalSecrets: + enabled: false + refreshInterval: 5m + clusterSecretStoreName: secret-store + keys: {} + serviceAccount: # -- Toggle whether to create ServiceAccount resource create: false diff --git a/charts/testkube-enterprise/README.md b/charts/testkube-enterprise/README.md index a8cd8fffe..7539c6fe1 100644 --- a/charts/testkube-enterprise/README.md +++ b/charts/testkube-enterprise/README.md @@ -21,8 +21,13 @@ A Helm chart for Testkube Enterprise | Repository | Name | Version | |------------|------|---------| +<<<<<<< HEAD +| file://../testkube-cloud-api | testkube-cloud-api | 1.14.7 | +| file://../testkube-cloud-ui | testkube-cloud-ui | 1.14.8 | +======= | file://../testkube-cloud-api | testkube-cloud-api | 1.14.12 | | file://../testkube-cloud-ui | testkube-cloud-ui | 1.14.17 | +>>>>>>> origin/develop | https://charts.bitnami.com/bitnami | common | 2.2.5 | | https://charts.bitnami.com/bitnami | mongodb | 13.10.2 | | https://charts.dexidp.io | dex | 0.14.1 | @@ -124,7 +129,11 @@ A Helm chart for Testkube Enterprise | testkube-cloud-api.api.tls.tlsSecret | string | `"testkube-enterprise-api-tls"` | | | testkube-cloud-api.fullnameOverride | string | `"testkube-enterprise-api"` | | | testkube-cloud-api.image.repository | string | `"testkubeenterprise/testkube-enterprise-api"` | | +<<<<<<< HEAD +| testkube-cloud-api.image.tag | string | `"1.3.13"` | | +======= | testkube-cloud-api.image.tag | string | `"1.3.14"` | | +>>>>>>> origin/develop | testkube-cloud-api.ingress | string | `nil` | | | testkube-cloud-api.minio.accessModes | list | `["ReadWriteOnce"]` | PVC Access Modes for Minio. The volume is mounted as read-write by a single node. | | testkube-cloud-api.minio.affinity | object | `{}` | Affinity for pod assignment. | @@ -147,7 +156,11 @@ A Helm chart for Testkube Enterprise | testkube-cloud-api.prometheus.enabled | bool | `true` | | | testkube-cloud-ui.fullnameOverride | string | `"testkube-enterprise-ui"` | | | testkube-cloud-ui.image.repository | string | `"testkubeenterprise/testkube-enterprise-ui"` | | +<<<<<<< HEAD +| testkube-cloud-ui.image.tag | string | `"1.4.0-dev-d3d68fc"` | | +======= | testkube-cloud-ui.image.tag | string | `"1.4.0-dev-84e330b"` | | +>>>>>>> origin/develop | testkube-cloud-ui.ingress.tlsSecretName | string | `"testkube-enterprise-ui-tls"` | Name of the TLS secret which contains the certificate files | ---------------------------------------------- diff --git a/charts/testkube-enterprise/charts/testkube-cloud-api-1.14.18.tgz b/charts/testkube-enterprise/charts/testkube-cloud-api-1.14.18.tgz index e61f23627d34f242b66615dd6418ece38b5f2521..3decaa1a87d2d26238f00f997f6a6d9957483979 100644 GIT binary patch literal 16043 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