2

I followed Kubernetes documentation to access clusters using client-go: https://kubernetes.io/docs/tasks/administer-cluster/access-cluster-api/#accessing-the-api-from-within-a-pod

Now, in my case, in my kubeconfig, I've more than a single cluster. Their context names are cluster-1 and cluster-2 and cluster-1 is the default cluster.

package main

import (
  "context"
  "fmt"
  "k8s.io/apimachinery/pkg/apis/meta/v1"
  "k8s.io/client-go/kubernetes"
  "k8s.io/client-go/tools/clientcmd"
)

func main() {
  // uses the current context in kubeconfig
  // path-to-kubeconfig -- for example, /root/.kube/config
  config, _ := clientcmd.BuildConfigFromFlags("", "<path-to-kubeconfig>")
  // creates the clientset
  clientset, _ := kubernetes.NewForConfig(config)
  // access the API to list pods
  pods, _ := clientset.CoreV1().Pods("").List(context.TODO(), v1.ListOptions{})
  fmt.Printf("There are %d pods in the cluster\n", len(pods.Items))
}

The above code will by default use the current context.

I want to be able to pass either cluster-1 or cluster-2 as the context depending on my needs.

How can I do that?

pep8
  • 371
  • 3
  • 18

0 Answers0