Maison  >  Article  >  développement back-end  >  Comment utiliser le compte de service Kubernetes dans Golang ?

Comment utiliser le compte de service Kubernetes dans Golang ?

WBOY
WBOYavant
2024-02-08 20:57:161098parcourir

如何在 golang 中使用 kubernetes 服务帐户?

Contenu de la question

En fait, j'utilise principalement le compte de service Kubernetes avec nodejs et cela fonctionne bien mais j'ai un service créé en go et je n'arrive pas à le faire fonctionner avec le compte de service (je connais le service le compte est configuré correctement car je l'ai testé avec le pod).

J'utilise cette bibliothèque https://www.php.cn/link/2ce2b048fbba1c28933b3b167650dc3d

Jusqu'à présent, j'ai essayé ceci :

  sess := session.must(session.newsession())

  creds := stscreds.newcredentials(sess, os.getenv("aws_role_arn"))

  svc := s3.new(sess, &aws.config{credentials: creds})

Et ça (au cas où) :

  region := os.getenv("amazon_region")
  sess := session.must(session.newsession(&aws.config{region: &region}))

  svc := s3.new(sess)

Pour le premier cas, j'obtiens l'erreur suivante :

AccessDenied: User: arn:aws:sts::xxxxxxxx:assumed-role/staging-worker-node/i-0xxxxxxxxx is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::xxxxxxxx:role/EKSServiceAccount-app

Pour le deuxième cas, j'ai eu une erreur d'autorisations générales.

J'ai lu la documentation et essayé quelques autres choses (qui ne sont peut-être pas pertinentes ici) mais je n'arrive pas à le faire fonctionner, peut-être parce que je n'ai pas beaucoup d'expérience avec Golang.


Bonne réponse


Voici quelques façons d'essayer de faire fonctionner votre service Go avec un compte de service sur Kubernetes :

Vérifiez que votre service Go est correctement configuré pour utiliser le compte de service Kubernetes. Cela peut être fait en vérifiant que le compte de service est correctement monté en tant que volume dans la définition du pod et que le service est capable de lire les informations d'identification du volume.

Assurez-vous que le kit AWS SDK for Go (https://github.com/aws/aws-sdk-go) que vous utilisez est configuré pour utiliser les informations d'identification correctes. Le SDK prend en charge plusieurs méthodes de fourniture d'informations d'identification, notamment les variables d'environnement, les fichiers d'informations d'identification partagés et les rôles IAM.

Vous pouvez essayer d'utiliser k8s.io/client-go 库代替 AWS SDK pour Go, qui vous aidera à vous authentifier auprès de l'API Kubernetes à l'aide d'un compte de service Kubernetes et à obtenir les informations d'identification requises pour le SDK AWS.

Si vous utilisez un compte de service Kubernetes pour vous authentifier auprès d'un service externe tel qu'AWS, vous devrez peut-être également configurer un rôle IAM pour permettre au compte de service d'accéder aux ressources nécessaires.

Vérifiez que votre service Go utilise correctement le jeton de compte de service Kubernetes et le transmet comme jeton d'authentification au SDK AWS.

Vous pouvez également essayer d'utiliser la bibliothèque k8s.io/client-go pour obtenir le secret et l'utiliser dans votre code go.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer