【问题标题】:External-secrets not able to access the AWS STS from a private cluster外部机密无法从私有集群访问 AWS STS
【发布时间】: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 变量方法,但仍然没有运气。

标签: amazon-web-services kubernetes aws-secrets-manager


【解决方案1】:

经过这么多天后,我终于设法通过在 Java 中创建自定义代码来解决问题。

我做了什么?

  1. 在 AWS 中创建了可以访问 Secret Manager 的 IAM 配置文件和角色。

  2. 在 K8 中创建了一个服务帐户,我的 Pod 可以使用该服务帐户访问 secret-manager。服务帐户可以保存 IAM 角色详细信息(在第 1 步中创建)。

  3. 使用 AWS 开发工具包和示例代码从密钥管理器获取密钥。

  4. 使用以下 gradle 依赖项创建 K8 机密:

    实现'io.fabric8:kubernetes-client:5.10.1'

第 3 步的 Git 代码库 Git 参考是:https://github.com/fabric8io/kubernetes-client/blob/master/doc/CHEATSHEET.md

【讨论】:

    猜你喜欢
    • 2020-12-16
    • 2017-12-24
    • 2021-12-06
    • 2021-07-18
    • 1970-01-01
    • 1970-01-01
    • 2022-08-12
    • 1970-01-01
    • 2021-05-16
    相关资源
    最近更新 更多