Skip to content

Installation

Introduction

Installing and configuring the Controller using Helm involves a series of steps to ensure proper deployment within a Kubernetes environment. This procedure includes updating the values.yaml file with crucial parameters such as domain names, high availability settings, and API configurations.

This procedure helps users deploy the Controller efficiently on any environment running Kubernetes, including EKS, GKE, or Kubernetes clusters running on virtual machines (VMs) or bare metal. It provides detailed instructions for customizing deployment settings, managing Helm charts, and ensuring that the Controller is correctly configured for the user's infrastructure. Users can simplify the deployment, setup, upgrade, or uninstallation process of the Controller as needed.

  • Supported platforms include EKS, GKE, and any Kubernetes clusters running in VMs or on bare metal.

Important

Currently, the Helm-based method to deploy the Rafay controller only supports deploying PostgreSQL locally on the cluster and does not support external databases like RDS. Additionally, it does not support custom registries (ECR/JFrog) that have authentication enabled.


Prerequisites

  • Ensure that kubectl and Helm 3 are installed
  • Access to the kubeconfig file of the target Kubernetes cluster, with the ability to interact with the cluster using kubectl commands
  • Ensure the tar extraction utility is installed on the system
  • A Kubernetes cluster with nodes having 32 vCPUs, 64 GB memory, and 500 GB root storage
  • Wildcard DNS records created in the respective domain, including various wildcard entries: Refer to DNS Record Creation for more information
  • Availability of a default labeled StorageClass is required. If no StorageClass is available in the cluster, one can be installed using any storage engine (e.g., OpenEBS)
  • Run the following commands on the node where the Rafay Controller will be installed:
    • sudo iptables -F
    • sudo sysctl fs.inotify.max_user_instances=8192

Installation

These instructions are distribution-agnostic. Modify as needed based on your infrastructure provider and Kubernetes distribution. Contact support if you require assistance.

  1. Contact the support team to obtain the latest version of the Rafay Controller helm package, along with the cluster images and assets required for cluster lifecycle management (LCM) using the Rafay Controller.

  2. Extract the package using the following command:

    tar -xvf rafay-helm-controller-<version>.tar.gz
    

    The extracted package contains the following artifacts:

    Artifact Purpose
    rafaycore-<version>.tgz Application charts
    rafay-dep-<version>.tgz Dependency charts
    namespaces.yaml Pre-created namespaces
    values.yaml Global install configuration
    eks-values.yaml Global install configuration for AWS EKS
    gke-values.yaml Global install configuration for GCP GKE
  3. Once extracted, update the Configuration Required and modify the values.yaml file.

  4. Apply the pre-created namespaces:

    kubectl apply -f namespaces.yaml
    
  5. Install the Controller dependencies:

    Important

    Make sure to configure the values file with the necessary parameters before moving to further installation steps.

    helm install rafay-dep -n rafay-core -f values.yaml ./rafay-dep-<version>.tgz --timeout 15m --server-side=false
    

    Important

    Wait for all dependency pods — especially postgres-admin — to reach the Running state:

    kubectl get pod -A
    

    Once all pods are running, wait an additional 5 minutes for the pods to settle and for operators to finish their tasks, then proceed to Step 6.

  6. To install the Controller, run:

    helm install rafay-core -n rafay-core -f values.yaml ./rafaycore-<version>.tgz --timeout 15m --server-side=false
    

    Important

    Wait for all pods to be in the Running state:

    kubectl get pod -A
    

    Once all pods are running, proceed to Step 7.

    Optional: Load Balancer (LB) External IP

    Run the following command to retrieve the Load Balancer (LB) External IP associated with the cluster:

    kubectl get svc -n istio-system istio-ingressgateway
    

    Map the Load Balancer IP to your wildcard domain's A record (e.g., in Route 53 or Cloud DNS). For detailed instructions on creating and updating DNS records, refer to the DNS Record Reference.

  7. Access the Console in the web browser:

    https://console.<default_partner_console_domain>
    

Uninstall

Follow the steps below for a successful uninstallation. Wait for all pods in the "Terminating" state to exit before running the next command:

helm uninstall rafay-core -n rafay-core
helm uninstall rafay-dep

Note: Ensure that Elastic CRDs are deleted if present.


Upgrade

Use the following commands to upgrade the respective Helm charts:

helm upgrade rafay-dep -f values.yaml ./rafay-dep-<version>.tgz
helm upgrade rafay-core -n rafay-core -f values.yaml ./rafaycore-<version>.tgz