Merging Multiple kubeconfig Files into One: A Comprehensive Guide

Hakan Bayraktar
2 min readNov 6, 2023

Introduction

When you’re tasked with managing multiple Kubernetes clusters, juggling numerous kubeconfig files can be quite challenging. By default, kubectl looks for a file named config in the $HOME/.kube directory.But what’s the most efficient way to consolidate these multiple kubeconfig files into a single, more manageable configuration? In this step-by-step guide, I will take you through the entire process.

Step 1: Creating a Back Up Your kubeconfig File

Before you begin, it’s a good practice to create a backup of your existing kubeconfig file to ensure you can revert in case of any issues. You can do this with the following command:

cp ~/.kube/config ~/.kube/config-bck

Step 2: Setting the KUBECONFIG Environment Variable

The KUBECONFIG environment variable is a list of paths to configuration files, such as "/path/cluster1:/path/cluster2". Setting this variable allows you to merge multiple kubeconfig files. You can set it using the following command:

export KUBECONFIG=~/.kube/config:/path/cluster1:/path/cluster2

Step 3: Merging All kubeconfig Files

Now, merge all your kubeconfig files into one unified file using the following command:

kubectl config view --flatten > one-config.yaml

Step 4: Replacing the Old Configuration File

To start using your newly merged kubeconfig file, replace the old one with it:

mv one-config.yaml ~/.kube/config

Step 5: Verification and Validation

To ensure that everything is functioning as expected, display all the clusters defined in the kubeconfig using the following command:

kubectl config get-clusters

For more in-depth information, you can refer to the relevant section of the Kubernetes documentation. This resource caters to anyone interested in gaining extensive knowledge in Kubernetes cluster management.

--

--