diff --git a/helm/templates/coder.yaml b/helm/templates/coder.yaml index 353f5e763abc0..09b284e676bc8 100644 --- a/helm/templates/coder.yaml +++ b/helm/templates/coder.yaml @@ -63,10 +63,14 @@ spec: command: {{- toYaml .Values.coder.command | nindent 12 }} args: - {{- if .Values.coder.workspaceProxy }} + {{- if .Values.coder.commandArgs }} + {{- toYaml .Values.coder.commandArgs | nindent 12 }} + {{- else }} + {{- if .Values.coder.workspaceProxy }} - wsproxy - {{- end }} + {{- end }} - server + {{- end }} resources: {{- toYaml .Values.coder.resources | nindent 12 }} lifecycle: diff --git a/helm/tests/chart_test.go b/helm/tests/chart_test.go index 44721489cea51..7442be08fc2e3 100644 --- a/helm/tests/chart_test.go +++ b/helm/tests/chart_test.go @@ -52,6 +52,10 @@ var TestCases = []TestCase{ name: "command", expectedError: "", }, + { + name: "command_args", + expectedError: "", + }, } type TestCase struct { diff --git a/helm/tests/testdata/command_args.golden b/helm/tests/testdata/command_args.golden new file mode 100644 index 0000000000000..9728bf0b423d9 --- /dev/null +++ b/helm/tests/testdata/command_args.golden @@ -0,0 +1,186 @@ +--- +# Source: coder/templates/coder.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: "coder" + annotations: + {} + labels: + helm.sh/chart: coder-0.1.0 + app.kubernetes.io/name: coder + app.kubernetes.io/instance: release-name + app.kubernetes.io/part-of: coder + app.kubernetes.io/version: "0.1.0" + app.kubernetes.io/managed-by: Helm +--- +# Source: coder/templates/rbac.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: coder-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 +--- +# Source: coder/templates/rbac.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: "coder" +subjects: + - kind: ServiceAccount + name: "coder" +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: coder-workspace-perms +--- +# Source: coder/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: coder + labels: + helm.sh/chart: coder-0.1.0 + app.kubernetes.io/name: coder + app.kubernetes.io/instance: release-name + app.kubernetes.io/part-of: coder + app.kubernetes.io/version: "0.1.0" + app.kubernetes.io/managed-by: Helm + annotations: + {} +spec: + type: LoadBalancer + sessionAffinity: ClientIP + ports: + - name: "http" + port: 80 + targetPort: "http" + protocol: TCP + externalTrafficPolicy: "Cluster" + selector: + app.kubernetes.io/name: coder + app.kubernetes.io/instance: release-name +--- +# Source: coder/templates/coder.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: coder + labels: + helm.sh/chart: coder-0.1.0 + app.kubernetes.io/name: coder + app.kubernetes.io/instance: release-name + app.kubernetes.io/part-of: coder + app.kubernetes.io/version: "0.1.0" + app.kubernetes.io/managed-by: Helm + annotations: + {} +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: coder + app.kubernetes.io/instance: release-name + template: + metadata: + labels: + helm.sh/chart: coder-0.1.0 + app.kubernetes.io/name: coder + app.kubernetes.io/instance: release-name + app.kubernetes.io/part-of: coder + app.kubernetes.io/version: "0.1.0" + app.kubernetes.io/managed-by: Helm + annotations: + {} + spec: + serviceAccountName: "coder" + restartPolicy: Always + terminationGracePeriodSeconds: 60 + affinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchExpressions: + - key: app.kubernetes.io/instance + operator: In + values: + - coder + topologyKey: kubernetes.io/hostname + weight: 1 + containers: + - name: coder + image: "ghcr.io/coder/coder:latest" + imagePullPolicy: IfNotPresent + command: + - /opt/coder + args: + - arg1 + - arg2 + resources: + {} + lifecycle: + {} + env: + - name: CODER_HTTP_ADDRESS + value: "0.0.0.0:8080" + - name: CODER_PROMETHEUS_ADDRESS + value: "0.0.0.0:2112" + # Set the default access URL so a `helm apply` works by default. + # See: https://github.com/coder/coder/issues/5024 + - name: CODER_ACCESS_URL + value: "http://coder.default.svc.cluster.local" + # 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" + + ports: + - name: "http" + containerPort: 8080 + protocol: TCP + securityContext: + allowPrivilegeEscalation: false + readOnlyRootFilesystem: null + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seccompProfile: + type: RuntimeDefault + readinessProbe: + httpGet: + path: /healthz + port: "http" + scheme: "HTTP" + livenessProbe: + httpGet: + path: /healthz + port: "http" + scheme: "HTTP" + volumeMounts: [] + volumes: [] diff --git a/helm/tests/testdata/command_args.yaml b/helm/tests/testdata/command_args.yaml new file mode 100644 index 0000000000000..59d012aabbefb --- /dev/null +++ b/helm/tests/testdata/command_args.yaml @@ -0,0 +1,6 @@ +coder: + image: + tag: latest + commandArgs: + - arg1 + - arg2 diff --git a/helm/values.yaml b/helm/values.yaml index 8b33481b78ee1..e91a4460f66c5 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -277,6 +277,9 @@ coder: command: - /opt/coder + # coder.commandArgs -- Set arguments for the entrypoint command of the Coder pod. + commandArgs: [] + # 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.