Rumah >pembangunan bahagian belakang >Golang >Bagaimana cara menggunakan akaun perkhidmatan kubernetes di golang?

Bagaimana cara menggunakan akaun perkhidmatan kubernetes di golang?

WBOY
WBOYke hadapan
2024-02-08 20:57:161173semak imbas

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

Kandungan soalan

Sebenarnya saya menggunakan akaun perkhidmatan kubernetes dengan nodejs dan ini berfungsi dengan baik tetapi saya mempunyai perkhidmatan yang dibuat dalam go dan saya nampaknya tidak dapat membuatnya berfungsi dengan akaun perkhidmatan (saya tahu perkhidmatan itu akaun dikonfigurasikan dengan betul kerana saya mengujinya dengan pod).

Saya menggunakan perpustakaan ini https://www.php.cn/link/2ce2b048fbba1c28933b3b167650dc3d

Setakat ini saya telah mencuba ini:

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

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

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

Dan ini (untuk berjaga-jaga):

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

  svc := s3.new(sess)

Untuk kes pertama saya mendapat ralat berikut:

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

Untuk kes kedua, saya mendapat ralat kebenaran umum.

Saya membaca dokumen dan mencuba beberapa perkara lagi (yang mungkin tidak relevan di sini) tetapi saya tidak dapat melihatnya untuk berfungsi, mungkin kerana saya tidak mempunyai banyak pengalaman dengan golang.


Jawapan betul


Berikut ialah beberapa cara anda boleh cuba untuk membolehkan perkhidmatan Go anda berfungsi dengan akaun perkhidmatan di Kubernetes:

Sahkan bahawa perkhidmatan Go anda dikonfigurasikan dengan betul untuk menggunakan akaun perkhidmatan Kubernetes. Ini boleh dilakukan dengan menyemak bahawa akaun perkhidmatan dipasang dengan betul sebagai volum dalam definisi Pod dan perkhidmatan itu dapat membaca bukti kelayakan daripada volum.

Pastikan AWS SDK for Go (https://github.com/aws/aws-sdk-go) yang anda gunakan dikonfigurasikan untuk menggunakan bukti kelayakan yang betul. SDK menyokong pelbagai kaedah untuk menyediakan bukti kelayakan, termasuk pembolehubah persekitaran, fail bukti kelayakan dikongsi dan peranan IAM.

Anda boleh cuba menggunakan k8s.io/client-go 库代替 AWS SDK untuk Go, yang akan membantu anda mengesahkan dengan API Kubernetes menggunakan akaun perkhidmatan Kubernetes dan mendapatkan bukti kelayakan yang diperlukan untuk SDK AWS.

Jika anda menggunakan akaun perkhidmatan Kubernetes untuk mengesahkan perkhidmatan luaran seperti AWS, anda juga mungkin perlu mengkonfigurasi peranan IAM untuk membenarkan akaun perkhidmatan mengakses sumber yang diperlukan.

Semak sekali lagi sama ada perkhidmatan Go anda menggunakan token akaun perkhidmatan Kubernetes dengan betul dan menghantarnya sebagai token pengesahan kepada AWS SDK.

Anda juga boleh mencuba menggunakan perpustakaan k8s.io/client-go untuk mendapatkan rahsia dan menggunakannya dalam kod go anda.

Atas ialah kandungan terperinci Bagaimana cara menggunakan akaun perkhidmatan kubernetes di golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam