If you change the API resources, in api/.../*.go
, update the generated code and manifests by running:
make generate
make manifests
Remove current Rollout and RemoteSync objects from your cluster. Then, remove old CRDs and apply the new CRDs to your cluster by running:
make uninstall
make install
Rollouts comprises of several software components:
- api: Definition of the KRM API supported by the rollouts controllers.
- config: The generated rollouts manifests.
- controllers: The controllers and related code for the Rollout CRDs.
- manifests: The generated rollouts manifests in kpt package format.
- clusterstore: Represents a store of kubernetes clusters.
- packageclustermatcher: Matches discovered packages to known clusters.
- packagediscovery: Discovers config packages to be rolled out.
- tokenexchange: Exchanges tokens for authenticating GCP service accounts.
- rolloutsclient: A client for the rollouts API.
See dedicated documentation on running Rollouts:
- locally
- on GKE (getting started guide coming soon)
Build Docker images of Rollout components:
# Build Images
make docker-build
# Push Images to Docker Registry
make docker-push
# Supported make variables:
# IMG - image name and tag
# Example:
IMG=gcr.io/<your-project>/rollouts-controller:v0.0.x make docker-push
Follow running-locally.md to run Rollouts locally.
Follow releasing.md for the current Rollouts release process.
make manifests
: generate Rollouts manifests underconfig
make generate
: generate code based on Rollouts API definitions (runs k8s code generators)make tidy
: run go mod tidymake fmt
: formats golang sourcesmake vet
: vets golang sourcesmake test
: runs testsmake build
: builds manager binarymake docker-build
: builds Rollouts Docker imagesmake docker-push
: pushes Rollouts Docker imagesmake install
: install CRDs into the K8s cluster specified in ~/.kube/configmake uninstall
: uninstall CRDs from the K8s cluster specified in ~/.kube/configmake deploy
: deploy controller to the K8s cluster specified in ~/.kube/config (must provide IMG variable for the controller image)make undeploy
: undeploy controller from the K8s cluster specified in ~/.kube/configmake license
: add licenses to source code
VSCode works really well for editing and debugging.