Skip to content

Installation

Here are the detailed instructions for installation of the self hosted controller in Azure AKS clusters.


Before Installation

  • Create an instance/node with the specifications described in the requirements.
  • Create wildcard DNS entries for the controller domains mentioned in the requirements, and point their A record to node/load balancer IP addresses.
  • (Optional) Generate a wildcard certificate for the FQDN which is signed by a certificate authority. Alternatively, configure the controller to use self-signed certificates.

Install RADM Services

Download Controller

Download and install the controller installation package.

  • Click here to login and download the controller installation package to the instance.

  • From your home directory, untar the package using the command below

    tar -xf rafay-controller-*.tar.gz
    

Example:

tar -xf rafay-controller-1.13-19-aks.tar.gz

Config YAML File

Copy and edit the config.yaml file.

sudo mv ./radm /usr/bin/
$  cp -rp config.yaml-tmpl config.yaml
$  vi config.yaml

Customize the config.yaml file. The following settings should be updated.

metadata.name: Name of the controller.
spec.networking.interface: Interface for controller traffic [optional] 
spec.deployment.ha: true if its HA controller.
spec.repo.*.path: Path of the tar location
spec.app-config.generate-self-signed-certs: Generates and uses self  signed certs for incoming core traffic.
spec.star-domain: Wildcard FQDN (*.example.com)
spec.override-config.global.enable_hosted_dns_server: true if DNS is not available. 
spec.app-config.logo: Path for logo to be displayed on UI.
spec.override-config.localprovisioner.basePath: Path for PVC volumes.
spec.override-config.core-registry-path: Path for registry images.
spec.override-config.etcd-path: Path where etcd data is saved.
spec.override-config.global.external_lb: set to true to use external LB.

Create a Copy of Kubeconfig File

Copy the kubeconfig file from the Azure AKS cluster to the node.

az aks get-credentials \
--resource-group <resource_group> \
--name <cluster_name> \
--file ./kubeconfig

Copy the kubeconfig file from the ./kubeconfig directory to the node where you are running the RADM commands to install the controller on the Azure AKS cluster.


For HA Controller (Optional)

The HA controller requires a minimum of three masters to maintain high availability.

Copy Kubeconfig File to Node

Copy the kubeconfig file from the Azure AKS cluster to the node. See Create a Copy of Kubeconfig File to create the kubeconfig file.

Create Database and Secrets

Create a database and secrets in PostgreSQL.

sudo radm database

Install Dependencies

Install the controller dependencies.

sudo radm dependency --config config.yaml --kubeconfig <kube config file>

Install Apps

Install the controller application.

sudo radm application --config config.yaml --kubeconfig <kube config file>

This will bring up all of the controller services. This can take up to 30 minutes for all pods to be ready.

Confirm that all pods are in a running state using kubectl.

kubectl get pods -A --kubeconfig <kube config file>

Accessing the Web Console

Try accessing the self hosted controller https://console.<rafay.example.com> to verify that the installation was successful.

  • A screen appears similar to the image below when accessing the UI

AKS

  • Click the Sign Up link to create the first Organization of the self hosted controller

  • Register a new account for the organization as below screenshot

AKS

  • Try to login to this Organization with the newly registered account on the login screen

Upload Cluster Dependencies

Run the below command to enable support for Kubernetes cluster provisioning from the self hosted controller and upload dependencies for Kubernetes cluster provisioning to the controller.

sudo ./radm cluster --config config.yaml --kubeconfig <aks cluster config file>

Example:

sudo ./radm cluster --config config.yaml --kubeconfig aks-config.yaml

Cluster Provisioning

Setup Private CA Certificates

Copy the domain.crt file to /etc/docker/certs.d/ops-console.<company.example.com>/ca.crt on every cluster node.

Example

sudo mkdir -p /etc/docker/certs.d/ops-console.<company.example.com>

Execute the following command on the controller node.

kubectl get secret -n istio-system selfsigned-cert-tls-ops-console -o 'go-template={{index .data "ca.crt"}}' | base64 -d

Create the /etc/docker/certs.d/ops-console.<company.example.com>/ca.crt file on every cluster node and copy the above kubectl output and paste it in to the ca.crt file. Restarting Docker is not required.

Creating Import Cluster

To create an import cluster, follow the steps in the Quickstart Guide.