From 747a847b1773569560ca7ede0d57768fa5d7b1c1 Mon Sep 17 00:00:00 2001 From: greg-the-coder Date: Wed, 22 Jan 2025 12:29:53 -0600 Subject: [PATCH] Updated Coder Partner Chart Addition (#1102) --- assets/coder/coder-2.18.3.tgz | Bin 0 -> 11094 bytes assets/icons/coder.png | Bin 0 -> 11099 bytes charts/coder/coder/2.18.3/.helmignore | 27 ++ charts/coder/coder/2.18.3/Chart.lock | 6 + charts/coder/coder/2.18.3/Chart.yaml | 27 ++ charts/coder/coder/2.18.3/README.md | 53 +++ charts/coder/coder/2.18.3/app-readme.md | 16 + .../coder/2.18.3/charts/libcoder/Chart.yaml | 11 + .../charts/libcoder/templates/_coder.yaml | 89 +++++ .../charts/libcoder/templates/_helpers.tpl | 200 ++++++++++ .../charts/libcoder/templates/_rbac.yaml | 62 +++ .../charts/libcoder/templates/_util.yaml | 13 + charts/coder/coder/2.18.3/templates/NOTES.txt | 6 + .../coder/coder/2.18.3/templates/_coder.tpl | 108 ++++++ .../coder/coder/2.18.3/templates/coder.yaml | 7 + .../2.18.3/templates/extra-templates.yaml | 4 + .../coder/coder/2.18.3/templates/ingress.yaml | 54 +++ charts/coder/coder/2.18.3/templates/rbac.yaml | 1 + .../coder/coder/2.18.3/templates/service.yaml | 41 ++ charts/coder/coder/2.18.3/values.yaml | 354 ++++++++++++++++++ index.yaml | 34 +- packages/coder/coder/overlay/app-readme.md | 16 + packages/coder/coder/upstream.yaml | 6 + 23 files changed, 1134 insertions(+), 1 deletion(-) create mode 100644 assets/coder/coder-2.18.3.tgz create mode 100644 assets/icons/coder.png create mode 100644 charts/coder/coder/2.18.3/.helmignore create mode 100644 charts/coder/coder/2.18.3/Chart.lock create mode 100644 charts/coder/coder/2.18.3/Chart.yaml create mode 100644 charts/coder/coder/2.18.3/README.md create mode 100644 charts/coder/coder/2.18.3/app-readme.md create mode 100644 charts/coder/coder/2.18.3/charts/libcoder/Chart.yaml create mode 100644 charts/coder/coder/2.18.3/charts/libcoder/templates/_coder.yaml create mode 100644 charts/coder/coder/2.18.3/charts/libcoder/templates/_helpers.tpl create mode 100644 charts/coder/coder/2.18.3/charts/libcoder/templates/_rbac.yaml create mode 100644 charts/coder/coder/2.18.3/charts/libcoder/templates/_util.yaml create mode 100644 charts/coder/coder/2.18.3/templates/NOTES.txt create mode 100644 charts/coder/coder/2.18.3/templates/_coder.tpl create mode 100644 charts/coder/coder/2.18.3/templates/coder.yaml create mode 100644 charts/coder/coder/2.18.3/templates/extra-templates.yaml create mode 100644 charts/coder/coder/2.18.3/templates/ingress.yaml create mode 100644 charts/coder/coder/2.18.3/templates/rbac.yaml create mode 100644 charts/coder/coder/2.18.3/templates/service.yaml create mode 100644 charts/coder/coder/2.18.3/values.yaml create mode 100644 packages/coder/coder/overlay/app-readme.md create mode 100644 packages/coder/coder/upstream.yaml diff --git a/assets/coder/coder-2.18.3.tgz b/assets/coder/coder-2.18.3.tgz new file mode 100644 index 0000000000000000000000000000000000000000..d27e35bcd41164f72766b9f6fe53524514d8ff44 GIT binary patch literal 11094 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 TWE(B{&oxsc%M&k;5pVwwB5Jg` literal 0 HcmV?d00001 diff --git a/charts/coder/coder/2.18.3/.helmignore b/charts/coder/coder/2.18.3/.helmignore new file mode 100644 index 000000000..957f15e7c --- /dev/null +++ b/charts/coder/coder/2.18.3/.helmignore @@ -0,0 +1,27 @@ +# 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/ +Makefile +artifacthub-repo.yml + +tests diff --git a/charts/coder/coder/2.18.3/Chart.lock b/charts/coder/coder/2.18.3/Chart.lock new file mode 100644 index 000000000..9692722e1 --- /dev/null +++ b/charts/coder/coder/2.18.3/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: libcoder + repository: file://../libcoder + version: 0.1.0 +digest: sha256:5c9a99109258073b590a9f98268490ef387fde24c0c7c7ade9c1a8c7ef5e6e10 +generated: "2023-08-08T07:27:19.677972411Z" diff --git a/charts/coder/coder/2.18.3/Chart.yaml b/charts/coder/coder/2.18.3/Chart.yaml new file mode 100644 index 000000000..a5eeaaba2 --- /dev/null +++ b/charts/coder/coder/2.18.3/Chart.yaml @@ -0,0 +1,27 @@ +annotations: + catalog.cattle.io/certified: partner + catalog.cattle.io/display-name: Coder + catalog.cattle.io/kube-version: '>=1.19-0' + catalog.cattle.io/release-name: coder +apiVersion: v2 +appVersion: 2.18.3 +dependencies: +- name: libcoder + repository: file://../libcoder + version: 0.1.0 +description: Remote development environments on your infrastructure +home: https://github.com/coder/coder +icon: file://assets/icons/coder.png +keywords: +- coder +- terraform +kubeVersion: '>=1.19-0' +maintainers: +- email: support@coder.com + name: Coder Technologies, Inc. + url: https://coder.com/contact +name: coder +sources: +- https://github.com/coder/coder/tree/main/helm/coder +type: application +version: 2.18.3 diff --git a/charts/coder/coder/2.18.3/README.md b/charts/coder/coder/2.18.3/README.md new file mode 100644 index 000000000..015c2e703 --- /dev/null +++ b/charts/coder/coder/2.18.3/README.md @@ -0,0 +1,53 @@ +# Coder Helm Chart + +This directory contains the Helm chart used to deploy Coder onto a Kubernetes +cluster. It contains the minimum required components to run Coder on Kubernetes, +and notably (compared to Coder Classic) does not include a database server. + +## Getting Started + +> **Warning**: The main branch in this repository does not represent the +> latest release of Coder. Please reference our installation docs for +> instructions on a tagged release. + +View +[our docs](https://coder.com/docs/install/kubernetes) +for detailed installation instructions. + +## Values + +Please refer to [values.yaml](values.yaml) for available Helm values and their +defaults. + +A good starting point for your values file is: + +```yaml +coder: + # You can specify any environment variables you'd like to pass to Coder + # here. Coder consumes environment variables listed in + # `coder server --help`, and these environment variables are also passed + # to the workspace provisioner (so you can consume them in your Terraform + # templates for auth keys etc.). + # + # Please keep in mind that you should not set `CODER_HTTP_ADDRESS`, + # `CODER_TLS_ENABLE`, `CODER_TLS_CERT_FILE` or `CODER_TLS_KEY_FILE` as + # they are already set by the Helm chart and will cause conflicts. + env: + - name: CODER_ACCESS_URL + value: "https://coder.example.com" + - name: CODER_PG_CONNECTION_URL + valueFrom: + secretKeyRef: + # You'll need to create a secret called coder-db-url with your + # Postgres connection URL like: + # postgres://coder:password@postgres:5432/coder?sslmode=disable + name: coder-db-url + key: url + + # This env enables the Prometheus metrics endpoint. + - name: CODER_PROMETHEUS_ADDRESS + value: "0.0.0.0:2112" + tls: + secretNames: + - my-tls-secret-name +``` diff --git a/charts/coder/coder/2.18.3/app-readme.md b/charts/coder/coder/2.18.3/app-readme.md new file mode 100644 index 000000000..ad1ee5c4f --- /dev/null +++ b/charts/coder/coder/2.18.3/app-readme.md @@ -0,0 +1,16 @@ +# Coder/coder +## Overview +Coder provides development environments in your public and private clouds. Environments are defined with Terraform, connected through a secure high-speed tunnel, and automatically shut down when not in use to save on costs. Coder gives engineering teams the flexibility to use the cloud for workloads that are most beneficial to them. + +Developers can connect to Coder workspaces using the tools and IDEs they know and love including VS Code Remote, JetBrains Gateway, SSH as well as web IDEs such as JupyterLab, code-server, RStudio, and web terminals. +## Highlights +- Onboard developers in seconds instead of days +- Define development environments in Terraform (EC2 VMs, Kubernetes Pods, Docker Containers, etc.) +- Keep source code within your infrastructure, and use RBAC with existing authentication systems +- Automatically shutdown idle resources to save on costs +## Getting Started +Review the Coder Kubernetes [installation instructions](https://coder.com/docs/install/kubernetes) for required prerequisites and options for the [values.yaml](https://github.com/coder/coder/blob/main/helm/coder/values.yaml) used by the chart. +## Resources +- [Coder Documentation](https://coder.com/docs) +- [Coder Quickstart Guide](https://coder.com/docs/tutorials/quickstart) +- [Discord Community](https://discord.gg/coder) diff --git a/charts/coder/coder/2.18.3/charts/libcoder/Chart.yaml b/charts/coder/coder/2.18.3/charts/libcoder/Chart.yaml new file mode 100644 index 000000000..7cf6ff9f1 --- /dev/null +++ b/charts/coder/coder/2.18.3/charts/libcoder/Chart.yaml @@ -0,0 +1,11 @@ +apiVersion: v2 +appVersion: 0.1.0 +description: Coder library chart +home: https://github.com/coder/coder +maintainers: +- email: support@coder.com + name: Coder Technologies, Inc. + url: https://coder.com/contact +name: libcoder +type: library +version: 0.1.0 diff --git a/charts/coder/coder/2.18.3/charts/libcoder/templates/_coder.yaml b/charts/coder/coder/2.18.3/charts/libcoder/templates/_coder.yaml new file mode 100644 index 000000000..183d85091 --- /dev/null +++ b/charts/coder/coder/2.18.3/charts/libcoder/templates/_coder.yaml @@ -0,0 +1,89 @@ +{{- define "libcoder.deployment.tpl" -}} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "coder.name" .}} + labels: + {{- include "coder.labels" . | nindent 4 }} + {{- with .Values.coder.labels }} + {{- toYaml . | nindent 4 }} + {{- end }} + annotations: {{ toYaml .Values.coder.annotations | nindent 4}} +spec: + replicas: {{ .Values.coder.replicaCount }} + selector: + matchLabels: + {{- include "coder.selectorLabels" . | nindent 6 }} + template: + metadata: + labels: + {{- include "coder.labels" . | nindent 8 }} + {{- with .Values.coder.podLabels }} + {{- toYaml . | nindent 8 }} + {{- end }} + annotations: + {{- toYaml .Values.coder.podAnnotations | nindent 8 }} + spec: + serviceAccountName: {{ .Values.coder.serviceAccount.name | quote }} + restartPolicy: Always + {{- with .Values.coder.image.pullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + terminationGracePeriodSeconds: 60 + {{- with .Values.coder.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.coder.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.coder.nodeSelector }} + nodeSelector: + {{ toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.coder.topologySpreadConstraints }} + topologySpreadConstraints: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.coder.initContainers }} + initContainers: + {{ toYaml . | nindent 8 }} + {{- end }} + containers: [] + {{- include "coder.volumes" . | nindent 6 }} +{{- end -}} +{{- define "libcoder.deployment" -}} +{{- include "libcoder.util.merge" (append . "libcoder.deployment.tpl") -}} +{{- end -}} + +{{- define "libcoder.containerspec.tpl" -}} +name: coder +image: {{ include "coder.image" . | quote }} +imagePullPolicy: {{ .Values.coder.image.pullPolicy }} +command: + {{- toYaml .Values.coder.command | nindent 2 }} +resources: + {{- toYaml .Values.coder.resources | nindent 2 }} +lifecycle: + {{- toYaml .Values.coder.lifecycle | nindent 2 }} +securityContext: {{ toYaml .Values.coder.securityContext | nindent 2 }} +{{ include "coder.volumeMounts" . }} +{{- end -}} +{{- define "libcoder.containerspec" -}} +{{- include "libcoder.util.merge" (append . "libcoder.containerspec.tpl") -}} +{{- end -}} + +{{- define "libcoder.serviceaccount.tpl" -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ .Values.coder.serviceAccount.name | quote }} + annotations: {{ toYaml .Values.coder.serviceAccount.annotations | nindent 4 }} + labels: + {{- include "coder.labels" . | nindent 4 }} +{{- end -}} +{{- define "libcoder.serviceaccount" -}} +{{- include "libcoder.util.merge" (append . "libcoder.serviceaccount.tpl") -}} +{{- end -}} diff --git a/charts/coder/coder/2.18.3/charts/libcoder/templates/_helpers.tpl b/charts/coder/coder/2.18.3/charts/libcoder/templates/_helpers.tpl new file mode 100644 index 000000000..9a6c5dfcf --- /dev/null +++ b/charts/coder/coder/2.18.3/charts/libcoder/templates/_helpers.tpl @@ -0,0 +1,200 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "coder.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "coder.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Selector labels + +!!!!! DO NOT ADD ANY MORE SELECTORS. IT IS A BREAKING CHANGE !!!!! +*/}} +{{- define "coder.selectorLabels" -}} +app.kubernetes.io/name: {{ include "coder.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "coder.labels" -}} +helm.sh/chart: {{ include "coder.chart" . }} +{{ include "coder.selectorLabels" . }} +app.kubernetes.io/part-of: {{ include "coder.name" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Coder Docker image URI +*/}} +{{- define "coder.image" -}} +{{- if and (eq .Values.coder.image.tag "") (eq .Chart.AppVersion "0.1.0") -}} +{{ fail "You must specify the coder.image.tag value if you're installing the Helm chart directly from Git." }} +{{- end -}} +{{ .Values.coder.image.repo }}:{{ .Values.coder.image.tag | default (printf "v%v" .Chart.AppVersion) }} +{{- end }} + +{{/* +Coder TLS enabled. +*/}} +{{- define "coder.tlsEnabled" -}} + {{- if hasKey .Values.coder "tls" -}} + {{- if .Values.coder.tls.secretNames -}} + true + {{- else -}} + false + {{- end -}} + {{- else -}} + false + {{- end -}} +{{- end }} + +{{/* +Coder TLS environment variables. +*/}} +{{- define "coder.tlsEnv" }} +{{- if eq (include "coder.tlsEnabled" .) "true" }} +- name: CODER_TLS_ENABLE + value: "true" +- name: CODER_TLS_ADDRESS + value: "0.0.0.0:8443" +- name: CODER_TLS_CERT_FILE + value: "{{ range $idx, $secretName := .Values.coder.tls.secretNames -}}{{ if $idx }},{{ end }}/etc/ssl/certs/coder/{{ $secretName }}/tls.crt{{- end }}" +- name: CODER_TLS_KEY_FILE + value: "{{ range $idx, $secretName := .Values.coder.tls.secretNames -}}{{ if $idx }},{{ end }}/etc/ssl/certs/coder/{{ $secretName }}/tls.key{{- end }}" +{{- end }} +{{- end }} + +{{/* +Coder default access URL +*/}} +{{- define "coder.defaultAccessURL" }} +{{- if eq (include "coder.tlsEnabled" .) "true" -}} +https +{{- else -}} +http +{{- end -}} +://coder.{{ .Release.Namespace }}.svc.cluster.local +{{- end }} + +{{/* +Coder volume definitions. +*/}} +{{- define "coder.volumeList" }} +{{- if hasKey .Values.coder "tls" -}} +{{- range $secretName := .Values.coder.tls.secretNames }} +- name: "tls-{{ $secretName }}" + secret: + secretName: {{ $secretName | quote }} +{{ end -}} +{{- end }} +{{ range $secret := .Values.coder.certs.secrets -}} +- name: "ca-cert-{{ $secret.name }}" + secret: + secretName: {{ $secret.name | quote }} +{{ end -}} +{{ if gt (len .Values.coder.volumes) 0 -}} +{{ toYaml .Values.coder.volumes }} +{{ end -}} +{{- end }} + +{{/* +Coder volumes yaml. +*/}} +{{- define "coder.volumes" }} +{{- if trim (include "coder.volumeList" .) -}} +volumes: +{{- include "coder.volumeList" . -}} +{{- else -}} +volumes: [] +{{- end -}} +{{- end }} + +{{/* +Coder volume mounts. +*/}} +{{- define "coder.volumeMountList" }} +{{- if hasKey .Values.coder "tls" }} +{{ range $secretName := .Values.coder.tls.secretNames -}} +- name: "tls-{{ $secretName }}" + mountPath: "/etc/ssl/certs/coder/{{ $secretName }}" + readOnly: true +{{ end -}} +{{- end }} +{{ range $secret := .Values.coder.certs.secrets -}} +- name: "ca-cert-{{ $secret.name }}" + mountPath: "/etc/ssl/certs/{{ $secret.name }}.crt" + subPath: {{ $secret.key | quote }} + readOnly: true +{{ end -}} +{{ if gt (len .Values.coder.volumeMounts) 0 -}} +{{ toYaml .Values.coder.volumeMounts }} +{{ end -}} +{{- end }} + +{{/* +Coder volume mounts yaml. +*/}} +{{- define "coder.volumeMounts" }} +{{- if trim (include "coder.volumeMountList" .) -}} +volumeMounts: +{{- include "coder.volumeMountList" . -}} +{{- else -}} +volumeMounts: [] +{{- end -}} +{{- end }} + +{{/* +Coder ingress wildcard hostname with the wildcard suffix stripped. +*/}} +{{- define "coder.ingressWildcardHost" -}} +{{/* This regex replace is required as the original input including the suffix + * is not a legal ingress host. We need to remove the suffix and keep the + * wildcard '*'. + * + * - '\\*' Starts with '*' + * - '[^.]*' Suffix is 0 or more characters, '-suffix' + * - '(' Start domain capture group + * - '\\.' The domain should be separated with a '.' from the subdomain + * - '.*' Rest of the domain. + * - ')' $1 is the ''.example.com' + */}} +{{- regexReplaceAll "\\*[^.]*(\\..*)" .Values.coder.ingress.wildcardHost "*${1}" -}} +{{- end }} + +{{/* +Fail on fully deprecated values or deprecated value combinations. This is +included at the top of coder.yaml. +*/}} +{{- define "coder.verifyDeprecated" }} +{{/* +Deprecated value coder.tls.secretName must not be used. +*/}} +{{- if .Values.coder.tls.secretName }} +{{ fail "coder.tls.secretName is deprecated, use coder.tls.secretNames instead." }} +{{- end }} +{{- end }} + +{{/* +Renders a value that contains a template. +Usage: +{{ include "coder.renderTemplate" ( dict "value" .Values.path.to.the.Value "context" $) }} +*/}} +{{- define "coder.renderTemplate" -}} + {{- if typeIs "string" .value }} + {{- tpl .value .context }} + {{- else }} + {{- tpl (.value | toYaml) .context }} + {{- end }} +{{- end -}} diff --git a/charts/coder/coder/2.18.3/charts/libcoder/templates/_rbac.yaml b/charts/coder/coder/2.18.3/charts/libcoder/templates/_rbac.yaml new file mode 100644 index 000000000..1320c652c --- /dev/null +++ b/charts/coder/coder/2.18.3/charts/libcoder/templates/_rbac.yaml @@ -0,0 +1,62 @@ +{{- define "libcoder.rbac.tpl" -}} +{{- if .Values.coder.serviceAccount.workspacePerms }} +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: {{ .Values.coder.serviceAccount.name }}-workspace-perms +rules: + - apiGroups: [""] + resources: ["pods"] + verbs: + - create + - delete + - deletecollection + - get + - list + - patch + - update + - watch + - apiGroups: [""] + resources: ["persistentvolumeclaims"] + verbs: + - create + - delete + - deletecollection + - get + - list + - patch + - update + - watch +{{- if .Values.coder.serviceAccount.enableDeployments }} + - apiGroups: + - apps + resources: + - deployments + verbs: + - create + - delete + - deletecollection + - get + - list + - patch + - update + - watch +{{- end }} +{{- with .Values.coder.serviceAccount.extraRules }} +{{ toYaml . | nindent 2 }} +{{- end }} +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: {{ .Values.coder.serviceAccount.name | quote }} +subjects: + - kind: ServiceAccount + name: {{ .Values.coder.serviceAccount.name | quote }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: {{ .Values.coder.serviceAccount.name }}-workspace-perms +{{- end }} +{{- end -}} diff --git a/charts/coder/coder/2.18.3/charts/libcoder/templates/_util.yaml b/charts/coder/coder/2.18.3/charts/libcoder/templates/_util.yaml new file mode 100644 index 000000000..ebdc13e36 --- /dev/null +++ b/charts/coder/coder/2.18.3/charts/libcoder/templates/_util.yaml @@ -0,0 +1,13 @@ +{{- /* + libcoder.util.merge will merge two YAML templates and output the result. + This takes an array of three values: + - the top context + - the template name of the overrides (destination) + - the template name of the base (source) +*/}} +{{- define "libcoder.util.merge" -}} +{{- $top := first . -}} +{{- $overrides := fromYaml (include (index . 1) $top) | default (dict ) -}} +{{- $tpl := fromYaml (include (index . 2) $top) | default (dict ) -}} +{{- toYaml (merge $overrides $tpl) -}} +{{- end -}} diff --git a/charts/coder/coder/2.18.3/templates/NOTES.txt b/charts/coder/coder/2.18.3/templates/NOTES.txt new file mode 100644 index 000000000..18fc33c10 --- /dev/null +++ b/charts/coder/coder/2.18.3/templates/NOTES.txt @@ -0,0 +1,6 @@ +{{/* +Deprecation notices: +*/}} + +Enjoy Coder! Please create an issue at https://github.com/coder/coder if you run +into any problems! :) diff --git a/charts/coder/coder/2.18.3/templates/_coder.tpl b/charts/coder/coder/2.18.3/templates/_coder.tpl new file mode 100644 index 000000000..d0846ecf7 --- /dev/null +++ b/charts/coder/coder/2.18.3/templates/_coder.tpl @@ -0,0 +1,108 @@ +{{/* +Service account to merge into the libcoder template +*/}} +{{- define "coder.serviceaccount" -}} +{{- end -}} + +{{/* +Deployment to merge into the libcoder template +*/}} +{{- define "coder.deployment" -}} +spec: + template: + spec: + containers: + - +{{ include "libcoder.containerspec" (list . "coder.containerspec") | indent 8}} + +{{- end -}} + +{{/* +ContainerSpec for the Coder container of the Coder deployment +*/}} +{{- define "coder.containerspec" -}} +args: +{{- if .Values.coder.commandArgs }} + {{- toYaml .Values.coder.commandArgs | nindent 12 }} +{{- else }} + {{- if .Values.coder.workspaceProxy }} +- wsproxy + {{- end }} +- server +{{- end }} +{{- if .Values.coder.envFrom }} +envFrom: +{{- with .Values.coder.envFrom }} +{{ toYaml . }} +{{- end }} +{{- end }} +env: +- name: CODER_HTTP_ADDRESS + value: "0.0.0.0:8080" +- name: CODER_PROMETHEUS_ADDRESS + value: "0.0.0.0:2112" +{{- if .Values.provisionerDaemon.pskSecretName }} +- name: CODER_PROVISIONER_DAEMON_PSK + valueFrom: + secretKeyRef: + name: {{ .Values.provisionerDaemon.pskSecretName | quote }} + key: psk +{{- end }} + # Set the default access URL so a `helm apply` works by default. + # See: https://github.com/coder/coder/issues/5024 +{{- $hasAccessURL := false }} +{{- range .Values.coder.env }} +{{- if eq .name "CODER_ACCESS_URL" }} +{{- $hasAccessURL = true }} +{{- end }} +{{- end }} +{{- if and (not $hasAccessURL) .Values.coder.envUseClusterAccessURL }} +- name: CODER_ACCESS_URL + value: {{ include "coder.defaultAccessURL" . | quote }} +{{- end }} +# Used for inter-pod communication with high-availability. +- name: KUBE_POD_IP + valueFrom: + fieldRef: + fieldPath: status.podIP +- name: CODER_DERP_SERVER_RELAY_URL + value: "http://$(KUBE_POD_IP):8080" +{{- include "coder.tlsEnv" . }} +{{- with .Values.coder.env }} +{{ toYaml . }} +{{- end }} +ports: +- name: "http" + containerPort: 8080 + protocol: TCP + {{- if eq (include "coder.tlsEnabled" .) "true" }} +- name: "https" + containerPort: 8443 + protocol: TCP + {{- end }} + {{- range .Values.coder.env }} + {{- if eq .name "CODER_PROMETHEUS_ENABLE" }} + {{/* + This sadly has to be nested to avoid evaluating the second part + of the condition too early and potentially getting type errors if + the value is not a string (like a `valueFrom`). We do not support + `valueFrom` for this env var specifically. + */}} + {{- if eq .value "true" }} +- name: "prometheus-http" + containerPort: 2112 + protocol: TCP + {{- end }} + {{- end }} + {{- end }} +readinessProbe: + httpGet: + path: /healthz + port: "http" + scheme: "HTTP" +livenessProbe: + httpGet: + path: /healthz + port: "http" + scheme: "HTTP" +{{- end }} diff --git a/charts/coder/coder/2.18.3/templates/coder.yaml b/charts/coder/coder/2.18.3/templates/coder.yaml new file mode 100644 index 000000000..da809e877 --- /dev/null +++ b/charts/coder/coder/2.18.3/templates/coder.yaml @@ -0,0 +1,7 @@ +--- +{{- if not .Values.coder.serviceAccount.disableCreate }} +{{ include "libcoder.serviceaccount" (list . "coder.serviceaccount") }} +{{- end }} + +--- +{{ include "libcoder.deployment" (list . "coder.deployment") }} diff --git a/charts/coder/coder/2.18.3/templates/extra-templates.yaml b/charts/coder/coder/2.18.3/templates/extra-templates.yaml new file mode 100644 index 000000000..e04765810 --- /dev/null +++ b/charts/coder/coder/2.18.3/templates/extra-templates.yaml @@ -0,0 +1,4 @@ +{{- range .Values.extraTemplates }} +--- +{{ include "coder.renderTemplate" (dict "value" . "context" $) }} +{{- end }} diff --git a/charts/coder/coder/2.18.3/templates/ingress.yaml b/charts/coder/coder/2.18.3/templates/ingress.yaml new file mode 100644 index 000000000..7dd2a1389 --- /dev/null +++ b/charts/coder/coder/2.18.3/templates/ingress.yaml @@ -0,0 +1,54 @@ + +{{- if .Values.coder.ingress.enable }} +--- +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: coder + labels: + {{- include "coder.labels" . | nindent 4 }} + annotations: + {{- toYaml .Values.coder.ingress.annotations | nindent 4 }} +spec: + {{- if .Values.coder.ingress.className }} + {{/* If this is set to an empty string it fails validation on K8s */}} + ingressClassName: {{ .Values.coder.ingress.className | quote }} + {{- end }} + + rules: + - host: {{ .Values.coder.ingress.host | quote }} + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: coder + port: + name: "http" + + {{- if .Values.coder.ingress.wildcardHost }} + - host: {{ include "coder.ingressWildcardHost" . | quote }} + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: coder + port: + name: "http" + {{- end }} + + {{- if .Values.coder.ingress.tls.enable }} + tls: + - hosts: + - {{ .Values.coder.ingress.host | quote }} + secretName: {{ .Values.coder.ingress.tls.secretName | quote}} + {{- if .Values.coder.ingress.tls.wildcardSecretName }} + - hosts: + - {{ include "coder.ingressWildcardHost" . | quote }} + secretName: {{ .Values.coder.ingress.tls.wildcardSecretName | quote}} + {{- end }} + {{- end }} +{{- end }} diff --git a/charts/coder/coder/2.18.3/templates/rbac.yaml b/charts/coder/coder/2.18.3/templates/rbac.yaml new file mode 100644 index 000000000..07fb36d87 --- /dev/null +++ b/charts/coder/coder/2.18.3/templates/rbac.yaml @@ -0,0 +1 @@ +{{ include "libcoder.rbac.tpl" . }} diff --git a/charts/coder/coder/2.18.3/templates/service.yaml b/charts/coder/coder/2.18.3/templates/service.yaml new file mode 100644 index 000000000..1881f992a --- /dev/null +++ b/charts/coder/coder/2.18.3/templates/service.yaml @@ -0,0 +1,41 @@ +{{- if .Values.coder.service.enable }} +--- +apiVersion: v1 +kind: Service +metadata: + name: coder + labels: + {{- include "coder.labels" . | nindent 4 }} + annotations: + {{- toYaml .Values.coder.service.annotations | nindent 4 }} +spec: + type: {{ .Values.coder.service.type }} + sessionAffinity: {{ .Values.coder.service.sessionAffinity }} + ports: + - name: "http" + port: 80 + targetPort: "http" + protocol: TCP + {{ if eq .Values.coder.service.type "NodePort" }} + nodePort: {{ .Values.coder.service.httpNodePort }} + {{ end }} + {{- if eq (include "coder.tlsEnabled" .) "true" }} + - name: "https" + port: 443 + targetPort: "https" + protocol: TCP + {{ if eq .Values.coder.service.type "NodePort" }} + nodePort: {{ .Values.coder.service.httpsNodePort }} + {{ end }} + {{- end }} + {{- if eq "LoadBalancer" .Values.coder.service.type }} + {{- with .Values.coder.service.loadBalancerIP }} + loadBalancerIP: {{ . | quote }} + {{- end }} + {{- with .Values.coder.service.externalTrafficPolicy }} + externalTrafficPolicy: {{ . | quote }} + {{- end }} + {{- end }} + selector: + {{- include "coder.selectorLabels" . | nindent 4 }} +{{- end }} diff --git a/charts/coder/coder/2.18.3/values.yaml b/charts/coder/coder/2.18.3/values.yaml new file mode 100644 index 000000000..75c7dda77 --- /dev/null +++ b/charts/coder/coder/2.18.3/values.yaml @@ -0,0 +1,354 @@ +# coder -- Primary configuration for `coder server`. +coder: + # coder.env -- The environment variables to set for Coder. These can be used + # to configure all aspects of `coder server`. Please see `coder server --help` + # for information about what environment variables can be set. + # Note: The following environment variables are set by default and cannot be + # overridden: + # - CODER_HTTP_ADDRESS: set to 0.0.0.0:8080 and cannot be changed. + # - CODER_TLS_ADDRESS: set to 0.0.0.0:8443 if tls.secretName is not empty. + # - CODER_TLS_ENABLE: set if tls.secretName is not empty. + # - CODER_TLS_CERT_FILE: set if tls.secretName is not empty. + # - CODER_TLS_KEY_FILE: set if tls.secretName is not empty. + # - CODER_PROMETHEUS_ADDRESS: set to 0.0.0.0:2112 and cannot be changed. + # Prometheus must still be enabled by setting CODER_PROMETHEUS_ENABLE. + # - KUBE_POD_IP + # - CODER_DERP_SERVER_RELAY_URL + # + # We will additionally set CODER_ACCESS_URL if unset to the cluster service + # URL, unless coder.envUseClusterAccessURL is set to false. + env: [] + # - name: "CODER_ACCESS_URL" + # value: "https://coder.example.com" + + # coder.envFrom -- Secrets or ConfigMaps to use for Coder's environment + # variables. If you want one environment variable read from a secret, then use + # coder.env valueFrom. See the K8s docs for valueFrom here: + # https://kubernetes.io/docs/tasks/inject-data-application/distribute-credentials-secure/#define-container-environment-variables-using-secret-data + # + # If setting CODER_ACCESS_URL in coder.envFrom, then you must set + # coder.envUseClusterAccessURL to false. + envFrom: [] + # - configMapRef: + # name: coder-config + # - secretRef: + # name: coder-config + + # coder.envUseClusterAccessURL -- Determines whether the CODER_ACCESS_URL env + # is added to coder.env if it's not already set there. Set this to false if + # defining CODER_ACCESS_URL in coder.envFrom to avoid conflicts. + envUseClusterAccessURL: true + + # coder.image -- The image to use for Coder. + image: + # coder.image.repo -- The repository of the image. + repo: "ghcr.io/coder/coder" + # coder.image.tag -- The tag of the image, defaults to {{.Chart.AppVersion}} + # if not set. If you're using the chart directly from git, the default + # app version will not work and you'll need to set this value. The helm + # chart helpfully fails quickly in this case. + tag: "" + # coder.image.pullPolicy -- The pull policy to use for the image. See: + # https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy + pullPolicy: IfNotPresent + # coder.image.pullSecrets -- The secrets used for pulling the Coder image from + # a private registry. + pullSecrets: [] + # - name: "pull-secret" + + # coder.initContainers -- Init containers for the deployment. See: + # https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ + initContainers: + [] + # - name: init-container + # image: busybox:1.28 + # command: ['sh', '-c', "sleep 2"] + + # coder.annotations -- The Deployment annotations. See: + # https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ + annotations: {} + + # coder.labels -- The Deployment labels. See: + # https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + labels: {} + + # coder.podAnnotations -- The Coder pod annotations. See: + # https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ + podAnnotations: {} + + # coder.podLabels -- The Coder pod labels. See: + # https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + podLabels: {} + + # coder.serviceAccount -- Configuration for the automatically created service + # account. Creation of the service account cannot be disabled. + serviceAccount: + # coder.serviceAccount.workspacePerms -- Whether or not to grant the coder + # service account permissions to manage workspaces. This includes + # permission to manage pods and persistent volume claims in the deployment + # namespace. + # + # It is recommended to keep this on if you are using Kubernetes templates + # within Coder. + workspacePerms: true + # coder.serviceAccount.enableDeployments -- Provides the service account + # permission to manage Kubernetes deployments. Depends on workspacePerms. + enableDeployments: true + # coder.serviceAccount.extraRules -- Additional permissions added to the SA + # role. Depends on workspacePerms. + extraRules: [] + # - apiGroups: [""] + # resources: ["services"] + # verbs: + # - create + # - delete + # - deletecollection + # - get + # - list + # - patch + # - update + # - watch + + # coder.serviceAccount.annotations -- The Coder service account annotations. + annotations: {} + # coder.serviceAccount.name -- The service account name + name: coder + # coder.serviceAccount.disableCreate -- Whether to create the service account or use existing service account. + disableCreate: false + + # coder.securityContext -- Fields related to the container's security + # context (as opposed to the pod). Some fields are also present in the pod + # security context, in which case these values will take precedence. + securityContext: + # coder.securityContext.runAsNonRoot -- Requires that the coder container + # runs as an unprivileged user. If setting runAsUser to 0 (root), this + # will need to be set to false. + runAsNonRoot: true + # coder.securityContext.runAsUser -- Sets the user id of the container. + # For security reasons, we recommend using a non-root user. + runAsUser: 1000 + # coder.securityContext.runAsGroup -- Sets the group id of the container. + # For security reasons, we recommend using a non-root group. + runAsGroup: 1000 + # coder.securityContext.readOnlyRootFilesystem -- Mounts the container's + # root filesystem as read-only. + readOnlyRootFilesystem: null + # coder.securityContext.seccompProfile -- Sets the seccomp profile for + # the coder container. + seccompProfile: + type: RuntimeDefault + # coder.securityContext.allowPrivilegeEscalation -- Controls whether + # the container can gain additional privileges, such as escalating to + # root. It is recommended to leave this setting disabled in production. + allowPrivilegeEscalation: false + + # coder.volumes -- A list of extra volumes to add to the Coder pod. + volumes: [] + # - name: "my-volume" + # emptyDir: {} + + # coder.volumeMounts -- A list of extra volume mounts to add to the Coder pod. + volumeMounts: [] + # - name: "my-volume" + # mountPath: "/mnt/my-volume" + + # coder.tls -- The TLS configuration for Coder. + tls: + # coder.tls.secretNames -- A list of TLS server certificate secrets to mount + # into the Coder pod. The secrets should exist in the same namespace as the + # Helm deployment and should be of type "kubernetes.io/tls". The secrets + # will be automatically mounted into the pod if specified, and the correct + # "CODER_TLS_*" environment variables will be set for you. + secretNames: [] + + # coder.replicaCount -- The number of Kubernetes deployment replicas. This + # should only be increased if High Availability is enabled. + # + # This is an Enterprise feature. Contact sales@coder.com. + replicaCount: 1 + + # coder.workspaceProxy -- Whether or not this deployment of Coder is a Coder + # Workspace Proxy. Workspace Proxies reduce the latency between the user and + # their workspace for web connections (workspace apps and web terminal) and + # proxied connections from the CLI. Workspace Proxies are optional and only + # recommended for geographically sparse teams. + # + # Make sure you set CODER_PRIMARY_ACCESS_URL and CODER_PROXY_SESSION_TOKEN in + # the environment below. You can get a proxy token using the CLI: + # coder wsproxy create \ + # --name "proxy-name" \ + # --display-name "Proxy Name" \ + # --icon "/emojis/xyz.png" + # + # This is an Enterprise feature. Contact sales@coder.com + # Docs: https://coder.com/docs/admin/workspace-proxies + workspaceProxy: false + + # coder.lifecycle -- container lifecycle handlers for the Coder container, allowing + # for lifecycle events such as postStart and preStop events + # See: https://kubernetes.io/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/ + lifecycle: + {} + # postStart: + # exec: + # command: ["/bin/sh", "-c", "echo postStart"] + # preStop: + # exec: + # command: ["/bin/sh","-c","echo preStart"] + + # coder.resources -- The resources to request for Coder. These are optional + # and are not set by default. + resources: + {} + # limits: + # cpu: 2000m + # memory: 4096Mi + # requests: + # cpu: 2000m + # memory: 4096Mi + + # coder.certs -- CA bundles to mount inside the Coder pod. + certs: + # coder.certs.secrets -- A list of CA bundle secrets to mount into the Coder + # pod. The secrets should exist in the same namespace as the Helm + # deployment. + # + # The given key in each secret is mounted at + # `/etc/ssl/certs/{secret_name}.crt`. + secrets: + [] + # - name: "my-ca-bundle" + # key: "ca-bundle.crt" + + # coder.affinity -- Allows specifying an affinity rule for the `coder` deployment. + # The default rule prefers to schedule coder pods on different + # nodes, which is only applicable if coder.replicaCount is greater than 1. + affinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchExpressions: + - key: app.kubernetes.io/instance + operator: In + values: + - "coder" + topologyKey: kubernetes.io/hostname + weight: 1 + + topologySpreadConstraints: + # - maxSkew: 1 + # topologyKey: kubernetes.io/hostname + # whenUnsatisfiable: DoNotSchedule + # labelSelector: + # matchLabels: + # app.kubernetes.io/instance: coder + + # coder.tolerations -- Tolerations for tainted nodes. + # See: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + tolerations: + [] + # - key: "key" + # operator: "Equal" + # value: "value" + # effect: "NoSchedule" + + # coder.nodeSelector -- Node labels for constraining coder pods to nodes. + # See: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector + nodeSelector: {} + # kubernetes.io/os: linux + + # coder.service -- The Service object to expose for Coder. + service: + # coder.service.enable -- Whether to create the Service object. + enable: true + # coder.service.type -- The type of service to expose. See: + # https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types + type: LoadBalancer + # coder.service.sessionAffinity -- Must be set to ClientIP or None + # AWS ELB does not support session stickiness based on ClientIP, so you must set this to None. + # The error message you might see: "Unsupported load balancer affinity: ClientIP" + # https://kubernetes.io/docs/reference/networking/virtual-ips/#session-affinity + sessionAffinity: None + # coder.service.externalTrafficPolicy -- The external traffic policy to use. + # You may need to change this to "Local" to preserve the source IP address + # in some situations. + # https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip + externalTrafficPolicy: Cluster + # coder.service.loadBalancerIP -- The IP address of the LoadBalancer. If not + # specified, a new IP will be generated each time the load balancer is + # recreated. It is recommended to manually create a static IP address in + # your cloud and specify it here in production to avoid accidental IP + # address changes. + loadBalancerIP: "" + # coder.service.annotations -- The service annotations. See: + # https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer + annotations: {} + # coder.service.httpNodePort -- Enabled if coder.service.type is set to + # NodePort. If not set, Kubernetes will allocate a port from the default + # range, 30000-32767. + httpNodePort: "" + # coder.service.httpsNodePort -- Enabled if coder.service.type is set to + # NodePort. If not set, Kubernetes will allocate a port from the default + # range, 30000-32767. + httpsNodePort: "" + + # coder.ingress -- The Ingress object to expose for Coder. + ingress: + # coder.ingress.enable -- Whether to create the Ingress object. If using an + # Ingress, we recommend not specifying coder.tls.secretNames as the Ingress + # will handle TLS termination. + enable: false + # coder.ingress.className -- The name of the Ingress class to use. + className: "" + # coder.ingress.host -- The hostname to match on. + # Be sure to also set CODER_ACCESS_URL within coder.env[] + host: "" + # coder.ingress.wildcardHost -- The wildcard hostname to match on. Should be + # in the form "*.example.com" or "*-suffix.example.com". If you are using a + # suffix after the wildcard, the suffix will be stripped from the created + # ingress to ensure that it is a legal ingress host. Optional if not using + # applications over subdomains. + # Be sure to also set CODER_WILDCARD_ACCESS_URL within coder.env[] + wildcardHost: "" + # coder.ingress.annotations -- The ingress annotations. + annotations: {} + # coder.ingress.tls -- The TLS configuration to use for the Ingress. + tls: + # coder.ingress.tls.enable -- Whether to enable TLS on the Ingress. + enable: false + # coder.ingress.tls.secretName -- The name of the TLS secret to use. + secretName: "" + # coder.ingress.tls.wildcardSecretName -- The name of the TLS secret to + # use for the wildcard host. + wildcardSecretName: "" + + # coder.command -- The command to use when running the Coder container. Used + # for customizing the location of the `coder` binary in your image. + command: + - /opt/coder + + # coder.commandArgs -- Set arguments for the entrypoint command of the Coder pod. + commandArgs: [] + +# provisionerDaemon -- Configuration for external provisioner daemons. +# +# This is an Enterprise feature. Contact sales@coder.com. +provisionerDaemon: + # provisionerDaemon.pskSecretName -- The name of the Kubernetes secret that contains the + # Pre-Shared Key (PSK) to use to authenticate external provisioner daemons with Coder. The + # secret must be in the same namespace as the Helm deployment, and contain an item called "psk" + # which contains the pre-shared key. + pskSecretName: "" + +# extraTemplates -- Array of extra objects to deploy with the release. Strings +# are evaluated as a template and can use template expansions and functions. All +# other objects are used as yaml. +extraTemplates: + #- | + # apiVersion: v1 + # kind: ConfigMap + # metadata: + # name: my-configmap + # data: + # key: {{ .Values.myCustomValue | quote }} diff --git a/index.yaml b/index.yaml index ad1cb09b7..994135c7a 100644 --- a/index.yaml +++ b/index.yaml @@ -7344,6 +7344,38 @@ entries: urls: - assets/cockroach-labs/cockroachdb-11.0.1.tgz version: 11.0.1 + coder: + - annotations: + catalog.cattle.io/certified: partner + catalog.cattle.io/display-name: Coder + catalog.cattle.io/kube-version: '>=1.19-0' + catalog.cattle.io/release-name: coder + apiVersion: v2 + appVersion: 2.18.3 + created: "2025-01-22T17:51:06.449411019Z" + dependencies: + - name: libcoder + repository: file://../libcoder + version: 0.1.0 + description: Remote development environments on your infrastructure + digest: cf181950caffe09a155059a2077630f0610d3b78338672f015bb83ec45ba5cec + home: https://github.com/coder/coder + icon: file://assets/icons/coder.png + keywords: + - coder + - terraform + kubeVersion: '>=1.19-0' + maintainers: + - email: support@coder.com + name: Coder Technologies, Inc. + url: https://coder.com/contact + name: coder + sources: + - https://github.com/coder/coder/tree/main/helm/coder + type: application + urls: + - assets/coder/coder-2.18.3.tgz + version: 2.18.3 community-operator: - annotations: catalog.cattle.io/certified: partner @@ -48143,4 +48175,4 @@ entries: urls: - assets/netfoundry/ziti-host-1.5.1.tgz version: 1.5.1 -generated: "2025-01-22T00:01:50.08010105Z" +generated: "2025-01-22T17:51:04.776244721Z" diff --git a/packages/coder/coder/overlay/app-readme.md b/packages/coder/coder/overlay/app-readme.md new file mode 100644 index 000000000..ad1ee5c4f --- /dev/null +++ b/packages/coder/coder/overlay/app-readme.md @@ -0,0 +1,16 @@ +# Coder/coder +## Overview +Coder provides development environments in your public and private clouds. Environments are defined with Terraform, connected through a secure high-speed tunnel, and automatically shut down when not in use to save on costs. Coder gives engineering teams the flexibility to use the cloud for workloads that are most beneficial to them. + +Developers can connect to Coder workspaces using the tools and IDEs they know and love including VS Code Remote, JetBrains Gateway, SSH as well as web IDEs such as JupyterLab, code-server, RStudio, and web terminals. +## Highlights +- Onboard developers in seconds instead of days +- Define development environments in Terraform (EC2 VMs, Kubernetes Pods, Docker Containers, etc.) +- Keep source code within your infrastructure, and use RBAC with existing authentication systems +- Automatically shutdown idle resources to save on costs +## Getting Started +Review the Coder Kubernetes [installation instructions](https://coder.com/docs/install/kubernetes) for required prerequisites and options for the [values.yaml](https://github.com/coder/coder/blob/main/helm/coder/values.yaml) used by the chart. +## Resources +- [Coder Documentation](https://coder.com/docs) +- [Coder Quickstart Guide](https://coder.com/docs/tutorials/quickstart) +- [Discord Community](https://discord.gg/coder) diff --git a/packages/coder/coder/upstream.yaml b/packages/coder/coder/upstream.yaml new file mode 100644 index 000000000..afc55e652 --- /dev/null +++ b/packages/coder/coder/upstream.yaml @@ -0,0 +1,6 @@ +HelmRepo: https://helm.coder.com/v2 +HelmChart: coder +Vendor: Coder +DisplayName: Coder +ChartMetadata: + kubeVersion: '>=1.19-0' \ No newline at end of file