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 后端。 目前,支持 sops 和 vals。
请参阅 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 示例
Copyright and license
© 2020-2022 Jan-Otto Kröpke (jkroepke)
© 2017-2020 Zendesk
根据 Apache License, Version 2.0 授权
Open Source Sponsors
感谢所有赞助者!
- @hegawa (25$) 一次性
- @Zero-Down-Time (25$) 一次性
- @k0ste (25$) 一次性
Acknowledgements
感谢 JetBrains IDEs 的支持。
| JetBrains IDEs |
|---|
|
|