ITADN
jkroepke/helm-secrets
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

CI License Current Release GitHub Repo stars GitHub all releases GitHub issues GitHub pull requests codecov Artifact Hub

helm-secrets

⭐ 别忘了给这个仓库点个星! ⭐

关于

helm-secrets 是一个 Helm 插件,用于即时解密加密的 Helm 值文件

  • 使用 sops 加密值文件并将其存储在 git 中。
  • 将您的密钥存储在云原生密钥管理器(如 AWS SecretManager、Azure KeyVault 或 HashiCorp Vault)中,并将其注入到值文件或模板中。
  • 在您喜欢的部署工具或 GitOps Operator(如 ArgoCD)中使用 helm-secret

谁实际上在使用 helm-secrets?如果您在您的公司或组织中使用 helm-secrets,我们邀请您创建一个 PR,将您的 信息添加到这个 文件

安装

有关更多信息,请参阅 安装

用法

完整文档请阅读 GitHub wiki

通过协议处理器解密密钥

在特定的值文件上运行解密命令。 这种方法优于下面的插件命令。 此模式用于 ArgoCD 环境。

helm upgrade name . -f secrets://secrets.yaml

See Usage for more information

通过插件命令解密 secrets

封装了整个 helm 命令。在多个值文件上速度较慢。

helm secrets upgrade name . -f secrets.yaml

在 helm template 中评估 secret 引用

需要 helm 3.9+; vals 0.20+

helm-secrets 支持通过标志 --evaluate-templates 在 Helm 模板中评估 vals 表达式。

secrets.yaml

apiVersion: v1
kind: Secret
metadata:
  name: secret
type: Opaque
stringData:
  password: "ref+awsssm://foo/bar?mode=singleparam#/BAR"

运行

helm secrets --evaluate-templates upgrade name .

云支持

使用 AWS Secrets Manager 或 Azure KeyVault 安全地存储密钥,并在 values.yaml 中引用它们

helm secrets --backend vals template bitnami/mysql --name-template mysql \
  --set auth.rootPassword=ref+awsssm://foo/bar?mode=singleparam#/BAR

有关更多信息,请参阅 Cloud Integration

ArgoCD 支持

有关使用 ArgoCD 运行 helm-secrets,请参阅 ArgoCD Integration 以获取更多信息。

示例

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: app
spec:
  source:
    helm:
      valueFiles:
        - secrets+gpg-import:///helm-secrets-private-keys/key.asc?secrets.yaml
        - secrets+gpg-import-kubernetes://argocd/helm-secrets-private-keys#key.asc?secrets.yaml
        - secrets://secrets.yaml
      # fileParameters (--set-file) are supported, too. 
      fileParameters:
        - name: config
          path: secrets://secrets.yaml
        # directly reference values from Cloud Providers
        - name: mysql.rootPassword
          path: secrets+literal://ref+azurekeyvault://my-vault/secret-a

Terraform 支持

Terraform Helm provider 不支持 downloader 插件

helm-secrets 可以与 Terraform external data source provider 一起使用。

示例

data "external" "helm-secrets" {
  program = ["helm", "secrets", "decrypt", "--terraform", "../../examples/sops/secrets.yaml"]
}

resource "helm_release" "example" {
  

  values = [
    file("../../examples/sops/values.yaml"),
    base64decode(data.external.helm-secrets.result.content_base64),
  ]
}

examples/terraform 中,可以找到如何使用 helm-secrets 与 Terraform 的示例。

Secret backends

helm-secrets 支持多种 secret 后端。 目前,支持 sopsvals

请参阅 Secret-Backends 了解如何使用它们。

Documentation

可以在 here 找到额外的文档、资源和示例。

Moving parts of project

  • scripts/run.sh - 所有 helm-secrets 插件操作的主 helm-secrets 插件代码,在插件安装后可在 helm secrets help 中使用
  • scripts/backends - 树内 secret 后端的位置
  • scripts/commands - helm secrets 的子命令在此定义。
  • scripts/lib - helm secrets 使用的通用函数。
  • scripts/wrapper - Windows 系统的包装脚本。
  • tests - 用于检查插件所有部分是否正常的测试脚本。使用带有 PGP 密钥的测试资产,对真实数据进行真实的加密/解密测试。更多信息请参阅 tests/README.md
  • examples - 一些 secrets.yaml 示例

© 2020-2022 Jan-Otto Kröpke (jkroepke)

© 2017-2020 Zendesk

根据 Apache License, Version 2.0 授权

Open Source Sponsors

感谢所有赞助者!

Acknowledgements

感谢 JetBrains IDEs 的支持。

JetBrains IDEs