Developing OLM v1
Getting Started
The following make run
starts a KIND cluster for you to get a local cluster for testing, see the manual install steps below for how to run against a remote cluster.
Note
You will need a container runtime environment like Docker to run Kind. Kind also has experimental support for Podman.
If you are on MacOS, see Special Setup for MacOS.
Quickstart Installation
First, you need to install the CRDs and the operator-controller into a new KIND cluster. You can do this by running:
This will build a local container image of the operator-controller, create a new KIND cluster and then deploy onto that cluster. This will also deploy the catalogd and cert-manager dependencies.
To Install Any Given Release
Warning
Operator-Controller depends on cert-manager. Running the following command may affect an existing installation of cert-manager and cause cluster instability.
The latest version of Operator Controller can be installed with the following command:
curl -L -s https://github.com/operator-framework/operator-controller/releases/latest/download/install.sh | bash -s
Manual Step-by-Step Installation
-
Install Instances of Custom Resources:
-
Build and push your image to the location specified by
IMG
: -
Deploy the controller to the cluster with the image specified by
IMG
:
Modifying the API definitions
If you are editing the API definitions, generate the manifests such as CRs or CRDs using:
Note
Run make help
for more information on all potential make
targets.
Rapid Iterative Development with Tilt
If you are developing against the combined ecosystem of catalogd + operator-controller, you will want to take advantage of tilt
:
Tilt is a tool that enables rapid iterative development of containerized workloads.
Here is an example workflow without Tilt for modifying some source code and testing those changes in a cluster:
- Modify the source code.
- Build the container image.
- Either push the image to a registry or load it into your kind cluster.
- Deploy all the appropriate Kubernetes manifests for your application.
This process can take minutes, depending on how long each step takes.
Here is the same workflow with Tilt:
- Run
tilt up
- Modify the source code
- Wait for Tilt to update the container with your changes
This ends up taking a fraction of the time, sometimes on the order of a few seconds!
Installing Tilt
Follow Tilt's instructions for installation.
Installing catalogd
operator-controller requires
catalogd. Please make sure it's installed, either normally or via its own Tiltfile., before proceeding. If you want to use Tilt, make sure you specify a unique --port
flag to each tilt up
invocation.
Install tilt-support Repo
You must install the tilt-support repo at the directory level above this repo:
Starting Tilt
This is typically as short as:
Note
If you are using Podman, at least as of v4.5.1, you need to do this:
Otherwise, you'll see an error when Tilt tries to build your image that looks similar to:
When Tilt starts, you'll see something like this in your terminal:
Tilt started on http://localhost:10350/
v0.33.1, built 2023-06-28
(space) to open the browser
(s) to stream logs (--stream=true)
(t) to open legacy terminal mode (--legacy=true)
(ctrl-c) to exit
At the end of the installation process, the command output will prompt you to press the space bar to open the web UI, which provides a useful overview of all the installed components.
Special Setup for MacOS
Some additional setup is necessary on Macintosh computers to install and configure compatible tooling.
Install Homebrew and tools
Follow the instructions to install Homebrew, and then execute the following command to install the required tools:
Configure your shell
To configure your shell, either add this to your bash or zsh profile (e.g., in $HOME/.bashrc or $HOME/.zshrc), or run the following command in the terminal:
for bindir in `find $(brew --prefix)/opt -type d -follow -name gnubin -print -maxdepth 3`
do
export PATH=$bindir:$PATH
done
Contributing
Refer to CONTRIBUTING.md for more information.