code-server/docs/helm.md

6.7 KiB

code-server Helm Chart

Version: 1.0.0 Type: application AppVersion: 4.1.0

code-server code-server is VS Code running on a remote server, accessible through the browser.

This chart is community maintained by @Matthew-Beckett and @alexgorbatchev

Quickstart

$ git clone https://github.com/coder/code-server
$ cd code-server
$ helm upgrade --install code-server ci/helm-chart

Introduction

This chart bootstraps a code-server deployment on a Kubernetes cluster using the Helm package manager.

Prerequisites

  • Kubernetes 1.6+

Installing the Chart

To install the chart with the release name code-server:

$ git clone https://github.com/coder/code-server
$ cd code-server
$ helm upgrade --install code-server ci/helm-chart

The command deploys code-server on the Kubernetes cluster in the default configuration. The configuration section lists the parameters that can be configured during installation.

Tip: List all releases using helm list

Uninstalling the Chart

To uninstall/delete the code-server deployment:

$ helm delete code-server

The command removes all the Kubernetes components associated with the chart and deletes the release.

Configuration

The following table lists the configurable parameters of the code-server chart and their default values.

Values

Key Type Default
affinity object {}
extraArgs list []
extraConfigmapMounts list []
extraContainers string ""
extraInitContainers string ""
extraSecretMounts list []
extraVars list []
extraVolumeMounts list []
fullnameOverride string ""
hostnameOverride string ""
image.pullPolicy string "Always"
image.repository string "codercom/code-server"
image.tag string "4.1.0"
imagePullSecrets list []
ingress.enabled bool false
nameOverride string ""
nodeSelector object {}
persistence.accessMode string "ReadWriteOnce"
persistence.annotations object {}
persistence.enabled bool true
persistence.size string "1Gi"
podAnnotations object {}
podSecurityContext object {}
replicaCount int 1
resources object {}
securityContext.enabled bool true
securityContext.fsGroup int 1000
securityContext.runAsUser int 1000
service.port int 8443
service.type string "ClusterIP"
serviceAccount.create bool true
serviceAccount.name string nil
tolerations list []
volumePermissions.enabled bool true
volumePermissions.securityContext.runAsUser int 0

Specify each parameter using the --set key=value[,key=value] argument to helm install. For example,

$ helm upgrade --install code-server \
  ci/helm-chart \
  --set persistence.enabled=false

The above command sets the the persistence storage to false.

Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example,

$ helm upgrade --install code-server ci/helm-chart -f values.yaml

Tip: You can use the default values.yaml

Extra Containers

There are two parameters which allow to add more containers to pod. Use extraContainers to add regular containers and extraInitContainers to add init containers. You can read more about init containers in k8s documentation.

Both parameters accept strings and use them as a templates

Example of using extraInitContainers:

extraInitContainers: |
  - name: customization
    image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
    imagePullPolicy: IfNotPresent
    env:
      - name: SERVICE_URL
        value: https://open-vsx.org/vscode/gallery
      - name: ITEM_URL
        value: https://open-vsx.org/vscode/item
    command:
      - sh
      - -c
      - |
        code-server --install-extension ms-python.python
        code-server --install-extension golang.Go
    volumeMounts:
      - name: data
        mountPath: /home/coder  

With this yaml in file init.yaml, you can execute

$ helm upgrade --install code-server \
  ci/helm-chart \
  --values init.yaml

to deploy code-server with python and golang extensions preinstalled before main container have started.