# Getting Started

# Pre-requisites

Before you get started using KUDO, you need to have a running Kubernetes cluster setup. We use Kind and Minikube for testing purposes.

  • Setup a Kubernetes Cluster in version 1.13 or later (if you plan to use Minikube, please see the notes below)
  • Install kubectl in version 1.13 or later.
  • Install cert-manager. KUDO makes use of webhooks which require TLS. See additional notes below if you're interested in developing and testing KUDO without having to install cert-manager.

# Install KUDO CLI

Install the kubectl kudo plugin. To do so, please follow the CLI plugin installation instructions.

The KUDO CLI leverages the kubectl plugin system, which gives you all its functionality under kubectl kudo. This is a convenient way to install and deal with your KUDO Operators.

# Install KUDO into your cluster

Once you have a running cluster with kubectl installed along with the KUDO CLI plugin, you can install KUDO like so:

$ kubectl kudo init

This will create several resources. First, it will create the Custom Resource Definitions, service account, and role bindings necessary for KUDO to operate. It will also create an instance of the KUDO controller so that we can begin creating instances of applications.

If you want to manage the installation by hand the following is also possible:

$ kubectl kudo init --dry-run -o=yaml > kudo.yaml
$ kubectl apply -f kudo.yaml

See kudo init documentation for more KUDO installation options.

# Deploy Your First Operator

To get started, follow the instructions in the Apache Kafka example to deploy a Kafka cluster along with its dependency ZooKeeper.

See the KUDO Operator repository at https://github.com/kudobuilder/operators/ for more KUDO Operators and documentation.

# Create Your First Operator

To see the powers of KUDO unleashed in full, you should try creating your own operator.

# Notes on Minikube

If you plan on developing and testing KUDO locally via Minikube, you'll need to launch your cluster with a reasonable amount of memory allocated. By default, Minikube runs with 2GB - we recommend at least 10GB, especially if you're working with applications such as Kafka. You can start Minikube with some suitable resource adjustments as follows:

$ minikube start --cpus=4 --memory=10240 --disk-size=40g

# Notes on KIND

In order to use KIND with storage Operators, you must be using KIND version 0.7.0 or newer.

# Notes on cert-manager

If the cert-manager dependency isn't an option for your environment, then you can install KUDO with an (insecure) self-signed CA bundle by doing the following:

$ kubectl kudo init --unsafe-self-signed-webhook-ca

For development, you should also take a look at this blog post.