# Default values for code-server.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.

replicaCount: 1

image:
  repository: codercom/code-server
  tag: '4.104.2'
  pullPolicy: Always

# Specifies one or more secrets to be used when pulling images from a
# private container repository
# https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry
imagePullSecrets: []
#  - name: registry-creds

nameOverride: ""
fullnameOverride: ""
hostnameOverride: ""

# The existing secret to use for code-server authentication in the frontend. the password is stored in the secret under the key `password`
# existingSecret: ""

serviceAccount:
  # Specifies whether a service account should be created
  create: true
  # Annotations to add to the service account
  annotations: {}
  # The name of the service account to use.
  # If not set and create is true, a name is generated using the fullname template
  name: ""

# Specifies annotations for deployment
annotations: {}

podAnnotations: {}

podSecurityContext: {}
  # fsGroup: 2000

priorityClassName: ""

service:
  type: ClusterIP
  port: 8080

ingress:
  enabled: false
  #annotations:
  #  kubernetes.io/tls-acme: "true"
  #hosts:
  #  - host: code-server.example.loc
  #    paths:
  #      - /
  ingressClassName: ""
  #tls:
  #  - secretName: code-server
  #    hosts:
  #      - code-server.example.loc

# Optional additional arguments
extraArgs: []
  # These are the arguments normally passed to code-server; run
  # code-server --help for a list of available options.
  #
  # Each argument and parameter must have its own entry; if you use
  # --param value on the command line, then enter it here as:
  #
  # - --param
  # - value
  #
  # If you receive an error like "Unknown option --param value", it may be
  # because both the parameter and value are specified as a single argument,
  # rather than two separate arguments (e.g. "- --param value" on a line).

# Optional additional environment variables
extraVars: []
#  - name: DISABLE_TELEMETRY
#    value: "true"
# if dind is desired:
#  - name: DOCKER_HOST
#    value: "tcp://localhost:2376"

##
## Init containers parameters:
## volumePermissions: Change the owner of the persist volume mountpoint to RunAsUser:fsGroup
##
volumePermissions:
  enabled: true
  securityContext:
    runAsUser: 0

## Pod Security Context
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
##
securityContext:
  enabled: true
  fsGroup: 1000
  runAsUser: 1000

resources: {}
  # We usually recommend not to specify default resources and to leave this as a conscious
  # choice for the user. This also increases chances charts run on environments with little
  # resources, such as Minikube. If you do want to specify resources, uncomment the following
  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
  # limits:
  #   cpu: 100m
  #   memory: 128Mi
  # requests:
  #  cpu: 100m
  #  memory: 1000Mi

nodeSelector: {}

tolerations: []

affinity: {}

## Persist data to a persistent volume
persistence:
  enabled: true
  ## code-server data Persistent Volume Storage Class
  ## If defined, storageClassName: <storageClass>
  ## If set to "-", storageClassName: "", which disables dynamic provisioning
  ## If undefined (the default) or set to null, no storageClassName spec is
  ##   set, choosing the default provisioner.  (gp2 on AWS, standard on
  ##   GKE, AWS & OpenStack)
  ##
  # storageClass: "-"
  accessMode: ReadWriteOnce
  size: 10Gi
  annotations: {}
  # existingClaim: ""
  # hostPath: /data

lifecycle:
  enabled: false
  # postStart:
  #  exec:
  #    command:
  #      - /bin/bash
  #      - -c
  #      - curl -s -L SOME_SCRIPT | bash

  # for dind, the following may be helpful
  # postStart:
  #   exec:
  #     command:
  #       - /bin/sh
  #       - -c
  #       - |
  #         sudo apt-get update \
  #           && sudo apt-get install -y docker.io

## Enable an Specify container in extraContainers.
## This is meant to allow adding code-server dependencies, like docker-dind.
extraContainers: |
# If docker-dind is used, DOCKER_HOST env is mandatory to set in "extraVars"
# - name: docker-dind
#   image: docker:28.3.2-dind
#   imagePullPolicy: IfNotPresent
#   resources:
#     requests:
#       cpu: 1
#       ephemeral-storage: "50Gi"
#       memory: 10Gi
#   securityContext:
#     privileged: true
#     procMount: Default
#   env:
#     - name: DOCKER_TLS_CERTDIR
#       value: "" # disable TLS setup
#   command:
#     - dockerd
#     - --host=unix:///var/run/docker.sock
#     - --host=tcp://0.0.0.0:2376


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

## Additional code-server secret mounts
extraSecretMounts: []
  # - name: secret-files
  #   mountPath: /etc/secrets
  #   subPath: private.key # (optional)
  #   secretName: code-server-secret-files
  #   readOnly: true

## Additional code-server volume mounts
extraVolumeMounts: []
  # - name: extra-volume
  #   mountPath: /mnt/volume
  #   readOnly: true
  #   existingClaim: volume-claim
  #   hostPath: ""
  #   emptyDir: {}

extraConfigmapMounts: []
  # - name: certs-configmap
  #   mountPath: /etc/code-server/ssl/
  #   subPath: certificates.crt # (optional)
  #   configMap: certs-configmap
  #   readOnly: true

extraPorts: []
  # - name: minecraft
  #   port: 25565
  #   protocol: tcp
