Bagaimana cara menggunakan akaun perkhidmatan kubernetes di golang?

WBOY
Lepaskan: 2024-02-08 20:57:16
ke hadapan
1110 orang telah melayarinya

如何在 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})
Salin selepas log masuk

Dan ini (untuk berjaga-jaga):

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

  svc := s3.new(sess)
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!