Setting up the dev environment#
Before you start building an app, you'll need to prepare the development environment. This guide assumes you have EDA installed already and if you don't, you can quickly spin one up by following the Try EDA guide.
Your primary tools when developing an app:
edabuilderfor scaffolding, building, and publishing your app.goSDK for authoring the API of your custom resources.pythonruntime for getting syntax highlighting and IDE support when writing intents optional.edactlandkubectlfor managing resources in the EDA cluster.
These tools are available for all major OSes and architectures, so you can develop on your preferred platform, no matter where you are.
edabuilder is a CLI tool that helps to scaffold a new EDA app, build the container for it and then publish the application to the catalog. The CLI can be downloaded from the GitHub repository as well as from the eda-toolbox1 Pod.
Download the latest edabuilder binary using the downloader script that comes with the EDA Playground:
This will download the edabuilder binary to the ./tools directory in the EDA Playground repository. For convenience, you can move the binary somewhere to your $PATH.
The binary is also available in the GitHub repository directly.
If you're developing on a linux/amd64 machine, you can get the edabuilder binary from the eda-toolbox Pod:
You can add the eb alias for edabuilder to your shell configuration file to type less:
edabuilder shell completions
To assist you with the commands and objects hierarchy, edabuilder provides shell completions for the common shells.
Ensure that bash-completion is installed on your system.
To load completions for the current session:
To load completions for each session:
To also autocomplete for the eb command alias, add the following to your .bashrc or .bash_profile:
If shell completion is not already enabled in your environment you have to enable it by ensuring zsh completions are loaded by adding the following to your ~/.zshrc:
To load completions for each session generate the completion script and store it somewhere in your $fpath:
edabuilder completion zsh | \
sed '1,2c\#compdef edabuilder eb\ncompdef _edabuilder eb' > \
~/.oh-my-zsh/custom/completions/_edabuilder
Completion script location
The example above uses the ~/.oh-my-zsh/custom/completions directory, which might not exist by default.
echo $fpath will show the directories zsh reads files from. You can either use one of the available completions directories from this list or add a new directory:
and then add this directory to the fpath list by adding it in your .zshrc file:
Now you can use ~/.oh-my-zsh/custom/completions for your completions as shown above.
Start a new shell for this setup to take effect.
We will define the API of our declarative apps exactly like in Kubernetes - by crafting the Go files that extend the API of the EDA core. For this, we need a Go SDK.
Install Go SDK by following the upstream installation instructions.
Note
The minimum required Go version is 1.26.4.
While being optional, we recommend installing the Python runtime and initialize a virtual environment for development.
If you already have a Python environment dialed in, you can skip this step, but if not, then the easiest way to get Python on your dev machine is by installing uv - a modern multiplatform Python distribution and package manager.
During the development process, you will find it useful to create, read and modify resources in the EDA cluster. edactl and kubectl are the tools to help you with that. Follow the instructions in the CLI Tools guide to install them.
And now with these tools in your toolchest, you've got everything you need to start building your first app! Choose your preferred path, would you want to put the code to the compiler right away or want to beef up your knowledge on the matter?
-
Quick start
Prefer to dive into a hands on example?
-
More reading?
Thirsting for knowledge?
-
eda-toolboxpod is by default deployed in theeda-systemnamespace. ↩