Here you will find an overview of a set of basic tools that will help you with the development lifecycle for code and configuration. With the basic tools you have the minimum setup you need to develop and manage code and configuration.
We use GitHub to host our code (and config) respositories. Install Git locally to help interact with the Git-based development flow: https://git-scm.com/downloads
Feel free to use the code editor of your choice. Popular choices include:
- VS Code (https://code.visualstudio.com/). Supports a wide variaty of languages and formats via plug-ins.
- IntelliJ Community Edition (https://www.jetbrains.com/idea/download). Excellent choice for Java-based development. IntelliJ provides very good code completion suggestions (much better than VS Code) which greatly eases the development experience.
- PyCharm Community Edition (https://www.jetbrains.com/pycharm/download). Excellent choice for Python-based development.
The main building block of our solution infrastructure is self-contained code modules--primarily packaged as containers. We use Kubernetes to manage our containers and base many of our development/solution services on Kubernetes principles.
We recommend setting up a local Kubernetes cluster on your machine to support the local development flow. This allows you to develop and test your code in an evironment that closely mirrors the solution infrastructure.
There are multiple options for installing a local Kubernetes environment with popular choices including Docker Desktop, Minikube, K3s, and more.
- Windows: On Windows we recommend using either
Docker Desktop
which includes a vanilla K8s (https://www.docker.com/products/docker-desktop) orMinikube
(https://minikube.sigs.k8s.io/docs/start/). - Mac:
Minikube
is a good choice (https://minikube.sigs.k8s.io/docs/start/). - Linux:
Minikube
is a good choice (https://minikube.sigs.k8s.io/docs/start/). You can also considerK3s
(https://k3s.io/).
Helm is a tool used to install Kubernetes based applications. We need Helm in order to install the external-secrets-operator.
- Windows: Download the Helm binary from https://github.com/helm/helm/releases, unpack it and add it to
PATH
. - Mac: Install via Homebrew
brew install helm
- Linux: Depeding on which flavor (and package manager) you use:
snap install helm --classic
You can also consult the Helm install guide: https://helm.sh/docs/intro/install/.
The main method for interacting with Kubernetes, is the CLI tool kubectl
. This tool is bundled with the local Kubernetes flavors mentioned above and allows you to control all aspects of Kubernetes.
If you favor a more visual interaction with Kubernetes, you can use Lens
(https://k8slens.dev/) as a "Kubernetes IDE". Lens
can make it easier to get started with Kubernetes as it offers you a nice GUI and easy access to common operations.
Skaffold helps orchestate the development workflow for container-based development. It integrates with the rest of your toolchain (across languages, including Python and Java) and will handle code build, debugging, image build and distribution and deploying the container on Kubernetes. It also allows live observation and debugging of your code while running in Kubernetes.
- Install, all platforms: https://github.com/GoogleContainerTools/skaffold/releases
We currently use Java 17 as our default version. This is compatible with our Java SDK and Beam SDK.
We recommend using the free Adoptium Temurin
Java version (https://adoptium.net/) which is the rebranded/new version of OpenJDK
.
- Windows: On Win11 and new Win10 you can use the
winget
packaged manager:
winget install EclipseAdoptium.Temurin.17
Alternatively, download Java 17 SDK "Temurin" from https://adoptium.net/.
- Mac: Install via Homebrew
brew tap homebrew/cask-versions
brew install --cask temurin17
- Linux: Depeding on which flavor (and package manager) you use:
apt-get install temurin-17-jdk
yum install temurin-17-jdk
zypper install temurin-17-jdk
Tip: Remember to set the JAVA_HOME
environment variable after install.
Maven is a tool for managing Java development projects. It handles dependencies, build and testing workflows.
- Download for Windows and Mac: https://maven.apache.org/download.cgi.
- Installation tips: https://maven.apache.org/install.html.