diff --git a/.github/labeler.yml b/.github/labeler.yml index 02b4b0be..d4f9b2b4 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -17,3 +17,6 @@ docs: automation: - .github/**/* + +ngrok-agent: +- charts/ngrok-agent/**/* diff --git a/charts/ngrok-agent/.helmignore b/charts/ngrok-agent/.helmignore new file mode 100644 index 00000000..0e8a0eb3 --- /dev/null +++ b/charts/ngrok-agent/.helmignore @@ -0,0 +1,23 @@ +# 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 +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/charts/ngrok-agent/Chart.yaml b/charts/ngrok-agent/Chart.yaml new file mode 100644 index 00000000..02a51756 --- /dev/null +++ b/charts/ngrok-agent/Chart.yaml @@ -0,0 +1,12 @@ +apiVersion: v2 +name: ngrok-agent +description: A Helm chart for Kubernetes +type: application +version: 0.1.0 +maintainers: + - name: codefresh + url: https://codefresh-io.github.io/ +dependencies: + - name: cf-common + repository: oci://quay.io/codefresh/charts + version: 0.20.1 diff --git a/charts/ngrok-agent/templates/_components/configmap.tpl b/charts/ngrok-agent/templates/_components/configmap.tpl new file mode 100644 index 00000000..8763aea4 --- /dev/null +++ b/charts/ngrok-agent/templates/_components/configmap.tpl @@ -0,0 +1,6 @@ +{{- define "ngrok-agent.configmap" }} + +{{- $templateName := printf "cf-common-%s.configmaps" (index .Subcharts "cf-common").Chart.Version -}} +{{- include $templateName . -}} + +{{- end }} diff --git a/charts/ngrok-agent/templates/_components/controller.tpl b/charts/ngrok-agent/templates/_components/controller.tpl new file mode 100644 index 00000000..57bc90ee --- /dev/null +++ b/charts/ngrok-agent/templates/_components/controller.tpl @@ -0,0 +1,6 @@ +{{- define "ngrok-agent.controller" }} + +{{- $templateName := printf "cf-common-%s.controller" (index .Subcharts "cf-common").Chart.Version -}} +{{- include $templateName . -}} + +{{- end }} diff --git a/charts/ngrok-agent/templates/_helpers.tpl b/charts/ngrok-agent/templates/_helpers.tpl new file mode 100644 index 00000000..459ada06 --- /dev/null +++ b/charts/ngrok-agent/templates/_helpers.tpl @@ -0,0 +1,62 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "ngrok-agent.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "ngrok-agent.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "ngrok-agent.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "ngrok-agent.labels" -}} +helm.sh/chart: {{ include "ngrok-agent.chart" . }} +{{ include "ngrok-agent.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "ngrok-agent.selectorLabels" -}} +app.kubernetes.io/name: {{ include "ngrok-agent.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "ngrok-agent.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "ngrok-agent.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/charts/ngrok-agent/templates/all_resources.yaml b/charts/ngrok-agent/templates/all_resources.yaml new file mode 100644 index 00000000..32bdea28 --- /dev/null +++ b/charts/ngrok-agent/templates/all_resources.yaml @@ -0,0 +1,7 @@ +{{- define "ngrok-agent.resources" -}} + +{{ include "ngrok-agent.controller" . }} +--- +{{ include "ngrok-agent.configmap" . }} + +{{- end -}} diff --git a/charts/ngrok-agent/templates/configmap.yaml b/charts/ngrok-agent/templates/configmap.yaml new file mode 100644 index 00000000..ecc6c11e --- /dev/null +++ b/charts/ngrok-agent/templates/configmap.yaml @@ -0,0 +1,3 @@ +{{- if not .Values.libraryMode }} +{{- include "ngrok-agent.configmap" . }} +{{- end }} diff --git a/charts/ngrok-agent/templates/deployment.yaml b/charts/ngrok-agent/templates/deployment.yaml new file mode 100644 index 00000000..bac11ff1 --- /dev/null +++ b/charts/ngrok-agent/templates/deployment.yaml @@ -0,0 +1,3 @@ +{{- if not .Values.libraryMode }} +{{- include "ngrok-agent.controller" . }} +{{- end }} diff --git a/charts/ngrok-agent/values.yaml b/charts/ngrok-agent/values.yaml new file mode 100644 index 00000000..35adac05 --- /dev/null +++ b/charts/ngrok-agent/values.yaml @@ -0,0 +1,69 @@ +libraryMode: true + +global: {} + +codefresh: + internal-gateway-svc: internal-gateway + internal-gateway-port: 80 + + ngrok-domain: "" + +ngrok: + config: | + version: 3 + tunnels: + ingresshost: + proto: http + addr: {{ printf "%s:%v" (index .Values.codefresh "internal-gateway-svc") (index .Values.codefresh "internal-gateway-port") }} + hostname: {{ index .Values.codefresh "ngrok-domain" }} + +controller: + enabled: true + type: deployment + replicas: 1 + deployment: + strategy: Recreate + +container: + image: + registry: docker.io + repository: ngrok/ngrok + tag: 3-alpine + pullPolicy: IfNotPresent + command: + - "ngrok" + args: + - "start" + - "--all" + - "--config=/etc/ngrok.yml" + - "--log=stdout" + - "--log-format=json" + - "--log-level=debug" + env: + NGROK_AUTHTOKEN: "" + volumeMounts: + config: + path: + - mountPath: /etc/ngrok.yml + subPath: ngrok.yml + +configMaps: + config: + enabled: true + data: + ngrok.yml: | + {{ include (printf "cf-common-%s.tplrender" (index .Subcharts "cf-common").Chart.Version) ( dict "Values" .Values.ngrok.config "context" .) | nindent 2 }} + +volumes: + config: + enabled: true + type: configMap + +nodeSelector: {} +tolerations: [] +affinity: {} +hpa: {} +keda: + spec: {} + auth: {} +pdb: {}