Skip to content

Overview

This system template enables the deployment of a virtual cluster (vCluster) on a host Kubernetes cluster, providing a lightweight, isolated environment for multi-tenant workloads or use cases requiring Kubernetes-level abstraction.

The template provisions a vCluster within a custom namespace, complete with preconfigured resource quotas to ensure controlled and efficient resource allocation. The vCluster operates independently within the host Kubernetes cluster, offering logical isolation while utilizing shared infrastructure.

As part of the output, users receive a kubeconfig file with the necessary privileges, enabling secure access to the vCluster.

For detailed steps to get started, refer to the vCluster System Template Get Started Guide.

Initial Setup

The platform team is responsible for performing the initial configuration and setup of the vCluster template. The sequence diagram below outlines the high-level steps. In this process, the platform team will configure and share the template from the system catalog to the project they manage and then share the template downstream with the end user.

sequenceDiagram
    participant Admin as Platform Admin
    participant Catalog as System Catalog
    participant Project as End User Project

    Admin->>Catalog: Selects vCluster Template from System Catalog
    Admin->>Project: Shares Template with Predefined Controls
    Project-->>Admin: Template Available in End User's Project

End User Flow

The end user launches a shared template, provides required input values, and deploys the virtual cluster.

sequenceDiagram
    participant User as End User
    participant Project as Rafay Project
    participant Cluster as Host Kubernetes Cluster

    User->>Project: Launches Shared Template for vCluster
    User->>Project: Provides Required Input Values (API Key, Namespace, Blueprint, Agent)
    User->>Project: Clicks "Deploy"
    Project->>Cluster: Provisions a vCluster within a Custom Namespace
    Cluster-->>User: vCluster Deployed Successfully
    Cluster-->>User: Provides Kubeconfig File as Output

The templates are designed to support both:

  • Day 0 operations: Initial setup
  • Day 2 operations: Ongoing management

Resources

A virtual Kubernetes cluster running inside the custom namespace, operating independently while sharing the host cluster infrastructure

Pre-Requisites

  • Host Cluster: Ensure that a Kubernetes host cluster is available and ready for vCluster deployment
  • Rafay Configuration: At template launch, supply the following configuration values
    • API Key
    • REST Endpoint
  • Agent Configuration: A configured agent must be available in the project where the template will be used, and it should be in a healthy state. Follow these instructions to deploy a new agent. Existing agents within the project can be reused if available

Tenant Isolation

To ensure complete isolation for vClusters within a Kubernetes environment, several Kubernetes features and best practices can be leveraged:

  • Namespace Isolation: Each vCluster operates within its own namespace, providing a level of separation from other namespaces. This is achieved using standard Kubernetes namespace isolation, ensuring that resources are scoped to the specific vCluster.

  • Network Policy: A network policy can be implemented to isolate the vCluster namespace from other namespaces, controlling the flow of network traffic between them. This ensures that only authorized traffic can reach the vCluster, further enhancing security.

  • Kata Runtime Class: The Kata runtime class can be used to force the vCluster and its deployed pods to run in a dedicated runtime class, providing an additional layer of isolation by using lightweight virtual machines (VMs) instead of traditional containers.

  • OPA Gatekeeper for Admission Control: Open Policy Agent (OPA) Gatekeeper can be used to enforce policies for the vCluster during the admission process, ensuring compliance and preventing the deployment of unauthorized configurations.


Configuration

At template launch, provide the required configuration values as exposed by the Platform Admin. This may include:

  • Credentials:

    • API_KEY: Rafay controller API key
  • vCluster Configuration:

    • vCluster Name: Specify the name of the virtual cluster
    • Host Cluster Name: Select the host Kubernetes cluster for the vCluster
    • Namespace: Provide the namespace where the vCluster will be deployed

After entering the required information, click Deploy to initiate the vCluster provisioning.


Input Variables for vCluster System Template

General Configuration

Name Value Type Description
Distribution Text Kubernetes distribution used for the vCluster
Blueprint Text Name of the blueprint applied to the vCluster
Blueprint Version Text Version of the blueprint applied to the vCluster
Host Cluster Name Text Name of the host Kubernetes cluster where the vCluster runs
Host Project Text Project where the host cluster resides
Namespace Text Namespace where the vCluster is deployed
Project Text Project where the vCluster is managed
vCluster Name Text Name of the virtual cluster
vCluster Store Size Text Storage size allocated for the vCluster
vCluster Version Text Version of the vCluster distribution
Username Text Username used for accessing the vCluster

Namespace Configuration

Name Value Type Description
Namespace Annotations JSON Annotations applied to the vCluster namespace
Namespace Labels JSON Labels applied to the vCluster namespace
Namespace Quotas JSON Resource quotas applied to the vCluster namespace
Namespace Quota Size Text Predefined quota size for the vCluster namespace

Access Configuration

Name Value Type Description
Allowed Namespaces JSON List of namespaces the vCluster can access
Enable Network Policy Text Enables or disables network policies for the vCluster
Enable Kata Runtime Text Enables or disables Kata Containers runtime in the vCluster
Enable Kube Config Text Enables or disables generation of the kubeconfig
Tolerations JSON Tolerations applied to the vCluster pods

Launch Time

The estimated time to launch an vCluster using this template is approximately 4 minutes.