Philip Miglinci  Philip Miglinci   kubernetes

Access multiple clusters via kubectl

Multiple config files in ~/.kube

The official kubernetes documentation already provides a good documentation on configuring access to multiple clusters.

After following their guide, I could list multiple cluster configurations:

$ kubectl config get-contexts
CURRENT   NAME                                    CLUSTER                AUTHINFO           NAMESPACE
          kind-kind                               kind-kind              kind-kind         
*         kubernetes-admin@kubernetes-nextlayer   kubernetes-nextlayer   kubernetes-admin  
          kubernetes-admin@kubernetes-office      kubernetes-office      kubernetes-admin

I already named them differently to make sure they all show up. Every time I tried to get the nodes I received following error:

$ kubectl get nodes
error: You must be logged in to the server (Unauthorized)

Can I access multiple clusters with the same AUTHINFO?

The short answer is: No

kubectl uses first matching credentials that match your configured AUTHINFO kubernetes-admin in all your configs. Authinfos are not internally namespaced by cluster name. So I always received the error above. (Unauthorized) I needed to also rename the AUTHINFO.

$ kubectl config get-contexts
CURRENT   NAME                                    CLUSTER                AUTHINFO                     NAMESPACE
          kind-kind                               kind-kind              kind-kind                   
*         kubernetes-admin@kubernetes-nextlayer   kubernetes-nextlayer   kubernetes-admin-nextlayer  
          kubernetes-admin@kubernetes-office      kubernetes-office      kubernetes-admin-office 

As soon as each cluster had a unique AUTHINFO everything worked like a charm.


If you have any questions, just hit me up on Twitter:

Todays #kubernetes learning: AUTHINFOS for different kubernetes contexts are not namespaced - so you need to name them differently:

@pmigat/status/1321918769543995393

— Philip Miglinci (@pmigat)