【问题标题】:Can i insert secrets into deployment.yml using Azure KeyVault?我可以使用 Azure Key Vault 将机密插入到 deployment.yaml 中吗?
【发布时间】:2020-01-31 15:30:02
【问题描述】:

我已经使用 Terraform 集成了 Azure KeyVault。我可以通过 ssh 进入容器并查看其中的秘密。

我的问题是:是否有可能以某种方式在我用于在 kubernetes 集群中部署我的 pod 的 deployment.yml 文件中引用该秘密值?

我正在使用以下部署文件。通常我使用 valueFrom 访问 Kubernetes 机密,然后在此处引用机密名称和密钥。如果我想在此处使用 keyvault 插入 secret 的值,这怎么可能。

-spec:
  containers:
    - name: test-container
      image: test.azurecr.io/test-image:latest
      imagePullPolicy: Always
      ports:
        - containerPort: 8080
      env:
      - name: testSecret
        valueFrom:
          secretKeyRef:
            name: testSecret
            key: testSecretPassword

谢谢

【问题讨论】:

    标签: azure kubernetes azure-keyvault


    【解决方案1】:

    您将需要一个 Terraform 数据源。 数据源允许获取或计算数据以在 Terraform 配置的其他地方使用。数据源的使用允许 Terraform 配置使用在 Terraform 外部定义或由另一个单独的 Terraform 配置定义的信息。

    data "azurerm_key_vault_secret" "test" {
      name         = "secret-sauce"
      key_vault_id = "${data.azurerm_key_vault.existing.id}"
    }
    
    output "secret_value" {
      value = "${data.azurerm_key_vault_secret.test.value}"
    }
    

    您可以查看Key Vault FlexVolume 将 Key Vault 集成到 K8s 中。密钥管理系统中的秘密、密钥和证书成为 pod 可访问的卷。挂载卷后,其数据可直接在您的应用程序的容器文件系统中使用。

    老实说,我没有尝试过这个解决方案,也不知道它是否可以在我们的 AKS 产品之外工作。

    https://www.terraform.io/docs/providers/azurerm/d/key_vault_secret.html

    https://blog.azureandbeyond.com/2019/01/29/terraform-azure-keyvault-secrets/

    【讨论】:

    • 我了解如何在 Terraform 中使用保管库机密,但这不是我的问题。问题是如何在我的应用程序中访问它,即当我将 docker 容器部署到 Kubernetes 时,我想将我的秘密插入到 deployment.yml 文件中。就像我可以从 Kubernetes 秘密中一样。
    • 更新了 Key Vault FlexVolume 的答案,这可能是一个选项。
    • 是的。我已经浏览了 KeyVaultFlexVolume 文档。但看起来这不是我想要的。该解决方案使您可以访问容器内的秘密。但是如何处理它们呢?我想将它们注入我的应用程序中,我认为这还不可能。非常感谢您的支持!
    猜你喜欢
    • 1970-01-01
    • 2020-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-26
    • 2020-12-19
    • 2021-11-19
    • 2018-07-13
    相关资源
    最近更新 更多