Skip to content

No More SSH: Control Plane Overrides for Rafay MKS Clusters

Customizing a Kubernetes control plane has always been an uncomfortable exercise. You SSH into a master node, carefully edit a static pod manifest, and then hope nothing breaks. With our latest release, we are replacing that workflow entirely. Control Plane Overrides give you a safe, declarative way to customize the API Server, Controller Manager, and Scheduler for MKS (Managed Kubernetes Service) clusters — Rafay's upstream Kubernetes offering for bare metal and VMs — directly from the Rafay Console or cluster specification.


The Problem: The "SSH and Pray" Workflow

If you run upstream Kubernetes, customizing your control plane typically means SSHing into master nodes and hand-editing static pod manifests under /etc/kubernetes/manifests/. That approach has several well-known failure modes:

  • Fragile — a single YAML formatting error can crash your API server and take down the cluster.
  • Inconsistent — manual changes applied node by node lead to configuration drift, where different master nodes end up with different settings.
  • Irreversible — there is no rollback button. A bad edit stays broken until someone fixes it manually, often under pressure.
  • Not auditable — there is no record of who changed what, when, or why.

For teams operating multiple clusters or enforcing compliance policies, this is not a sustainable model.


The Solution: Safe, Declarative Customization

Control Plane Overrides: Before vs. After

Rafay now eliminates the need to touch static manifests. For MKS clusters, you define your desired state in the Rafay Console or cluster spec, and the platform applies those changes consistently across every control plane node — with no SSH required.

Overrides apply uniformly across all control plane nodes. If you have a three-node control plane, the same configuration reaches every API server, every controller manager, and every scheduler instance.

Built-in Safety Net: Automatic Rollback

Made a mistake? Rafay has you covered. If an applied override causes a control plane component to fail, the platform automatically detects the failure and reverts to the last known good configuration — bringing your control plane back to a healthy state without any manual intervention. No war room. No midnight SSH session. No cluster stuck in a broken state. You fix the config and try again.


What You Can Customize

For each of the three control plane components — Kube API Server, Kube Controller Manager, and Kube Scheduler — you can now configure:

Section Description
Extra Args Key-value pairs for command-line flags (e.g., profiling: "false", v: "4")
Extra Volumes Additional volumes such as emptyDir or hostPath
Extra Volume Mounts Mount paths for those volumes inside the control plane containers

The full static pod manifest is not exposed. Only these specific sections are configurable, which keeps the surface area for misconfiguration small and the cluster stable.

Control Plane Overrides — three-tab editor in the Rafay Console


Use Cases

Security hardening. Disable profiling across all control plane components or enforce specific TLS cipher suites for compliance requirements. A single extraArgs entry applies the change across every master node via the API.

Feature gates. Enable or disable Kubernetes feature gates without rebuilding the cluster. This works both at cluster creation (Day 0) and after the cluster is already running (Day 2).

Audit logging. Mount a dedicated volume for audit log output and configure the API server to write to it — no host-level access needed.

Admission plugins. Extend or modify the list of admission plugins, including security admission controllers like PodSecurity.


Implementation

Cluster Specification

Overrides are defined under controlPlaneOverrides in the cluster spec and are fully version-controllable alongside the rest of your infrastructure configuration:

controlPlaneOverrides:
  kubeApiserver:
    extraArgs:
      profiling: "false"
      v: "4"
    extraVolumes: |
      - name: safe-dir
        emptyDir: {}
    extraVolumeMounts: |
      - name: safe-dir
        mountPath: /tmp/safe-apiserver
        readOnly: false
  kubeControllerManager:
    extraArgs:
      profiling: "false"
      v: "2"
  kubeScheduler:
    extraArgs:
      profiling: "false"
      v: "2"

Only the fields you need to customize must be provided. Existing defaults are preserved unless explicitly overridden.

A Note on Comma-Separated Arguments

Some arguments — such as enable-admission-plugins, feature-gates, and tls-cipher-suites — accept comma-separated values. When overriding these, you must supply the complete value, including any existing entries you want to keep. Providing only the new value replaces the entire list, which can break cluster functionality if required entries are dropped.

Day 2 Operations

Control Plane Overrides are fully supported after cluster provisioning. Navigate to Clusters → Select Cluster → Configuration → Control Plane Overrides → Edit to update settings on a running cluster.

Verifying Applied Configuration

Once overrides are applied, you can confirm the result without SSH. Navigate to Clusters → Select Cluster → Nodes → Node Actions → View Control Plane Config to see a read-only view of the live manifests for each control plane node.


Summary

Control Plane Overrides bring the same API-driven model you already use for workloads to the Kubernetes infrastructure itself. No more manual edits, no more configuration drift, and full auditability — from Day 0 through the life of the cluster. And if something goes wrong, automatic rollback ensures your cluster never stays in a broken state.

  • Read the Docs


    Full reference for Control Plane Overrides, including all configurable fields and cluster spec examples.

    View Documentation