2022-08-25 14:32:40 -04:00
|
|
|
# Developer Instructions
|
|
|
|
|
2022-08-29 18:32:56 +02:00
|
|
|
This document covers basic needs to work with Kyverno codebase.
|
|
|
|
|
|
|
|
It contains instructions to build, run, and test Kyverno.
|
|
|
|
|
|
|
|
- [Tools](#tools)
|
|
|
|
- [Building and publishing an image locally](#building-and-publishing-an-image-locally)
|
|
|
|
|
|
|
|
## Tools
|
|
|
|
|
|
|
|
Building and/or testing Kyverno requires additional tooling.
|
|
|
|
|
|
|
|
We use `make` to simplify installing the tools we use.
|
|
|
|
|
|
|
|
Tools will be installed in the `.tools` folder when possible, this allows keeping installed tools local to the Kyverno repository.
|
|
|
|
The `.tools` folder is ignored by `git` and binaries should not be committed.
|
|
|
|
|
|
|
|
You can install tools by running:
|
|
|
|
```
|
|
|
|
make install-tools
|
|
|
|
```
|
|
|
|
|
|
|
|
To remove installed tools, run:
|
|
|
|
```
|
|
|
|
make clean-tools
|
|
|
|
```
|
|
|
|
|
|
|
|
> **Note**: If you don't install tools, they will be downloaded/installed as necessary when running `make` targets.
|
|
|
|
|
2022-08-25 14:32:40 -04:00
|
|
|
## Building and publishing an image locally
|
|
|
|
|
|
|
|
First, make sure you [install `ko`](https://github.com/google/ko#install)
|
|
|
|
|
|
|
|
### Publishing to your local Docker daemon
|
|
|
|
|
|
|
|
Set the `KO_DOCKER_REPO` environment variable to `ko.local`:
|
|
|
|
|
|
|
|
```
|
|
|
|
KO_DOCKER_REPO=ko.local
|
|
|
|
```
|
|
|
|
|
|
|
|
Then build and publish an image:
|
|
|
|
|
|
|
|
```
|
|
|
|
ko build ./cmd/kyverno --preserve-import-paths
|
|
|
|
```
|
|
|
|
|
|
|
|
The image will be available locally as `ko.local/github.com/kyverno/kyverno/cmd/kyverno`.
|
|
|
|
|
|
|
|
### Publishing to a local [KinD](https://kind.sigs.k8s.io/) cluster
|
|
|
|
|
|
|
|
First, create your KinD cluster:
|
|
|
|
|
|
|
|
```
|
|
|
|
kind create cluster
|
|
|
|
```
|
|
|
|
|
|
|
|
Set the `KO_DOCKER_REPO` environment variable to `kind.local`:
|
|
|
|
|
|
|
|
```
|
|
|
|
KO_DOCKER_REPO=kind.local
|
|
|
|
```
|
|
|
|
|
|
|
|
Then build and publish an image:
|
|
|
|
|
|
|
|
```
|
|
|
|
ko build ./cmd/kyverno --preserve-import-paths
|
|
|
|
```
|
|
|
|
|
|
|
|
This will build and load the image into your KinD cluster as:
|
|
|
|
|
|
|
|
```
|
|
|
|
kind.local/github.com/kyverno/kyverno/cmd/kyverno
|
|
|
|
```
|
|
|
|
|
|
|
|
If you have multiple KinD clusters, or created them with a non-default name, set `KIND_CLUSTER_NAME=<your-cluster-name>`.
|
|
|
|
|
|
|
|
### Publishing to a remote registry
|
|
|
|
|
|
|
|
Set the `KO_DOCKER_REPO` environment variable to the registry you'd like to push to:
|
|
|
|
For example:
|
|
|
|
|
|
|
|
```
|
|
|
|
KO_DOCKER_REPO=gcr.io/my-project/kyverno
|
|
|
|
KO_DOCKER_REPO=my-dockerhub-user/my-dockerhub-repo
|
|
|
|
KO_DOCKER_REPO=<ACCOUNTID>.dkr.ecr.<REGION>.amazonaws.com
|
|
|
|
```
|
|
|
|
|
|
|
|
Then build and publish an image:
|
|
|
|
|
|
|
|
```
|
|
|
|
ko build ./cmd/kyverno
|
|
|
|
```
|
|
|
|
|
|
|
|
The output will tell you the image name and digest of the image you just built.
|