将 AWS Secret Manager 与 Minikube 本地集群结合使用

问题描述 投票:0回答:2

我有一个使用 minikube 在我的 Mac 上运行的本地 Kubernetes 集群。 我想将 AWS Secret Manager 上存储的机密装载到我的 Pod 中。

基本上,我正在尝试实现 this 教程中描述的内容,但适用于本地运行的集群,而不是 EKS 上。

我已经通过运行安装了 CSI 驱动程序

helm repo add secrets-store-csi-driver https://kubernetes-sigs.github.io/secrets-store-csi-driver/charts

helm install -n kube-system csi-secrets-store secrets-store-csi-driver/secrets-store-csi-driver

还通过申请安装了 aws 提供商服务帐户:

kubectl apply -f https://raw.githubusercontent.com/aws/secrets-store-csi-driver-provider-aws/main/deployment/aws-provider-installer.yaml

此外,我已将“secretProviderClass”yml 应用到我的 minikube 集群:

apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: mypod-aws-secrets
  namespace: default
spec:
  provider: aws
  parameters:
    objects: |
        - objectName: "testSecret"
          objectType: "secretsmanager"
          jmesPath:
            - path: testSecretKey
              objectAlias: testSecretKey

最后在我的 Pod 的部署.yml 中,我尝试使用此安装

mypod-aws-secrets
(只是相关部分):

spec:
    replicas: 1
    selector:
        matchLabels:
            component: myPod
    template:
        metadata:
            labels:
                component: myPod
        spec:
            serviceAccountName: application-pod-sa
            volumes:
            - name: secrets-store-inline
              csi:
                driver: secrets-store.csi.k8s.io
                readOnly: true
                volumeAttributes:
                    secretProviderClass: mypod-aws-secrets

但是,pod 无法启动,并且出现以下错误:

MountVolume.SetUp failed for volume "secrets-store-inline" : rpc error: code = Unknown desc = failed to mount secrets store objects for pod default/myPod-579bdf9b57-dd9tq, err: rpc error: code = Unknown desc = failed to retrieve region from node. error Region not found

这对我来说很有意义,因为到目前为止,我没有让我的 minikube 集群知道有关具体 AWS Secret Manager 的任何信息,也没有授予我的 minikube 集群在我的 AWS 账户上访问此 AWS Secret Manager 的任何权限。 我的问题是:

  1. 我应该在哪里/如何添加此信息?
  2. 要让它发挥作用还缺少什么?

谢谢

kubernetes amazon-eks minikube aws-secrets-manager
2个回答
1
投票

AWS Secrets and Configuration Manager 的 CSI 驱动程序文档表示这仅适用于 AWS EKS 集群。

因此,

minikube
(以及任何其他 k8s 发行版)中缺少一些东西:

  • 区域,即您面临的错误。这实际上取自大多数云 k8s 提供商添加的 k8s 节点标签
    topology.kubernetes.io/region
    。您可以将其添加到您的
    minikube
    节点上,但它不会让您走得更远......见下文
  • 用于
    secrets-store-csi-driver-provider-aws
    打开与 AWS 的会话并提供尊重 serviceAccount 上注释的 IAM 角色的访问权限的凭证。

对于后面的这一点,我没有进一步研究,但我怀疑这要归功于 EKS 默认提供 IRSA(ServiceAccounts 的 IAM 角色)功能。我不知道是否可以在 AWS 甚至 EKS 之外获得相同的功能。

也许深入研究“IAM Anywhere”可以提供一个解决方案,但乍一看似乎有很多设置,并且与

minikube
的典型“临时本地 k8s”用法不匹配。

另一件需要进展的事情可能是深入研究

secrets-store-csi-driver-provider-aws
代码,看看是否可以为其提供AWS凭证(访问密钥/令牌?),以便它能够打开该会话。


0
投票

对于具有 AWS 凭证(访问密钥/令牌?)的 Secrets-store-csi-driver-provider-aws 代码,它也不起作用,因为该 aws-provider 必须与 IAM 角色一起使用。

© www.soinside.com 2019 - 2024. All rights reserved.