Repository navigation
v0.1.2
This release contains the security fix from v0.1.1 plus a packaging repair. The v0.1.1 release build failed before publishing, so v0.1.1 has no binaries or images; use this release.
Security
- Authentication for the aggregated API server and the MCP HTTP server (GHSA-c3vp-pjh2-7gv4, #136). In v0.1.0, both servers accepted unauthenticated requests and acted with the operator's authority, and the default
--app=allran both. The aggregated API server now authenticates and authorizes every request through Kubernetes (front-proxy certificates, TokenReview, SubjectAccessReview); anonymous callers reach only/healthz,/livezand/readyz. The MCP server no longer runs in--app=all;--app=mcp-httplistens on127.0.0.1:8090and requires a bearer token from--mcp-token-file. - Dependency updates for published advisories (#92, #101, #104, #118), and code and image security scanning in CI (#88).
Upgrade notes
- The aggregated API server needs
config/rbac/auth-delegator-binding.yamlandconfig/rbac/authentication-reader-binding.yamlfor the operator ServiceAccount (both are applied bykubectl apply -f config/rbac/). Without read access tokube-system/extension-apiserver-authenticationit does not start; without permission to create SubjectAccessReviews it denies requests. - Clients that called port
6443directly must send a Kubernetes bearer token with RBAC onaggregation.coder.com, or go through kube-apiserver (kubectl). - RBAC on
codertemplatesandcoderworkspacesis owner-equivalent inside Coder: the server calls Coder with the control plane's operator token. Grant it only to subjects you would trust as Coder owners. --app=allno longer runs MCP anddeploy/mcp-service.yamlis removed; delete the old Service. To use MCP, run--app=mcp-http --mcp-token-file=<file>and connect throughkubectl port-forward.- Outside a cluster, the aggregated API server needs
KUBECONFIG(exactly one file) or~/.kube/config.
Added
dist/install.yaml, a generated one-file install bundle for the operator in controller mode, kept fresh by CI (#89).CoderControlPlanecan reference an external PostgreSQL connection Secret (#122).- Kind E2E coverage for the
CoderWorkspacelifecycle (#114).
Fixed
CoderTemplateUpdate applies metadata only after the new source is active, and returns409 Conflictif the template changed during the import (#129).spec.filestemplate Create waits for the import before creating the template (#116).- Canonical organization, owner, template and workspace names are enforced so repeated
kubectl applyconverges (#106, #111). - Aggregated API delete preconditions are honored, and workspace
resourceVersionreflects the returned representation (#110, #115). kubectl rollout restartworks on operator-managed Deployments (#121).- Release and
:mainimage builds are unified and repaired, and tag releases no longer fail on an unsetGORELEASER_CHANNEL(#86, #87, #99, #131, #138).