Nous avons deux clusters, nommés :
- MyCluster (créé par moi)
- OtherCluster (non créé par moi)
Où "me" est mon propre utilisateur AWS IAM.
Je peux gérer le cluster que j'ai créé, en utilisant kubectl :
>>> aws eks update-kubeconfig --name MyCluster –profile MyUser
>>> kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 172.20.0.1 <none> 443/TCP 59d
Mais je ne peux pas gérer le cluster "OtherCluster" (que je n'ai pas créé) :
>>> aws eks update-kubeconfig --name OtherCluster --profile MyUser
>>> kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
error: the server doesn't have a resource type "svc"
Après avoir lu les commentaires de certaines personnes ayant rencontré le même problème dans cette problème github J'ai essayé de le faire dans le contexte de l'utilisateur qui a créé l'"OtherCluster" à l'origine.
Pour ce faire, j'ai édité "~/.kube/config" et ajouté une valeur "AWS_PROFILE" dans "users.user.env". Le profil représente l'utilisateur qui a créé le cluster.
~/.kube/config :
…
users
- name: OtherCluster
user:
exec:
apiVersion: client.authentication.k8s.io/v1alpha1
args:
- token
- -i
- OtherCluster
command: aws-iam-authenticator
env:
- name: AWS_PROFILE
value: OTHER_USER_PROFILE
…
Cela a fonctionné :
# ~/.kube/config is currently pointing to OtherCluster
>>> kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 172.20.0.1 <none> 443/TCP 1d
Il n'est évidemment pas idéal pour moi d'usurper l'identité d'une autre personne lorsque je gère le cluster. Je préférerais accorder à mon propre utilisateur l'accès à la gestion du cluster via kubectl. Existe-t-il un moyen d'accorder l'autorisation de gérer le cluster à un utilisateur autre que le créateur original ? Cela me semble trop restrictif