client-go needs to know about:
(If you're using GKE, you can see these info in $HOME/.kube/config
, populated by gcloud container clusters get-credentials
command).
I recommend you to either:
Once you can create a *rest.Config
object in client-go, client-go will use the auth plugin that's specified in the kubeconfig file (or its in-memory equivalent you constructed). In gcp
auth plugin, it knows how to retrieve a token.
Then, Create a Cloud IAM Service Account and give it "Container Developer" role. Download its key.
Now, you have two options:
gcloud auth activate-service-account --key-file=key.json
KUBECONFIG=a.yaml gcloud container clusters get-credentials clusterA
KUBECONFIG=b.yaml gcloud container clusters get-credentials clusterB
Then create 2 different *rest.Client
objects, one created from a.yaml
, another from b.yaml
in your program.
Now your program will rely on gcloud
binary to retrieve token every time your token expires (every 1 hour).
*rest.Config
objects for cluster A & B.Hope this helps.
P.S. do not forget to import _ "k8s.io/client-go/plugin/pkg/client/auth/gcp"
in your Go program. This loads the gcp auth plugin!