Repository navigation
v0.1.1
Warning
The release build for this tag failed before publishing, so v0.1.1 has no binaries, archives or container images. Use v0.1.2, which contains the same fix plus the packaging repair (#138). The v0.1.1 source and Go module already include the security fix (#136).
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 (#86, #87, #99, #131).