Installing Kanister


  • Kubernetes 1.16 or higher. For cluster version lower than 1.16, we recommend installing Kanister version 0.62.0 or lower.

  • kubectl installed and setup

  • helm installed

  • kanctl installed

  • Access to an S3 compatible bucket and credentials.

  • Docker (for source-based installs only)

Deploying via Helm

This will install the Kanister controller in the kanister namespace

# Add Kanister charts
$ helm repo add kanister

# Install the Kanister operator controller using helm
$ helm install myrelease --namespace kanister --create-namespace kanister/kanister-operator --set image.tag=0.79.0

# Create an S3 Compliant Kanister profile using kanctl
$ kanctl create profile s3compliant --bucket <bucket> --access-key ${AWS_ACCESS_KEY_ID} \
                                    --secret-key ${AWS_SECRET_ACCESS_KEY}               \
                                    --region <region>                                   \
                                    --namespace kanister

Kanister Custom Resource Definitions (CRDs)

Kanister defines a few Custom Resource Definitions (CRDs) to express and execute data protection workflows. By default, these CRDs are managed (created/updated) by the Kanister controller.

If the Kanister controller doesn't have the permissions to create or update CRDs, you can disable that using the controller.updateCRDs Helm flag. If set to false, Helm will manage the CRDs instead of the Kanister controller.

Building and Deploying from Source

Use the following commands to build, package, and deploy the controller to your Kubernetes cluster. It will push the controller docker image to your docker repo <MY REGISTRY> and the controller will be deployed in the default namespace.

# Build controller binary
$ make build

# Package the binary in a docker image and push it to your image registry
$ make release-controller REGISTRY=<MY REGISTRY>

# Deploy the controller to your Kubernetes repo
$ make deploy REGISTRY=<MY REGISTRY>

Deploy a Released Version

To deploy a released version of the controller, issue the command below. Modify the namespace fields in to deploy in a namespace of your choice. By default, the controller will be deployed into the default namespace.

# Deploy controller version 0.79.0 to Kubernetes
$ make deploy VERSION="0.79.0"