Updates docker and kubernetes devcontainer templates Co-authored-by: Mathias Fredriksson <mafredri@gmail.com>
display_name, description, icon, maintainer_github, verified, tags
display_name | description | icon | maintainer_github | verified | tags | |||
---|---|---|---|---|---|---|---|---|
Devcontainers (Kubernetes) | Provision envbuilder pods as Coder workspaces | ../../../site/static/icon/k8s.png | coder | true |
|
Remote Development on Kubernetes Pods (with Devcontainers)
Provision Devcontainers as Coder workspaces on Kubernetes with this example template.
Prerequisites
Infrastructure
Cluster: This template requires an existing Kubernetes cluster.
Container Image: This template uses the envbuilder image to build a Devcontainer from a devcontainer.json
.
Authentication
This template authenticates using a ~/.kube/config
, if present on the server, or via built-in authentication if the Coder provisioner is running on Kubernetes with an authorized ServiceAccount. To use another authentication method, edit the template.
Architecture
Coder supports devcontainers with envbuilder, an open source project. Read more about this in Coder's documentation.
This template provisions the following resources:
- Kubernetes deployment (ephemeral)
- Kubernetes persistent volume claim (persistent on
/workspaces
)
This template will fetch a Git repo containing a devcontainer.json
specified by the repo
parameter, and builds it
with envbuilder
.
The Git repository is cloned inside the /workspaces
volume if not present.
Any local changes to the Devcontainer files inside the volume will be applied when you restart the workspace.
As you might suspect, any tools or files outside of /workspaces
or not added as part of the Devcontainer specification are not persisted.
Edit the devcontainer.json
instead!
Note
This template is designed to be a starting point! Edit the Terraform to extend the template to support your use case.
Caching
To speed up your builds, you can use a container registry as a cache.
When creating the template, set the parameter cache_repo
.
[!NOTE] We recommend using a registry cache with authentication enabled. To allow Envbuilder to authenticate with the registry cache, specify the variable
cache_repo_dockerconfig_secret
with the name of a Kubernetes secret in the same namespace as Coder. The secret must contain the key.dockerconfigjson
.