Maison> développement back-end> Golang> le corps du texte

Comment utiliser le compte de service Kubernetes dans Golang ?

WBOY
Libérer: 2024-02-08 20:57:16
avant
1085 Les gens l'ont consulté

如何在 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 //m.sbmmt.com/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})
Copier après la connexion

Et ça (au cas où) :

region := os.getenv("amazon_region") sess := session.must(session.newsession(&aws.config{region: ®ion})) svc := s3.new(sess)
Copier après la connexion

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
Copier après la connexion

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'utiliserk8s.io/client-go库代替AWS SDKpour 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èquek8s.io/client-gopour 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!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!