如何在 golang 中使用 kubernetes 服務帳號?

WBOY
發布: 2024-02-08 20:57:16
轉載
1065 人瀏覽過

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

問題內容

實際上,我主要將kubernetes 服務帳戶與nodejs 一起使用,這工作得很好,但我有一個用go 製作的服務,但我似乎無法使其與服務帳戶一起使用(我知道服務帳戶是正確的)配置是因為我用pod 測試了它)。

我正在使用這個函式庫 //m.sbmmt.com/link/2ce2b048fbba1c28933b3b167650dc3d

#到目前為止我嘗試過這個:

sess := session.must(session.newsession()) creds := stscreds.newcredentials(sess, os.getenv("aws_role_arn")) svc := s3.new(sess, &aws.config{credentials: creds})
登入後複製

還有這個(以防萬一):

region := os.getenv("amazon_region") sess := session.must(session.newsession(&aws.config{region: ®ion})) svc := s3.new(sess)
登入後複製

對於第一種情況,我收到以下錯誤:

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
登入後複製

對於第二種情況,我遇到了一般權限錯誤。

我閱讀了文件並嘗試了更多的東西(這可能與這裡無關),但我看不到讓它工作,也許是因為我對 golang 沒有太多經驗。


正確答案


您可以嘗試透過以下幾種方式讓 Go 服務與 Kubernetes 上的服務帳戶搭配使用:

驗證您的 Go 服務是否已正確設定為使用 Kubernetes 服務帳戶。這可以透過檢查服務帳戶是否正確安裝為 Pod 定義中的磁碟區以及服務是否能夠從該磁碟區讀取憑證來完成。

確保您使用的 AWS SDK for Go (https://github.com /aws/aws-sdk-go) 配置為使用正確的憑證。 SDK 支援多種提供憑證的方法,包括環境變數、共用憑證檔案和 IAM 角色。

您可以嘗試使用k8s.io/client-go庫代替AWS SDKfor Go,這將幫助您使用Kubernetes 服務帳戶透過Kubernetes API 進行驗證並取得AWS開發工具包所需的憑證。

如果您使用 Kubernetes 服務帳戶向 AWS 等外部服務進行驗證,您可能還需要設定 IAM 角色,以允許服務帳戶存取必要的資源。

仔細檢查您的 Go 服務是否正確使用 Kubernetes 服務帳戶令牌並將其作為身分驗證令牌傳遞給 AWS 開發工具包。

您也可以嘗試使用k8s.io/client-go函式庫來取得秘密並在您的 go 程式碼中使用它。

以上是如何在 golang 中使用 kubernetes 服務帳號?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:stackoverflow.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!