Dev Workflows
Dev connections defines how your local machine and IDE is connected to the dev container that runs in Kubernetes.
Common dev connections include:
- Bi-directional file sync to make sure files on localhost and inside the containers main working dir are kept in sync
- Port forwarding (and reverse port forwarding) to allow engineers to access services inside the dev container via localhost on their local machine (and vice versa)
- Connecting the local terminal to the dev container either by starting a new terminal session, by attaching the container's entrypoint process, or by simply streaming the container logs
- Injecting an SSH server into the dev container to SSH into the container, e.g. to use the remote environment capabilities in IDEs such as VS Code
- Auto-restart the container to create a hot reloading experience without the need for image building
- Proxy certain commands to make commands on the local machine accessible inside the container (e.g. be able to run
kubectlcommands inside the dev container without having to copy credentials inside the dev container) - Auto-open URLs to provide a starting point for the engineer when the dev container is ready to go
Config Reference
sync required object[]
Sync allows you to sync certain local paths with paths inside the container
sync required object[] path required string
Path is the path to sync. This can be defined in the form localPath:remotePath. You can also use '.'
to specify either the local or remote working directory. This is valid for example: .:.
path required string excludePaths required string[]
ExcludePaths is an array of file patterns in gitignore format to exclude.
excludePaths required string[] excludeFile required string
ExcludeFile loads the file patterns to exclude from a file.
excludeFile required string downloadExcludePaths required string[]
DownloadExcludePaths is an array of file patterns in gitignore format to exclude from downloading
downloadExcludePaths required string[] downloadExcludeFile required string
DownloadExcludeFile loads the file patterns to exclude from downloading from a file.
downloadExcludeFile required string uploadExcludePaths required string[]
UploadExcludePaths is an array of file patterns in gitignore format to exclude from uploading
uploadExcludePaths required string[] uploadExcludeFile required string
UploadExcludeFile loads the file patterns to exclude from uploading from a file.
uploadExcludeFile required string startContainer required boolean false
StartContainer will start the container after initial sync is done. This will
inject a devspacehelper into the pod and you need to define dev.*.command for
this to work.
startContainer required boolean false onUpload required
OnUpload can be used to execute certain commands on uploading either in the container or locally as
well as restart the container after a file changed has happened.
onUpload required initialSync required string
InitialSync defines the initial sync strategy to use when this sync starts. Defaults to mirrorLocal
initialSync required string waitInitialSync required boolean false
WaitInitialSync can be used to tell DevSpace to not wait until the initial sync is done
waitInitialSync required boolean false initialSyncCompareBy required string
InitialSyncCompareBy defines if the sync should only compare by the given type. Either mtime or size are possible
initialSyncCompareBy required string disableDownload required boolean false
DisableDownload will disable downloading completely
disableDownload required boolean false disableUpload required boolean false
DisableUpload will disable uploading completely
disableUpload required boolean false bandwidthLimits required
BandwidthLimits can be used to limit the amount of bytes that are transferred by DevSpace with this
sync configuration
bandwidthLimits required polling required boolean false
Polling will tell the remote container to use polling instead of inotify
polling required boolean false noWatch required boolean false
NoWatch will terminate the sync after the initial sync is done
noWatch required boolean false file required boolean false
File signals DevSpace that this is a single file that should get synced instead of a whole directory
file required boolean false ports required object[]
Ports defines port mappings from the remote pod that should be forwarded to your local
computer
ports required object[] port required string
Port is a port mapping that maps the localPort:remotePort. So if
you port forward the remote port will be available at the local port.
If you do reverse port forwarding, the local port will be available
at the remote port in the container. If only port is specified, local and
remote port are the same.
port required string bindAddress required string
BindAddress is the address DevSpace should listen on. Optional and defaults
to localhost.
bindAddress required string reversePorts required object[]
ReversePorts are port mappings to make local ports available inside the container
reversePorts required object[] port required string
Port is a port mapping that maps the localPort:remotePort. So if
you port forward the remote port will be available at the local port.
If you do reverse port forwarding, the local port will be available
at the remote port in the container. If only port is specified, local and
remote port are the same.
port required string bindAddress required string
BindAddress is the address DevSpace should listen on. Optional and defaults
to localhost.
bindAddress required string terminal required
Terminal allows you to tell DevSpace to open a terminal with screen support to this container
terminal required command required string
Command is the command that should be executed on terminal start.
This command is executed within a shell.
command required string workDir required string
WorkDir is the working directory that is used to execute the command in.
workDir required string enabled required boolean false
If enabled is true, DevSpace will use the terminal. Can be also
used to disable the terminal if set to false. DevSpace makes sure
that within a pipeline only one dev configuration can open a terminal
at a time and subsequent dev terminals will fail.
enabled required boolean false disableReplace required boolean false
DisableReplace tells DevSpace to not replace the pod or adjust its settings
to make sure the pod is sleeping when opening a terminal
disableReplace required boolean false disableScreen required boolean false
DisableScreen will disable screen which is used by DevSpace by default to preserve
sessions if connections interrupt or the session is lost.
disableScreen required boolean false disableTTY required boolean false
DisableTTY will disable a tty shell for terminal command execution
disableTTY required boolean false attach required
Attach allows you to tell DevSpace to attach to this container
attach required enabled required boolean false
Enabled can be used to enable attaching to a container
enabled required boolean false disableReplace required boolean false
DisableReplace prevents DevSpace from actually replacing the pod with modifications so that
the pod starts up correctly.
disableReplace required boolean false disableTTY required boolean false
DisableTTY is used to tell DevSpace to not use a TTY connection for attaching
disableTTY required boolean false logs required
Logs allows you to tell DevSpace to stream logs from this container to the console
logs required ssh required
SSH allows you to create an SSH tunnel to this container
ssh required enabled required boolean false
Enabled can be used to enable the ssh server within the container. By default,
DevSpace will generate the required keys and create an entry in your ~/.ssh/config
for this container that can be used via ssh dev-config-name.dev-project-name.devspace
enabled required boolean false ssh dev-config-name.dev-project-name.devspacelocalHostname required string
LocalHostname is the local ssh host to write to the ~/.ssh/config
localHostname required string localPort required integer
LocalPort is the local port to forward from, if empty will be random
localPort required integer remoteAddress required string
RemoteAddress is the address to listen to inside the container
remoteAddress required string useInclude required boolean false
UseInclude tells DevSpace to use a the file ~/.ssh/devspace_config for its ssh entries. DevSpace
will also create an import for its own entries inside ~/.ssh/config, this is a cleaner way,
but unfortunately not all SSH clients support this.
useInclude required boolean false restartHelper required
RestartHelper holds restart helper specific configuration. The restart helper is used to delay starting of
the container and restarting it and is injected via an annotation in the replaced pod.
restartHelper required proxyCommands required object[]
ProxyCommands allow you to proxy certain local commands to the container
proxyCommands required object[] gitCredentials required boolean false
GitCredentials configures a git credentials helper inside the container that proxies local git credentials
gitCredentials required boolean false command required string
Command is the name of the command that should be available in the remote container. DevSpace
will create a small script for that inside the container that redirect command execution to
the local computer.
command required string localCommand required string
LocalCommand can be used to run a different command than specified via the command option. By
default, this will be assumed to be the same as command.
localCommand required string skipContainerEnv required boolean false
SkipContainerEnv will not forward the container environment variables to the local command
skipContainerEnv required boolean false env required <env_name>:string
Env are extra environment variables to set for the command
env required <env_name>:string 