Skip to content

Latest commit

 

History

History
86 lines (60 loc) · 5.17 KB

README.md

File metadata and controls

86 lines (60 loc) · 5.17 KB

Basic tools

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.

Git

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

Code IDE

Feel free to use the code editor of your choice. Popular choices include:

Local Kubernetes

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.

Helm

Helm is a tool used to install Kubernetes based applications. We need Helm in order to install the external-secrets-operator.

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/.

Kubernetes "IDE"

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

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.

Java development

Java 17

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

Maven is a tool for managing Java development projects. It handles dependencies, build and testing workflows.

Python development