実は、私は主にnodejsでkubernetesサービスアカウントを使っていて、これはうまくいきますが、goサービスで作ったものもありますが、サービス アカウントで動作させることができないようです (ポッドでテストしたため、サービス アカウントが正しく構成されていることがわかります)。
私はこのライブラリを使用していますhttps://www.php.cn/link/2ce2b048fbba1c28933b3b167650dc3d
これまでにこれを試してみました:
リーリーそしてこれ (念のため):
リーリー最初のケースでは、次のエラーが発生します:
リーリー2 番目のケースでは、一般的なアクセス許可エラーが発生しました。
ドキュメントを読み、さらにいくつかのこと (ここでは関係ないかもしれません) を試しましたが、おそらく golang の経験があまりないため、うまく機能することがわかりません。
ここでは、Go サービスを Kubernetes 上のサービス アカウントで動作させるいくつかの方法を試してみましょう:
Go サービスが Kubernetes サービス アカウントを使用するように正しく構成されていることを確認します。これは、サービス アカウントがポッド定義でボリュームとして正しくマウントされていること、およびサービスがボリュームから資格情報を読み取ることができることを確認することで実行できます。
使用している AWS SDK for Go (https://github.com /aws/aws-sdk-go) が正しい認証情報を使用するように設定されていることを確認してください。 SDK は、環境変数、共有認証情報ファイル、IAM ロールなど、認証情報を提供する複数の方法をサポートしています。
Go 用 AWS SDK
の代わりに k8s.io/client-go
ライブラリを使用してみてください。これにより、Kubernetes サービス アカウントを使用して Kubernetes API で認証し、開発キットには AWS 認証情報が必要です。
Kubernetes サービス アカウントを使用して AWS などの外部サービスへの認証を行う場合は、サービス アカウントが必要なリソースにアクセスできるように IAM ロールを構成する必要がある場合もあります。
Go サービスが Kubernetes サービス アカウント トークンを正しく使用し、それを認証トークンとして AWS SDK に渡していることを再確認します。
k8s.io/client-go
ライブラリを使用してシークレットを取得し、go コードで使用してみることもできます。
以上がGolang で Kubernetes サービス アカウントを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。