Refactor code-server templates: Add secret, headless-service, scripts, persistantvolumeclaim, configmap, certificate, and service templates
This commit is contained in:
@@ -0,0 +1,35 @@
|
|||||||
|
# yaml-language-server: $schema=https://json.schemastore.org/chart.json
|
||||||
|
apiVersion: v2
|
||||||
|
type: application
|
||||||
|
name: code-server
|
||||||
|
description: A Helm chart for Kubernetes
|
||||||
|
version: 2.0.0
|
||||||
|
# renovate: image=ghcr.io/coder/code-server
|
||||||
|
appVersion: "4.93.1"
|
||||||
|
|
||||||
|
home: https://charts.pascaliske.dev/charts/code-server/
|
||||||
|
sources:
|
||||||
|
- https://github.com/pascaliske/helm-charts
|
||||||
|
- https://github.com/coder/code-server
|
||||||
|
keywords:
|
||||||
|
- vscode
|
||||||
|
- code-server
|
||||||
|
- browser-ide
|
||||||
|
- ide
|
||||||
|
maintainers:
|
||||||
|
- name: pascaliske
|
||||||
|
email: info@pascaliske.dev
|
||||||
|
url: https://pascaliske.dev
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
- name: base
|
||||||
|
version: 1.2.0
|
||||||
|
repository: https://charts.pascaliske.dev
|
||||||
|
|
||||||
|
annotations:
|
||||||
|
# possible kinds: added, changed, deprecated, removed, fixed, security
|
||||||
|
artifacthub.io/changes: |
|
||||||
|
- kind: removed
|
||||||
|
description: 'Remove support for CRDs from "traefik.containo.us".'
|
||||||
|
- kind: added
|
||||||
|
description: 'Add support for CRDs from "traefik.io".'
|
||||||
@@ -0,0 +1,121 @@
|
|||||||
|
# [`code-server`](https://charts.pascaliske.dev/charts/code-server/)
|
||||||
|
|
||||||
|
> A Helm chart for Kubernetes
|
||||||
|
|
||||||
|
[ ](https://charts.pascaliske.dev/charts/code-server/)[ ](https://charts.pascaliske.dev/charts/code-server/)[ ](https://charts.pascaliske.dev/charts/code-server/)
|
||||||
|
|
||||||
|
* <https://github.com/pascaliske/helm-charts>
|
||||||
|
* <https://github.com/coder/code-server>
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
- [`helm`](https://helm.sh) - Refer to their [docs](https://helm.sh/docs) to get started.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
To use this chart add the repo as follows:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
helm repo add pascaliske https://charts.pascaliske.dev
|
||||||
|
```
|
||||||
|
|
||||||
|
If you had already added this repo earlier, run `helm repo update` to retrieve the latest versions of the packages.
|
||||||
|
|
||||||
|
To install this chart simply run the following command:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
helm install code-server pascaliske/code-server
|
||||||
|
```
|
||||||
|
|
||||||
|
To uninstall this chart simply run the following command:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
helm delete code-server
|
||||||
|
```
|
||||||
|
|
||||||
|
## Values
|
||||||
|
|
||||||
|
The following values can be used to adjust the helm chart.
|
||||||
|
|
||||||
|
| Key | Type | Default | Description |
|
||||||
|
|-----|------|---------|-------------|
|
||||||
|
| affinity | object | `{}` | Pod-level affinity. More info [here](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#scheduling). |
|
||||||
|
| certificate.annotations | object | `{}` | Additional annotations for the certificate object. |
|
||||||
|
| certificate.create | bool | `false` | Create an Certificate object for the exposed chart. |
|
||||||
|
| certificate.dnsNames | list | `[]` | List of subject alternative names for the certificate. |
|
||||||
|
| certificate.issuerRef.kind | string | `"ClusterIssuer"` | Type of the referenced certificate issuer. Can be "Issuer" or "ClusterIssuer". |
|
||||||
|
| certificate.issuerRef.name | string | `""` | Name of the referenced certificate issuer. |
|
||||||
|
| certificate.labels | object | `{}` | Additional labels for the certificate object. |
|
||||||
|
| certificate.secretName | string | `""` | Name of the secret in which the certificate will be stored. Defaults to the first item in dnsNames. |
|
||||||
|
| configMap.annotations | object | `{}` | Additional annotations for the config map object. |
|
||||||
|
| configMap.config | object | `{}` | Map containing the [configuration of code-server](https://coder.com/docs/code-server/latest/guide). |
|
||||||
|
| configMap.create | bool | `true` | Create a new config map object. |
|
||||||
|
| configMap.existingConfigMap | string | `""` | Use an existing config map object. |
|
||||||
|
| configMap.labels | object | `{}` | Additional labels for the config map object. |
|
||||||
|
| configMap.mountPath | string | `"/etc/code-server"` | Mount path of the config map object. |
|
||||||
|
| controller.annotations | object | `{}` | Additional annotations for the controller object. |
|
||||||
|
| controller.enabled | bool | `true` | Create a workload for this chart. |
|
||||||
|
| controller.kind | string | `"Deployment"` | Type of the workload object. |
|
||||||
|
| controller.labels | object | `{}` | Additional labels for the controller object. |
|
||||||
|
| controller.replicas | int | `1` | The number of replicas. |
|
||||||
|
| cronJob.annotations | object | `{}` | Additional annotations for the cronjob object. |
|
||||||
|
| cronJob.enabled | bool | `true` | Create a cron job to auto update repositories. |
|
||||||
|
| cronJob.failedJobsHistoryLimit | int | `1` | The number of failed finished jobs to retain. |
|
||||||
|
| cronJob.labels | object | `{}` | Additional labels for the cronjob object. |
|
||||||
|
| cronJob.schedule | string | `"0 */4 * * *"` | Update schedule for the cron job. |
|
||||||
|
| cronJob.successfulJobsHistoryLimit | int | `3` | The number of successful finished jobs to retain. |
|
||||||
|
| cronJob.suspend | bool | `false` | Enable/disable the cron job schedule quickly. |
|
||||||
|
| dnsConfig | object | `{}` | Pod-level dns config. More info [here](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#hostname-and-name-resolution). |
|
||||||
|
| env[0] | object | `{"name":"TZ","value":"UTC"}` | Timezone for the container. |
|
||||||
|
| extraArgs | list | `[]` | List of extra arguments for the container. |
|
||||||
|
| fullnameOverride | string | `""` | |
|
||||||
|
| image.pullPolicy | string | `"IfNotPresent"` | The pull policy for the controller. |
|
||||||
|
| image.repository | string | `"ghcr.io/coder/code-server"` | The repository to pull the image from. |
|
||||||
|
| image.tag | string | `.Chart.AppVersion` | The docker tag, if left empty chart's appVersion will be used. |
|
||||||
|
| ingressRoute.annotations | object | `{}` | Additional annotations for the ingress route object. |
|
||||||
|
| ingressRoute.create | bool | `false` | Create an IngressRoute object for exposing this chart. |
|
||||||
|
| ingressRoute.entryPoints | list | `[]` | List of [entry points](https://doc.traefik.io/traefik/routing/routers/#entrypoints) on which the ingress route will be available. |
|
||||||
|
| ingressRoute.labels | object | `{}` | Additional labels for the ingress route object. |
|
||||||
|
| ingressRoute.middlewares | list | `[]` | List of [middleware objects](https://doc.traefik.io/traefik/routing/providers/kubernetes-crd/#kind-middleware) for the ingress route. |
|
||||||
|
| ingressRoute.rule | string | `""` | [Matching rule](https://doc.traefik.io/traefik/routing/routers/#rule) for the underlying router. |
|
||||||
|
| ingressRoute.tlsSecretName | string | `""` | Use an existing secret containing the TLS certificate. |
|
||||||
|
| nameOverride | string | `""` | |
|
||||||
|
| persistentVolumeClaim.accessMode | string | `"ReadWriteOnce"` | Access mode of the persistent volume claim object. |
|
||||||
|
| persistentVolumeClaim.annotations | object | `{}` | Additional annotations for the persistent volume claim object. |
|
||||||
|
| persistentVolumeClaim.create | bool | `true` | Create a new persistent volume claim object. |
|
||||||
|
| persistentVolumeClaim.ensurePermissions | bool | `true` | Manage permissions automatically. |
|
||||||
|
| persistentVolumeClaim.existingPersistentVolumeClaim | string | `""` | Use an existing persistent volume claim object. |
|
||||||
|
| persistentVolumeClaim.labels | object | `{}` | Additional labels for the persistent volume claim object. |
|
||||||
|
| persistentVolumeClaim.mountPath | string | `"/home/coder"` | Mount path of the persistent volume claim object. |
|
||||||
|
| persistentVolumeClaim.projectsPath | string | `"/home/coder/projects"` | Project folder inside the persistent volume claim object. |
|
||||||
|
| persistentVolumeClaim.size | string | `"1Gi"` | Storage request size for the persistent volume claim object. |
|
||||||
|
| persistentVolumeClaim.storageClassName | string | `""` | Storage class name for the persistent volume claim object. |
|
||||||
|
| persistentVolumeClaim.volumeMode | string | `"Filesystem"` | Volume mode of the persistent volume claim object. |
|
||||||
|
| ports.http.enabled | bool | `true` | Enable the port inside the `controller` and `Service` objects. |
|
||||||
|
| ports.http.nodePort | string | `nil` | The external port used if `.service.type` == `NodePort`. |
|
||||||
|
| ports.http.port | int | `8080` | The port used as internal port and cluster-wide port if `.service.type` == `ClusterIP`. |
|
||||||
|
| ports.http.protocol | string | `"TCP"` | The protocol used for the service. |
|
||||||
|
| repositories | list | `[]` | List of repositories to be cloned / updated automatically. |
|
||||||
|
| resources | object | `{}` | Compute resources used by the container. More info [here](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/). |
|
||||||
|
| secret.annotations | object | `{}` | Additional annotations for the secret object. |
|
||||||
|
| secret.create | bool | `true` | Create a new secret containing the password. |
|
||||||
|
| secret.existingSecret | string | `""` | Use an existing secret to store the password. |
|
||||||
|
| secret.labels | object | `{}` | Additional labels for the secret object. |
|
||||||
|
| secret.password | string | `""` | Password used when not using an existing secret. |
|
||||||
|
| securityContext | object | `{"fsGroup":1000,"runAsGroup":1000,"runAsNonRoot":true,"runAsUser":1000}` | Pod-level security attributes. More info [here](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#security-context). |
|
||||||
|
| service.annotations | object | `{}` | Additional annotations for the service object. |
|
||||||
|
| service.enabled | bool | `true` | Create a service for exposing this chart. |
|
||||||
|
| service.labels | object | `{}` | Additional labels for the service object. |
|
||||||
|
| service.type | string | `"ClusterIP"` | The service type used. |
|
||||||
|
| serviceAccount.name | string | `""` | Specify the service account used for the controller. |
|
||||||
|
| tolerations | list | `[]` | Pod-level tolerations. More info [here](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#scheduling). |
|
||||||
|
|
||||||
|
## Maintainers
|
||||||
|
|
||||||
|
| Name | Email | Url |
|
||||||
|
| ---- | ------ | --- |
|
||||||
|
| pascaliske | <info@pascaliske.dev> | <https://pascaliske.dev> |
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
[MIT](../LICENSE.md) – © 2023 [Pascal Iske](https://pascaliske.dev)
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
# [`{{ template "chart.name" . }}`]({{ template "chart.homepage" . }})
|
||||||
|
|
||||||
|
{{ template "chart.deprecationWarning" . }}
|
||||||
|
|
||||||
|
> {{ template "chart.description" . }}
|
||||||
|
|
||||||
|
[{{ template "chart.typeBadge" . }}]({{ template "chart.homepage" . }})[{{ template "chart.versionBadge" . }}]({{ template "chart.homepage" . }})[{{ template "chart.appVersionBadge" . }}]({{ template "chart.homepage" . }})
|
||||||
|
|
||||||
|
{{ template "chart.sourcesList" . }}
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
- [`helm`](https://helm.sh) - Refer to their [docs](https://helm.sh/docs) to get started.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
To use this chart add the repo as follows:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
helm repo add pascaliske https://charts.pascaliske.dev
|
||||||
|
```
|
||||||
|
|
||||||
|
If you had already added this repo earlier, run `helm repo update` to retrieve the latest versions of the packages.
|
||||||
|
|
||||||
|
To install this chart simply run the following command:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
helm install {{ template "chart.name" . }} pascaliske/{{ template "chart.name" . }}
|
||||||
|
```
|
||||||
|
|
||||||
|
To uninstall this chart simply run the following command:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
helm delete {{ template "chart.name" . }}
|
||||||
|
```
|
||||||
|
|
||||||
|
{{ template "chart.valuesHeader" . }}
|
||||||
|
|
||||||
|
The following values can be used to adjust the helm chart.
|
||||||
|
|
||||||
|
{{ template "chart.valuesTable" . }}
|
||||||
|
|
||||||
|
{{ template "chart.maintainersSection" . }}
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
[MIT](../LICENSE.md) – © {{ now | date "2006" }} [Pascal Iske](https://pascaliske.dev)
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
secret:
|
||||||
|
password: pass123
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
1. Get the application URL by running these commands:
|
||||||
|
{{- if contains "NodePort" .Values.service.type }}
|
||||||
|
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "code-server.fullname" . }})
|
||||||
|
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
||||||
|
echo http://$NODE_IP:$NODE_PORT
|
||||||
|
{{- else if contains "LoadBalancer" .Values.service.type }}
|
||||||
|
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
||||||
|
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "code-server.fullname" . }}'
|
||||||
|
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "code-server.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
|
||||||
|
echo http://$SERVICE_IP:{{ .Values.ports.http.port }}
|
||||||
|
{{- else if contains "ClusterIP" .Values.service.type }}
|
||||||
|
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "code-server.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
|
||||||
|
export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
|
||||||
|
echo "Visit http://127.0.0.1:8080 to use your application"
|
||||||
|
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT
|
||||||
|
{{- end }}
|
||||||
@@ -0,0 +1,102 @@
|
|||||||
|
{{/*
|
||||||
|
Expand the name of the chart.
|
||||||
|
*/}}
|
||||||
|
{{- define "code-server.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 "code-server.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 "code-server.chart" -}}
|
||||||
|
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Common labels
|
||||||
|
*/}}
|
||||||
|
{{- define "code-server.labels" -}}
|
||||||
|
helm.sh/chart: {{ include "code-server.chart" . }}
|
||||||
|
{{ include "code-server.selectorLabels" . }}
|
||||||
|
{{- if .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||||
|
{{- end }}
|
||||||
|
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Selector labels
|
||||||
|
*/}}
|
||||||
|
{{- define "code-server.selectorLabels" -}}
|
||||||
|
app.kubernetes.io/name: {{ include "code-server.name" . }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create the name of the service account to use
|
||||||
|
*/}}
|
||||||
|
{{- define "code-server.serviceAccountName" -}}
|
||||||
|
{{- if .Values.serviceAccount.create }}
|
||||||
|
{{- default (include "code-server.fullname" .) .Values.serviceAccount.name }}
|
||||||
|
{{- else }}
|
||||||
|
{{- default "default" .Values.serviceAccount.name }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Certificate name
|
||||||
|
*/}}
|
||||||
|
{{- define "code-server.certificate.name" -}}
|
||||||
|
{{- if not (empty .Values.certificate.dnsNames) }}
|
||||||
|
{{- first .Values.certificate.dnsNames }}
|
||||||
|
{{- else }}
|
||||||
|
{{- include "code-server.fullname" . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Certificate secret name
|
||||||
|
*/}}
|
||||||
|
{{- define "code-server.certificate.secretName" -}}
|
||||||
|
{{- if not (empty .Values.certificate.secretName) }}
|
||||||
|
{{- .Values.certificate.secretName }}
|
||||||
|
{{- else }}
|
||||||
|
{{- include "code-server.certificate.name" . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Certificate issuer reference name
|
||||||
|
*/}}
|
||||||
|
{{- define "code-server.certificate.issuerRefName" -}}
|
||||||
|
{{- required "Mandatory field \".certificate.issuerRef.name\" is empty!" .Values.certificate.issuerRef.name -}}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
IngressRoute TLS secret name
|
||||||
|
*/}}
|
||||||
|
{{- define "code-server.ingressRoute.tlsSecretName" -}}
|
||||||
|
{{- if not (empty .Values.ingressRoute.tlsSecretName) }}
|
||||||
|
{{- .Values.ingressRoute.tlsSecretName }}
|
||||||
|
{{- else if .Values.certificate.create }}
|
||||||
|
{{- include "code-server.certificate.name" . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
{{- if and .Values.certificate.create .Values.service.enabled -}}
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: {{ include "code-server.certificate.name" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "code-server.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.certificate.labels }}
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.certificate.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
secretName: {{ include "code-server.certificate.secretName" . }}
|
||||||
|
{{- with .Values.certificate.dnsNames }}
|
||||||
|
dnsNames:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.certificate.issuerRef }}
|
||||||
|
issuerRef:
|
||||||
|
kind: {{ default "ClusterIssuer" .kind }}
|
||||||
|
name: {{ include "code-server.certificate.issuerRefName" $ }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
{{- if and .Values.configMap.create (empty .Values.configMap.existingConfigMap) -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: {{ printf "%s-config" (include "code-server.fullname" .) }}
|
||||||
|
labels:
|
||||||
|
{{- include "code-server.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.configMap.labels }}
|
||||||
|
{{ toYaml . | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.configMap.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
data:
|
||||||
|
config.yml: |
|
||||||
|
{{- if or $.Values.secret.create $.Values.secret.existingSecret }}
|
||||||
|
auth: password
|
||||||
|
{{- else }}
|
||||||
|
auth: none
|
||||||
|
{{- end }}
|
||||||
|
{{- range $key, $val := .Values.configMap.config }}
|
||||||
|
{{- if ne $key "auth" }}
|
||||||
|
{{ $key }}: {{ $val }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@@ -0,0 +1,183 @@
|
|||||||
|
{{- if .Values.controller.enabled -}}
|
||||||
|
{{- if empty .Values.persistentVolumeClaim.projectsPath -}}
|
||||||
|
{{- fail "Empty projects path detected in \".Values.persistentVolumeClaim.projectsPath\"!" -}}
|
||||||
|
{{- end -}}
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: {{ include "base.controller.kind" . }}
|
||||||
|
metadata:
|
||||||
|
name: {{ include "code-server.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "code-server.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.controller.labels }}
|
||||||
|
{{ toYaml . | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.controller.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
{{- if .Values.controller.replicas }}
|
||||||
|
replicas: {{ .Values.controller.replicas }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if eq (include "base.controller.kind" . ) "StatefulSet" }}
|
||||||
|
serviceName: {{ include "code-server.fullname" . }}-headless
|
||||||
|
{{- end }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "code-server.selectorLabels" . | nindent 6 }}
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
{{- with .Values.controller.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "code-server.selectorLabels" . | nindent 8 }}
|
||||||
|
spec:
|
||||||
|
serviceAccountName: {{ include "code-server.serviceAccountName" . }}
|
||||||
|
initContainers:
|
||||||
|
{{- if .Values.persistentVolumeClaim.ensurePermissions }}
|
||||||
|
- name: {{ printf "%s-permissions" (include "code-server.fullname" .) }}
|
||||||
|
image: busybox:latest
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
command: ['sh', '-c', 'chown -R {{ .Values.securityContext.runAsUser }}:{{ .Values.securityContext.runAsGroup }} {{ .Values.persistentVolumeClaim.mountPath }}']
|
||||||
|
{{- if eq (include "base.persistence.enabled" . ) "true" }}
|
||||||
|
volumeMounts:
|
||||||
|
- name: {{ include "base.persistence.suffix" (include "code-server.fullname" . ) }}
|
||||||
|
mountPath: {{ .Values.persistentVolumeClaim.mountPath }}
|
||||||
|
{{- end }}
|
||||||
|
securityContext:
|
||||||
|
runAsNonRoot: false
|
||||||
|
runAsGroup: 0
|
||||||
|
runAsUser: 0
|
||||||
|
{{- end }}
|
||||||
|
{{- if not (empty .Values.repositories) }}
|
||||||
|
- name: {{ printf "%s-repositories" (include "code-server.fullname" $) }}
|
||||||
|
image: alpine/git:latest
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
workingDir: {{ .Values.persistentVolumeClaim.projectsPath }}
|
||||||
|
command: ['/bin/sh']
|
||||||
|
args: ['/scripts/repo-updater.sh']
|
||||||
|
volumeMounts:
|
||||||
|
- name: script-volume
|
||||||
|
mountPath: /scripts
|
||||||
|
{{- if eq (include "base.persistence.enabled" . ) "true" }}
|
||||||
|
- name: {{ include "base.persistence.suffix" (include "code-server.fullname" . ) }}
|
||||||
|
mountPath: {{ .Values.persistentVolumeClaim.mountPath }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
containers:
|
||||||
|
- name: {{ template "code-server.name" . }}
|
||||||
|
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
|
||||||
|
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||||
|
ports:
|
||||||
|
{{- range $key, $val := .Values.ports }}
|
||||||
|
{{- if $val.enabled }}
|
||||||
|
- name: {{ $key | quote }}
|
||||||
|
containerPort: {{ $val.port }}
|
||||||
|
protocol: {{ default "TCP" $val.protocol | quote }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
env:
|
||||||
|
{{- range $i, $val := .Values.env }}
|
||||||
|
- name: {{ $val.name | quote }}
|
||||||
|
value: {{ $val.value | quote }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.ports.http.enabled }}
|
||||||
|
- name: PORT
|
||||||
|
value: {{ .Values.ports.http.port | quote }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if or .Values.secret.create (not (empty .Values.secret.existingSecret)) }}
|
||||||
|
- name: PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
{{- if .Values.secret.existingSecret }}
|
||||||
|
name: {{ .Values.secret.existingSecret }}
|
||||||
|
{{- else }}
|
||||||
|
name: {{ printf "%s-password" (include "code-server.fullname" .) }}
|
||||||
|
{{- end }}
|
||||||
|
key: password
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.configMap.mountPath }}
|
||||||
|
- name: CODE_SERVER_CONFIG
|
||||||
|
value: {{ (printf "%s/config.yml" .Values.configMap.mountPath) | quote }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.persistentVolumeClaim.mountPath }}
|
||||||
|
- name: XDG_DATA_HOME
|
||||||
|
value: {{ .Values.persistentVolumeClaim.mountPath | quote }}
|
||||||
|
{{- end }}
|
||||||
|
args: {{ if not .Values.extraArgs -}}[]{{- end }}
|
||||||
|
{{- range $i, $val := .Values.extraArgs }}
|
||||||
|
- {{ $val }}
|
||||||
|
{{- end }}
|
||||||
|
workingDir: {{ .Values.persistentVolumeClaim.projectsPath }}
|
||||||
|
volumeMounts:
|
||||||
|
- name: config-volume
|
||||||
|
mountPath: {{ .Values.configMap.mountPath }}
|
||||||
|
{{- if eq (include "base.persistence.enabled" . ) "true" }}
|
||||||
|
- name: {{ include "base.persistence.suffix" (include "code-server.fullname" . ) }}
|
||||||
|
mountPath: {{ .Values.persistentVolumeClaim.mountPath }}
|
||||||
|
{{- end }}
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: http
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: http
|
||||||
|
resources: {{ if not .Values.resources -}}{}{{- end }}
|
||||||
|
{{- if .Values.resources }}
|
||||||
|
{{- toYaml .Values.resources | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
volumes:
|
||||||
|
{{- if not (empty .Values.repositories) }}
|
||||||
|
- name: script-volume
|
||||||
|
configMap:
|
||||||
|
name: {{ printf "%s-scripts" (include "code-server.fullname" . ) }}
|
||||||
|
defaultMode: 0777
|
||||||
|
{{- end }}
|
||||||
|
- name: config-volume
|
||||||
|
configMap:
|
||||||
|
{{- if and .Values.configMap.create (empty .Values.configMap.existingConfigMap) }}
|
||||||
|
name: {{ printf "%s-config" (include "code-server.fullname" . ) }}
|
||||||
|
{{- else }}
|
||||||
|
name: {{ .Values.configMap.existingConfigMap }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if eq (include "base.persistence.enabled" . ) "true" }}
|
||||||
|
{{- if eq (include "base.persistence.type" . ) "volumes" }}
|
||||||
|
- name: {{ include "base.persistence.suffix" (include "code-server.fullname" . ) }}
|
||||||
|
persistentVolumeClaim:
|
||||||
|
{{- if eq (include "base.persistence.created" . ) "true" }}
|
||||||
|
claimName: {{ include "base.persistence.suffix" (include "code-server.fullname" . ) }}
|
||||||
|
{{- else }}
|
||||||
|
claimName: {{ .Values.persistentVolumeClaim.existingPersistentVolumeClaim }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.securityContext }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.securityContext | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.dnsConfig }}
|
||||||
|
dnsConfig:
|
||||||
|
{{- toYaml .Values.dnsConfig | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.affinity }}
|
||||||
|
affinity:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if eq (include "base.persistence.enabled" . ) "true" }}
|
||||||
|
{{- if eq (include "base.persistence.type" . ) "volumeClaimTemplates" }}
|
||||||
|
volumeClaimTemplates:
|
||||||
|
- metadata:
|
||||||
|
name: {{ include "base.persistence.suffix" (include "code-server.fullname" . ) }}
|
||||||
|
spec:
|
||||||
|
{{- include "base.persistence.spec" . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@@ -0,0 +1,75 @@
|
|||||||
|
{{- if and .Values.cronJob.enabled (not (empty .Values.repositories)) -}}
|
||||||
|
apiVersion: batch/v1
|
||||||
|
kind: CronJob
|
||||||
|
metadata:
|
||||||
|
name: {{ printf "%s-autoupdate" (include "code-server.fullname" .) }}
|
||||||
|
labels:
|
||||||
|
{{- include "code-server.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.cronJob.labels }}
|
||||||
|
{{ toYaml . | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.cronJob.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
schedule: {{ .Values.cronJob.schedule }}
|
||||||
|
suspend: {{ .Values.cronJob.suspend }}
|
||||||
|
concurrencyPolicy: Forbid
|
||||||
|
successfulJobsHistoryLimit: {{ .Values.cronJob.successfulJobsHistoryLimit }}
|
||||||
|
failedJobsHistoryLimit: {{ .Values.cronJob.failedJobsHistoryLimit }}
|
||||||
|
jobTemplate:
|
||||||
|
{{- with .Values.cronJob.annotations }}
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
template:
|
||||||
|
spec:
|
||||||
|
restartPolicy: Never
|
||||||
|
containers:
|
||||||
|
- name: {{ printf "%s-repositories" (include "code-server.fullname" $) }}
|
||||||
|
image: alpine/git:latest
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
workingDir: {{ .Values.persistentVolumeClaim.projectsPath }}
|
||||||
|
command: ['/bin/sh']
|
||||||
|
args: ['/scripts/repo-updater.sh']
|
||||||
|
volumeMounts:
|
||||||
|
- name: script-volume
|
||||||
|
mountPath: /scripts
|
||||||
|
- name: {{ include "base.persistence.suffix" (include "code-server.fullname" . ) }}
|
||||||
|
mountPath: {{ .Values.persistentVolumeClaim.mountPath }}
|
||||||
|
volumes:
|
||||||
|
{{- if not (empty .Values.repositories) }}
|
||||||
|
- name: script-volume
|
||||||
|
configMap:
|
||||||
|
name: {{ printf "%s-scripts" (include "code-server.fullname" . ) }}
|
||||||
|
defaultMode: 0777
|
||||||
|
{{- end }}
|
||||||
|
{{- if eq (include "base.persistence.enabled" . ) "true" }}
|
||||||
|
- name: {{ include "base.persistence.suffix" (include "code-server.fullname" . ) }}
|
||||||
|
persistentVolumeClaim:
|
||||||
|
{{- if eq (include "base.persistence.created" . ) "true" }}
|
||||||
|
claimName: {{ include "base.persistence.suffix" (include "code-server.fullname" . ) }}
|
||||||
|
{{- else }}
|
||||||
|
claimName: {{ .Values.persistentVolumeClaim.existingPersistentVolumeClaim }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.securityContext }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.securityContext | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.dnsConfig }}
|
||||||
|
dnsConfig:
|
||||||
|
{{- toYaml .Values.dnsConfig | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.affinity }}
|
||||||
|
affinity:
|
||||||
|
{{- toYaml . | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{- toYaml . | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end -}}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
{{- if eq (include "base.controller.kind" . ) "StatefulSet" -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: {{ include "code-server.fullname" . }}-headless
|
||||||
|
labels:
|
||||||
|
{{- include "code-server.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
clusterIP: None
|
||||||
|
ports:
|
||||||
|
{{- range $key, $val := .Values.ports }}
|
||||||
|
{{- if $val.enabled }}
|
||||||
|
- name: {{ $key | quote }}
|
||||||
|
port: {{ $val.port }}
|
||||||
|
targetPort: {{ $key | quote }}
|
||||||
|
protocol: {{ default "TCP" $val.protocol | quote }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
selector:
|
||||||
|
{{- include "code-server.selectorLabels" . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
{{- if and .Values.ingressRoute.create .Values.service.enabled -}}
|
||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: {{ printf "%s-route" (include "code-server.fullname" . ) }}
|
||||||
|
labels:
|
||||||
|
{{- include "code-server.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.ingressRoute.labels }}
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.ingressRoute.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
{{- with .Values.ingressRoute.entryPoints }}
|
||||||
|
entryPoints:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
routes:
|
||||||
|
- kind: Rule
|
||||||
|
match: {{ required "Mandatory field \".ingressRoute.rule\" is empty!" .Values.ingressRoute.rule }}
|
||||||
|
services:
|
||||||
|
- kind: Service
|
||||||
|
name: {{ include "code-server.fullname" . }}
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
port: {{ .Values.ports.http.port }}
|
||||||
|
{{- with .Values.ingressRoute.middlewares }}
|
||||||
|
middlewares:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with (include "code-server.ingressRoute.tlsSecretName" .) }}
|
||||||
|
tls:
|
||||||
|
secretName: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
{{- if eq (include "base.persistence.enabled" . ) "true" -}}
|
||||||
|
{{- if eq (include "base.persistence.type" . ) "volumes" -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
name: {{ printf "%s-storage" (include "code-server.fullname" .) }}
|
||||||
|
labels:
|
||||||
|
{{- include "code-server.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.persistentVolumeClaim.labels }}
|
||||||
|
{{ toYaml . | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.persistentVolumeClaim.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
{{- include "base.persistence.spec" . | nindent 2 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
{{- if not (empty .Values.repositories) -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: {{ printf "%s-scripts" (include "code-server.fullname" .) }}
|
||||||
|
labels:
|
||||||
|
{{- include "code-server.labels" . | nindent 4 }}
|
||||||
|
data:
|
||||||
|
repo-updater.sh: |
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# update the given repository
|
||||||
|
update() {
|
||||||
|
if [ ! -d "$1/.git" ]
|
||||||
|
then
|
||||||
|
git clone "$2" "$1"
|
||||||
|
else
|
||||||
|
cd "$1" && git fetch && git pull "$2"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# list of repositories to update
|
||||||
|
{{- range $i, $repo := .Values.repositories }}
|
||||||
|
update "{{ $repo.name }}" "{{ $repo.url }}"
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
{{- if and .Values.secret.create (empty .Values.secret.existingSecret) -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: {{ printf "%s-password" (include "code-server.fullname" .) }}
|
||||||
|
labels:
|
||||||
|
{{- include "code-server.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.secret.labels }}
|
||||||
|
{{ toYaml . | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.secret.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
type: Opaque
|
||||||
|
data:
|
||||||
|
password: {{ required "Mandatory field \".secret.password\" is empty!" .Values.secret.password | b64enc }}
|
||||||
|
{{- end -}}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
{{- if .Values.service.enabled -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: {{ include "code-server.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "code-server.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.service.labels }}
|
||||||
|
{{ toYaml . | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.service.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
type: {{ .Values.service.type }}
|
||||||
|
ports:
|
||||||
|
{{- range $key, $val := .Values.ports }}
|
||||||
|
{{- if $val.enabled }}
|
||||||
|
- name: {{ $key | quote }}
|
||||||
|
port: {{ $val.port }}
|
||||||
|
targetPort: {{ $key | quote }}
|
||||||
|
{{- if and (eq $.Values.service.type "NodePort") $val.nodePort }}
|
||||||
|
nodePort: {{ $val.nodePort }}
|
||||||
|
{{- end }}
|
||||||
|
protocol: {{ default "TCP" $val.protocol | quote }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
selector:
|
||||||
|
{{- include "code-server.selectorLabels" . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
@@ -0,0 +1,204 @@
|
|||||||
|
image:
|
||||||
|
# -- The repository to pull the image from.
|
||||||
|
repository: ghcr.io/coder/code-server
|
||||||
|
# -- The docker tag, if left empty chart's appVersion will be used.
|
||||||
|
# @default -- `.Chart.AppVersion`
|
||||||
|
tag: ''
|
||||||
|
# -- The pull policy for the controller.
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
|
||||||
|
nameOverride: ''
|
||||||
|
fullnameOverride: ''
|
||||||
|
|
||||||
|
controller:
|
||||||
|
# -- Create a workload for this chart.
|
||||||
|
enabled: true
|
||||||
|
# -- Type of the workload object.
|
||||||
|
kind: Deployment
|
||||||
|
# -- The number of replicas.
|
||||||
|
replicas: 1
|
||||||
|
# -- Additional annotations for the controller object.
|
||||||
|
annotations: {}
|
||||||
|
# -- Additional labels for the controller object.
|
||||||
|
labels: {}
|
||||||
|
|
||||||
|
service:
|
||||||
|
# -- Create a service for exposing this chart.
|
||||||
|
enabled: true
|
||||||
|
# -- The service type used.
|
||||||
|
type: ClusterIP
|
||||||
|
# -- Additional annotations for the service object.
|
||||||
|
annotations: {}
|
||||||
|
# -- Additional labels for the service object.
|
||||||
|
labels: {}
|
||||||
|
|
||||||
|
ingressRoute:
|
||||||
|
# -- Create an IngressRoute object for exposing this chart.
|
||||||
|
create: true
|
||||||
|
# -- List of [entry points](https://doc.traefik.io/traefik/routing/routers/#entrypoints) on which the ingress route will be available.
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
# -- [Matching rule](https://doc.traefik.io/traefik/routing/routers/#rule) for the underlying router.
|
||||||
|
rule: 'Host(`coder.traefik.local`)'
|
||||||
|
# -- List of [middleware objects](https://doc.traefik.io/traefik/routing/providers/kubernetes-crd/#kind-middleware) for the ingress route.
|
||||||
|
middlewares: []
|
||||||
|
# -- Use an existing secret containing the TLS certificate.
|
||||||
|
tlsSecretName: 'coder.taefik.local'
|
||||||
|
# -- Additional annotations for the ingress route object.
|
||||||
|
annotations: {}
|
||||||
|
# -- Additional labels for the ingress route object.
|
||||||
|
labels: {}
|
||||||
|
|
||||||
|
certificate:
|
||||||
|
# -- Create an Certificate object for the exposed chart.
|
||||||
|
create: true
|
||||||
|
# -- List of subject alternative names for the certificate.
|
||||||
|
dnsNames:
|
||||||
|
- 'coder.taefik.local'
|
||||||
|
# -- Name of the secret in which the certificate will be stored. Defaults to the first item in dnsNames.
|
||||||
|
secretName: 'coder.taefik.local'
|
||||||
|
issuerRef:
|
||||||
|
# -- Type of the referenced certificate issuer. Can be "Issuer" or "ClusterIssuer".
|
||||||
|
kind: ClusterIssuer
|
||||||
|
# -- Name of the referenced certificate issuer.
|
||||||
|
name: 'selfsigned'
|
||||||
|
# -- Additional annotations for the certificate object.
|
||||||
|
annotations: {}
|
||||||
|
# -- Additional labels for the certificate object.
|
||||||
|
labels: {}
|
||||||
|
|
||||||
|
env:
|
||||||
|
# -- Timezone for the container.
|
||||||
|
- name: TZ
|
||||||
|
value: UTC
|
||||||
|
|
||||||
|
# -- List of extra arguments for the container.
|
||||||
|
extraArgs: []
|
||||||
|
# - --disable-telemetry
|
||||||
|
|
||||||
|
ports:
|
||||||
|
http:
|
||||||
|
# -- Enable the port inside the `controller` and `Service` objects.
|
||||||
|
enabled: true
|
||||||
|
# -- The port used as internal port and cluster-wide port if `.service.type` == `ClusterIP`.
|
||||||
|
port: 8080
|
||||||
|
# -- The external port used if `.service.type` == `NodePort`.
|
||||||
|
nodePort: null
|
||||||
|
# -- The protocol used for the service.
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
configMap:
|
||||||
|
# -- Create a new config map object.
|
||||||
|
create: true
|
||||||
|
# -- Mount path of the config map object.
|
||||||
|
mountPath: /etc/code-server
|
||||||
|
# -- Use an existing config map object.
|
||||||
|
existingConfigMap: ''
|
||||||
|
# -- Map containing the [configuration of code-server](https://coder.com/docs/code-server/latest/guide).
|
||||||
|
config: {}
|
||||||
|
# -- Additional annotations for the config map object.
|
||||||
|
annotations: {}
|
||||||
|
# -- Additional labels for the config map object.
|
||||||
|
labels: {}
|
||||||
|
|
||||||
|
secret:
|
||||||
|
# -- Create a new secret containing the password.
|
||||||
|
create: true
|
||||||
|
# -- Use an existing secret to store the password.
|
||||||
|
existingSecret: ''
|
||||||
|
# -- Password used when not using an existing secret.
|
||||||
|
password: 'pass123'
|
||||||
|
# -- Additional annotations for the secret object.
|
||||||
|
annotations: {}
|
||||||
|
# -- Additional labels for the secret object.
|
||||||
|
labels: {}
|
||||||
|
|
||||||
|
persistentVolumeClaim:
|
||||||
|
# -- Create a new persistent volume claim object.
|
||||||
|
create: true
|
||||||
|
# -- Mount path of the persistent volume claim object.
|
||||||
|
mountPath: /home/coder
|
||||||
|
# -- Access mode of the persistent volume claim object.
|
||||||
|
accessMode: ReadWriteOnce
|
||||||
|
# -- Volume mode of the persistent volume claim object.
|
||||||
|
volumeMode: Filesystem
|
||||||
|
# -- Storage request size for the persistent volume claim object.
|
||||||
|
size: 1Gi
|
||||||
|
# -- Storage class name for the persistent volume claim object.
|
||||||
|
storageClassName: ''
|
||||||
|
# -- Project folder inside the persistent volume claim object.
|
||||||
|
projectsPath: /home/coder/projects
|
||||||
|
# -- Manage permissions automatically.
|
||||||
|
ensurePermissions: true
|
||||||
|
# -- Use an existing persistent volume claim object.
|
||||||
|
existingPersistentVolumeClaim: ''
|
||||||
|
# -- Additional annotations for the persistent volume claim object.
|
||||||
|
annotations: {}
|
||||||
|
# -- Additional labels for the persistent volume claim object.
|
||||||
|
labels: {}
|
||||||
|
|
||||||
|
# -- List of repositories to be cloned / updated automatically.
|
||||||
|
repositories: []
|
||||||
|
# - url: https://github.com/pascaliske/helm-charts
|
||||||
|
# name: helm-charts
|
||||||
|
|
||||||
|
cronJob:
|
||||||
|
# -- Create a cron job to auto update repositories.
|
||||||
|
enabled: true
|
||||||
|
# -- Update schedule for the cron job.
|
||||||
|
schedule: '0 */4 * * *'
|
||||||
|
# -- Enable/disable the cron job schedule quickly.
|
||||||
|
suspend: false
|
||||||
|
# -- The number of successful finished jobs to retain.
|
||||||
|
successfulJobsHistoryLimit: 3
|
||||||
|
# -- The number of failed finished jobs to retain.
|
||||||
|
failedJobsHistoryLimit: 1
|
||||||
|
# -- Additional annotations for the cronjob object.
|
||||||
|
annotations: {}
|
||||||
|
# -- Additional labels for the cronjob object.
|
||||||
|
labels: {}
|
||||||
|
|
||||||
|
serviceAccount:
|
||||||
|
# -- Specify the service account used for the controller.
|
||||||
|
name: ''
|
||||||
|
|
||||||
|
# -- Pod-level security attributes. More info [here](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#security-context).
|
||||||
|
securityContext:
|
||||||
|
fsGroup: 1000
|
||||||
|
runAsNonRoot: true
|
||||||
|
runAsGroup: 1000
|
||||||
|
runAsUser: 1000
|
||||||
|
|
||||||
|
# -- Pod-level dns config. More info [here](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#hostname-and-name-resolution).
|
||||||
|
dnsConfig: {}
|
||||||
|
# nameservers: []
|
||||||
|
# searches: []
|
||||||
|
# options:
|
||||||
|
# - name: ''
|
||||||
|
# value: ''
|
||||||
|
|
||||||
|
# -- Compute resources used by the container. More info [here](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/).
|
||||||
|
resources: {}
|
||||||
|
# limits:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 128Mi
|
||||||
|
# requests:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 128Mi
|
||||||
|
|
||||||
|
# -- Pod-level affinity. More info [here](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#scheduling).
|
||||||
|
affinity: {}
|
||||||
|
# nodeAffinity:
|
||||||
|
# requiredDuringSchedulingIgnoredDuringExecution:
|
||||||
|
# nodeSelectorTerms:
|
||||||
|
# - matchExpressions:
|
||||||
|
# - key: kubernetes.io/hostname
|
||||||
|
# operator: In
|
||||||
|
# values:
|
||||||
|
# - my-node-xyz
|
||||||
|
|
||||||
|
# -- Pod-level tolerations. More info [here](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#scheduling).
|
||||||
|
tolerations: []
|
||||||
|
# - key: node-role.kubernetes.io/control-plane
|
||||||
|
# operator: Exists
|
||||||
|
# effect: NoSchedule
|
||||||
Reference in New Issue
Block a user