|
| 1 | +# Helm Chart Parity Tracking |
| 2 | + |
| 3 | +This document tracks the mapping between upstream `coder/coder` Helm chart |
| 4 | +values and the `CoderControlPlane` CRD fields managed by this operator. |
| 5 | + |
| 6 | +## Legend |
| 7 | + |
| 8 | +| Status | Meaning | |
| 9 | +|--------|---------| |
| 10 | +| ✅ | Implemented in CRD | |
| 11 | +| 🚧 | Planned / in progress | |
| 12 | +| ❌ | Not planned / out of scope | |
| 13 | + |
| 14 | +## Phase 1 — Production Readiness |
| 15 | + |
| 16 | +| Helm Chart Value | CRD Field | Status | Notes | |
| 17 | +|------------------|-----------|--------|-------| |
| 18 | +| `coder.image.repo` / `coder.image.tag` | `spec.image` | ✅ | Combined as full image reference | |
| 19 | +| `coder.replicaCount` | `spec.replicas` | ✅ | | |
| 20 | +| `coder.env` | `spec.extraEnv` | ✅ | | |
| 21 | +| `coder.service.type` | `spec.service.type` | ✅ | | |
| 22 | +| `coder.service.httpNodePort` | `spec.service.port` | ✅ | Port only; nodePort inferred by Kubernetes | |
| 23 | +| `coder.service.annotations` | `spec.service.annotations` | ✅ | | |
| 24 | +| `coder.serviceAccount.create` | `spec.serviceAccount.disableCreate` | ✅ | Inverted sense | |
| 25 | +| `coder.serviceAccount.name` | `spec.serviceAccount.name` | ✅ | | |
| 26 | +| `coder.serviceAccount.annotations` | `spec.serviceAccount.annotations` | ✅ | | |
| 27 | +| `coder.serviceAccount.labels` | `spec.serviceAccount.labels` | ✅ | | |
| 28 | +| `coder.workspaceProxy` | — | ❌ | Workspace proxy mode not in scope | |
| 29 | +| `coder.resources` | `spec.resources` | ✅ | | |
| 30 | +| `coder.securityContext` | `spec.securityContext` | ✅ | Container-level | |
| 31 | +| `coder.podSecurityContext` | `spec.podSecurityContext` | ✅ | Pod-level | |
| 32 | +| `coder.tls.secretNames` | `spec.tls.secretNames` | ✅ | Enables Coder built-in TLS | |
| 33 | +| `coder.readinessProbe` | `spec.readinessProbe` | ✅ | | |
| 34 | +| `coder.livenessProbe` | `spec.livenessProbe` | ✅ | | |
| 35 | +| `coder.env` (`CODER_ACCESS_URL`) | `spec.envUseClusterAccessURL` | ✅ | Auto-injects default in-cluster URL | |
| 36 | +| `coder.rbac.createWorkspacePerms` | `spec.rbac.workspacePerms` | ✅ | | |
| 37 | +| `coder.rbac.enableDeployments` | `spec.rbac.enableDeployments` | ✅ | | |
| 38 | +| `coder.rbac.extraRules` | `spec.rbac.extraRules` | ✅ | | |
| 39 | + |
| 40 | +## Phase 2 — Operability & HA |
| 41 | + |
| 42 | +| Helm Chart Value | CRD Field | Status | Notes | |
| 43 | +|------------------|-----------|--------|-------| |
| 44 | +| `coder.envFrom` | `spec.envFrom` | ✅ | | |
| 45 | +| `coder.volumes` | `spec.volumes` | ✅ | | |
| 46 | +| `coder.volumeMounts` | `spec.volumeMounts` | ✅ | | |
| 47 | +| `coder.certs.secrets` | `spec.certs.secrets` | ✅ | CA cert Secret selectors | |
| 48 | +| `coder.nodeSelector` | `spec.nodeSelector` | ✅ | | |
| 49 | +| `coder.tolerations` | `spec.tolerations` | ✅ | | |
| 50 | +| `coder.affinity` | `spec.affinity` | ✅ | | |
| 51 | +| `coder.topologySpreadConstraints` | `spec.topologySpreadConstraints` | ✅ | | |
| 52 | +| `coder.ingress.*` | `spec.expose.ingress` | ✅ | Part of unified expose API | |
| 53 | +| Gateway API | `spec.expose.gateway` | ✅ | HTTPRoute; Gateway CRDs optional | |
| 54 | +| `coder.imagePullSecrets` | `spec.imagePullSecrets` | ✅ | | |
| 55 | + |
| 56 | +## Not Planned |
| 57 | + |
| 58 | +| Helm Chart Value | Reason | |
| 59 | +|------------------|--------| |
| 60 | +| `coder.workspaceProxy` | Workspace proxy mode is a separate concern | |
| 61 | +| `coder.podDisruptionBudget` | Future enhancement | |
| 62 | +| `coder.initContainers` | Future enhancement | |
| 63 | +| `coder.command` | Not safe to override in operator mode | |
| 64 | +| `provisionerDaemon.*` | Separate provisioner deployment (future) | |
0 commit comments