CloudNatix logo

Tutorial

Step 1. Install CloudNatix

Welcome!

This tutorial walks through the installation and the features that CloudNatix provides. We use a kind local Kubernetes cluster.

  • Please see the installation steps to install CloudNatix to EKS/AKS/GKE.
  • Please see this page to understand the optimization technologies provided by CloudNatix in more details.

Step 1.1. Install CloudNatix CLI

The installation requires CloudNatix CLI called cnatix. Please login CloudNatix from https://app.cloudnatix.com and click the "Install CLI" button on the side menu bar.

Then select version 21.2 and channel stable to download and install the CLI.

Step 1.2. Install CloudNatix Cluster Controller on a Kind Cluster

First let's create a Kind cluster. If you haven't installed kind, please follow the installation document.

kind create cluster --name my-cluster

Then we can install CloudNatix onto this Kind cluster by running the following commands.

cnatix login
cnatix clusters configure
cnatix clusters install --name my-cluster

cnatix login will open a browser and show the login screen. Once you log into CloudNatix, the command saves credentials locally and finishes.

cnatix clusters configure asks several questions on the installation configuration. You can just choose the default answers for all the questions.

$ cnatix clusters configure
Welcome! This command will guide you through configuring install parameters.
Initializing... done

? Use current context(kind-k8s-1.24) to install? Yes
? Choose CloudNatix distribution version: 21.2
? Choose CloudNatix channel: stable
? Enable CloudNatix components auto-upgrade? Yes
? Send Kubernetes container arguments and environment variables to global controller? Yes

cnatix clusters install will install CloudNatix Cluster Controller to the Kind cluster. It internally uses Helm. If you don't have Helm, you can also directly apply the generated YAML file.

kubectl apply -f "${HOME}"/.cnatix/cluster-configs/my-cluster/ccoperator.yaml

The cnatix clusters install command will create a ccoperator deployment in the cloudnatix namespace. Then the ccoperator deployment creates additional deployments in the same namespace.

The installation completes once all pods start running in the cloudnatix namespace. You can check the installation status with the following command:

watch -d "kubectl get pods -n cloudnatix"

Here is an example output after the completion of the installation:

$ kubectl get pods -n cloudnatix
NAME                                                        READY   STATUS    RESTARTS   AGE
authtokenrefresher-5c9c57465c-hnpv7                         1/1     Running   0          3m22s
ccoperator-5cf64675c7-lcl4m                                 1/1     Running   0          5m7s
cluster-watcher-75456897bd-cnm94                            1/1     Running   0          112s
clusteragent-595f45f574-h8l2n                               1/1     Running   0          2m
connect-agent-d58f54956-bfsnc                               2/2     Running   0          3m23s
kube-prometheus-stack-kube-state-metrics-64f75d684f-qrh4f   1/1     Running   0          2m12s
kube-prometheus-stack-operator-6bdb6cd498-d6n4t             1/1     Running   0          2m12s
kube-prometheus-stack-prometheus-node-exporter-f4hj6        1/1     Running   0          2m12s
prometheus-kube-prometheus-stack-prometheus-0               2/2     Running   0          2m3s
vpa-admission-controller-5756dc7bb6-mqlcn                   1/1     Running   0          114s
vpa-recommender-586db6f844-m9fxr                            1/1     Running   0          114s
vpa-updater-76cf5c8758-hn2zj                                1/1     Running   0          114s

Finally let's install metrics-server as CloudNatix internally uses it to generate workload rightsizing recommendations.

kubectl apply \
  -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
kubectl patch deployment metrics-server \
  -n kube-system \
  --type=json \
  -p '[{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value": "--kubelet-insecure-tls"}]'

The second command is needed to make metrics-server work with Kind.

Step 1.3. Check the installation status from Global Controller

We can check if the installed pods successfully connect to CloudNatix Global Controller https://app.cloudnatix.com and data get populated.

If you visit the Cluster page, it should show the installed cluster.

If you visit the Workload page, it should show all workloads running in the cluster.

Previous
Getting Started
Next
Step 2. Interact with Your Workloads