I general for authenticating with kubernetes clusters from client-go I see that I have two options:
So it is easy to access clusterA from clusterA but not clusterB from clusterA.
What are my options here? It seems that I just cannot pass GOOGLE_APPLICATION_CREDENTIALS
and hope that client-go will take care of itself.
So my thinking:
gcloud container clusters get-credentials clusterA
and gcloud container clusters get-credentials clusterB
BuildConfigFromFlags
on clusterAIs this the correct approach, or is there a simpler way? I see that tokens have an expiration date?
Update:
It seems I can also use CLOUDSDK_CONTAINER_USE_CLIENT_CERTIFICATE=True gcloud beta container clusters get-credentials clusterB --zone
. Which would add certificates to kube conf which I could use. But AFAIK those certificates cannot be revoked
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!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With