外部机密无法从私有集群访问 AWS STS
Posted
技术标签:
【中文标题】外部机密无法从私有集群访问 AWS STS【英文标题】:External-secrets not able to access the AWS STS from a private cluster 【发布时间】:2021-12-29 21:12:18 【问题描述】:从最近几天开始,我一直在想办法从我的私有 EKS 集群中使用 FARGATE 读取来自 AWS 秘密管理器的秘密。
为此,我尝试使用开源工具 https://github.com/external-secrets/external-secrets 但我无法让它与私有集群一起工作。
当我连接到互联网时,我可以通过运行上述链接的源代码来读取本地密码。但是当我将 pod 部署到 AWS 私有集群时,它总是会出现超时错误,如下面的代码 sn-ps 所示。
vel":"error","ts":1637220916.9525745,"logger":"controllers.ExternalSecret","msg":"could not reconcile ExternalSecret. Please check!!!","ExternalSecret":"commons/example","SecretStore":"commons/secretstore-sample","error":"could not get secret data from provider: key \"myTestSecret/random\" from ExternalSecret \"example\": WebIdentityErr: failed to retrieve credentials\ncaused by: RequestError: send request failed\ncaused by: Post \"https://sts.amazonaws.com/\": dial tcp 209.54.180.124:443: i/o timeout","stacktrace":"sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler\n\t/home/cloudberry/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.9.3/pkg/internal/controller/controller.go:298\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\t/home/cloudberry/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.9.3/pkg/internal/controller/controller.go:253\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2.2\n\t/home/cloudberry/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.9.3/pkg/internal/controller/controller.go:214"
我一直在努力让它工作,我还尝试通过更改代码中的 URL 来更改源代码,因为我发现它在一个地方进行了硬编码,但错误仍然没有消失。
任何关于如何使外部机密在私有集群中工作的提示都会非常有帮助。
提前致谢。
【问题讨论】:
您是否已经创建了具有访问外部机密的机密管理器策略的角色?您是否按照步骤为 external-secrets pod 提供了该角色? docs.aws.amazon.com/eks/latest/userguide/… 我已尝试创建服务帐户,但只有在这种方法中我才收到此错误。还尝试了 env 变量方法,但仍然没有运气。 【参考方案1】:经过这么多天后,我终于设法通过在 Java 中创建自定义代码来解决问题。
我做了什么?
在 AWS 中创建了可以访问 Secret Manager 的 IAM 配置文件和角色。
在 K8 中创建了一个服务帐户,我的 Pod 可以使用该服务帐户访问 secret-manager。服务帐户可以保存 IAM 角色详细信息(在第 1 步中创建)。
使用 AWS 开发工具包和示例代码从密钥管理器获取密钥。
使用以下 gradle 依赖项创建 K8 机密:
实现'io.fabric8:kubernetes-client:5.10.1'
第 3 步的 Git 代码库 Git 参考是:https://github.com/fabric8io/kubernetes-client/blob/master/doc/CHEATSHEET.md
【讨论】:
以上是关于外部机密无法从私有集群访问 AWS STS的主要内容,如果未能解决你的问题,请参考以下文章