集群端控制器/操作员 客户端实用程序: kubeseal公司
api版本 : bitnami.com/v1alpha1
友善的 : 密封的秘密
元数据 : 名称 : 我的秘密
命名空间 : 我的命名空间
规范 : 加密数据 : 足球 : AgBy3i4OJSWK+PiTySYZZA9rO43cGDEq。。。。。
api版本 : 第1版
友善的 : 秘密
元数据 : 名称 : 我的秘密
命名空间 : 我的命名空间
数据 : 足球 : YmFy年 # <-base64编码的“bar”
api版本 : bitnami.com/v1alpha1
友善的 : 密封的秘密
元数据 : 名称 : 我的秘密
命名空间 : 我的命名空间
注释 : " kubectl.kubernetes.io/last-applied配置 " : ....
规范 : 加密数据 : .docker配置 : AgBy3i4OJSWK+PiTySYZZA9rO43cGDEq。。。。。
模板 : 类型 : kubernetes.io/dockerconfigjson公司
不可变的 : 真的
# 这是将添加到输出机密中的标签和注释的示例
元数据 : 标签 : " jenkins.io/credentials类型 " : 用户名密码
注释 : " jenkins.io/credentials-description " : Kubernetes的证书
api版本 : 第1版
友善的 : 秘密
元数据 : 名称 : 我的秘密
命名空间 : 我的命名空间
标签 : " jenkins.io/基本型 " : 用户名密码
注释 : " jenkins.io/credentials-description " : Kubernetes的证书
所有者参考 : - api版本 : bitnami.com/v1alpha1
控制器 : 真的
友善的 : 密封的秘密
名称 : 我的秘密
液体 : 5caf6a0-c9ac-11e9-881e-42010aac003e
类型 : kubernetes.io/dockerconfigjson公司
不可变的 : 真的
数据 : .docker配置 : ewogICJjcmVk。。。
kubesal--证书 https://your.intranet.company.com/sealed-secrets/your-cluster.cert
注释 :我们正在努力提供密钥管理机制,将加密卸载到基于HSM的模块或托管云加密解决方案(如KMS)。
严格的 (默认):机密必须完全相同 名称 和 命名空间 。这些属性变为 加密数据的一部分 因此,更改名称和/或命名空间将导致“解密错误”。 命名空间范围 :你可以自由 重命名 给定命名空间中的密封机密。 集群式 :秘密可以在 任何 命名空间,可以给定 任何 名称。
kubesal—范围群集范围 < 分泌型山药 > 密封密件.json
sealedsecrets.bitnami.com/namespace-wide:“真” ->的 命名空间宽度 sealedsecrets.bitnami.com/cluster-wide:“真” ->的 集群式
注意:下一版本将把它合并为单个
sealedsecrets.bitnami.com/scope 注释。
掌舵回购增加密封机密 https://bitnami-labs.github.io/sealed-secrets网站
注:掌舵图的版本方案不同于密封机密项目本身的版本方案。
这个 密封的秘密 控制器版本方案:0.X.Y 舵图版本方案:1.X.Y-rZ
注意:舵图自述仍包含一个弃用通知,但它不再反映现实,将在下一版本中删除。
注意:默认情况下,舵图会安装名称为的控制器
密封混凝土 ,而
库贝塞尔的 命令行界面(CLI)尝试使用名称访问控制器
密件控制器 。您可以显式传递
--控制器名称 到CLI:
kubeseal--控制器名称密封机密 < 参数 >
helm install sealed-secrets-n kube-system--set-string fullnameOverride=sealed-secrets-controller sealed-ecrets/sealed-secrets
A类 命名空间 分配给你的 服务帐户 . 您没有访问集群其余部分的权限,甚至没有访问集群CRD的权限。 您甚至可能无法在名称空间中创建更多的服务帐户或角色。 您需要在所有部署中包括资源限制。
集群必须已经安装了密封机密CRD .
服务帐户: 创建: 假 名称:{allocated-service-account} 澳大利亚广播公司: 创建: 假 群集角色: 假 资源: 限制: cpu:150米 内存:256Mi
不会创建服务帐户,而是使用分配给您的帐户。 {已分配服务帐户} 是的名称 服务帐户 您是在集群上分配的。
在命名空间和集群中都没有创建RBAC角色。 必须指定资源限制。 这些限制是应该有效的示例,但您可能希望在特定设置中查看它们。
helm install sealed-secrets-n{allocated-namespace}sealed-ecrets/sealed-secrets--skip-crds-f config.jaml
brew安装kubeseal
端口安装kubeseal
nix环境-iA nixpkgs.kubeseal
KUBESEAL_版本= ' ' # 例如,将其设置为KUBESEAL_VERSION='0.23.0' wget公司 " https://github.com/bitnami-labs/sealed-secrets/releases/download/v ${KUBESEAL_版本 :? } /库贝塞尔的- ${KUBESEAL_版本 :? } -linux-amd64.tar.gz " tar-xvzf-kubesal公司- ${KUBESEAL_版本 :? } -linux-amd64.tar.gz库贝塞尔 sudo安装-m 755 kubesal/usr/local/bin/kubesal
#使用GitHub API获取最新的密封机密版本 KUBESEAL_VERSION=$(卷曲-s https://api.github.com/repos/bitnami-labs/sealed-secrets/tags网站 | jq-r’。 [0].name“|剪切-c 2-) #检查是否成功获取版本 如果[-z“$KUBESEAL_VERSION”]; 然后 echo“无法获取最新的KUBESEAL_VERSION” 出口1 fi(菲涅耳) wget“(wget) https://github.com/bitnami-labs/sealed-secrets/releases/download/v ${KUBESEAL_VERSION}/kubesal(库贝塞尔)-$ {KUBESEAL_VERSION}-新版本amd64.tar.gz " tar-xvzf-kubesal公司-$ {KUBESEAL_VERSION}-linux-amd64.tar.gz 库贝塞尔的 sudo安装-m 755 kubesal/usr/local/bin/kubesal
去安装github.com/bitnami-labs/sealed-secrets/cmd/ kubeseal@main公司
$( 去env GOPATH ) /bin/kubeseal公司
# 以某种方式创建一个json/yaml-encoded Secret:
# (注意`--dry-run`的用法-这只是一个本地文件!)
回声 -n巴 | kubectl创建秘密通用mysecret--dry-run=client--from-file=foo=/dev/stdin-o json > 我的秘密.json # 这是重要的一点: kubesal-f mysecret.json-w mysealedsecret.json # 目前,mysealedsecret.json可以安全地上传到Github,
# 在推特上发帖等。
# 最终: kubectl创建-f mysealedsecret.json # 利润! 库贝特尔得到我的秘密
v0.23.0中的新增功能
回声 -n巴 | kubectl从文件=foo=/dev/stdin-o json创建机密通用mysecret——dry-run=客户端\ | kubeseal公司 > 我的秘密.json 回声 -n巴兹 | kubectl创建秘密通用mysecret--dry-run=client--from-file=bar=/dev/stdin-o json\ | kubesal——并入mysealedsecret.json
$ 回声 -n个foo | kubesal--raw--名称空间栏--名称mysecret
AgBChHUWLMx。。。
$ 回声 -n个foo | kubeseal--raw--namespace bar--scope命名空间宽度
AgAbbFNkM54。。。
元数据 : 注释 : sealedsecrets.bitnami.com/namespace-wide : " 真的 "
$ 回声 -n个foo | kubesal--原始--范围集群
AgAjLKpIYV+。。。
元数据 : 注释 : sealedsecrets.bitnami.com/cluster-wide : " 真的 "
api版本 : bitnami.com/v1alpha1
友善的 : 密封的秘密
元数据 : 名称 : 我的秘密
命名空间 : 我的命名空间
规范 : 加密数据 : 足球 : AgBy3i4OJSWK+PiTySYZZA9rO43cGDEq。。。。。
$ 猫密封密件.yaml | kubesal—验证
$ 猫密封密件.yaml | kubesal—验证
错误:无法解密密封的机密
如果 密封 私钥泄露,您需要遵循“提前密钥更新”中的以下说明 在旋转任何实际秘密值之前。
Sealed密钥续订和重新加密功能 不是替代品 用于定期循环您的实际秘密值。
kubectl编辑部署/sealed-secrets-controller--namespace=kube-system
不幸的是,您不能将例如“d”作为天的单位,因为Go stdlib不支持这样做。 不要用手掌打你的脸,把这当作一个思考 程序员相信时间的谬误 .
将您的秘密加密为SealedSecret 是 存储安全-即使在公共存储库中。
kubesal—重新加密 < 我的密封机密.json > tmp.json公司\ && mv tmp.json my_sealed_secret.json
搜索这些密钥,并将它们添加到其本地存储中(如果有) 标记为活动。 创建新密钥 开始钥匙旋转循环
kubectl获取机密-n kube-system-l sealedsecrets.bitnami.com/sealed-secrets-key-o yaml > 主关键字 回声 " --- " >> 主关键字 库贝特尔获得秘密-n库贝系统密封-机密-密钥-o yaml >> 主关键字
注意:只有在集群上安装了早于0.9.x版本的sealed-secrets时,才需要第二条语句。
注意:此文件将包含控制器的公钥和私钥,应保持omg-safe!
注意:密封密钥续订后,应重新创建备份。 否则,您的备份将无法解密新的密封机密。
-
对于Helm部署: kubectl应用-f main.key kubectl删除pod-n kube-system-l app.kubernetes.io/name=sealed-secrets -
用于通过部署 控制器.yaml 显示 kubectl应用-f main.key kubectl删除pod-n kube-system-l name=sealed-secrets-controller
您可以通过命令行选项指定名称空间 --控制器名称空间<名称空间> :
kubeseal—控制器名称空间密封机密 < 我的秘密.json > 我的秘密.json
通过环境变量 密封的_服务器_控制器_命名空间 :
出口 SEALED_SECRETS_CONTROLLER_NAMESPACE=密件密封 库贝塞尔的 < 我的秘密.json > 我的秘密.json
使用Cosign v1对0.20.2及以下版本的图像进行签名。 更新的图像使用Cosign v2签名。
# 导出COSIGN_VARIABLE设置GitHub容器注册标志路径
出口 COSIGN_REPOSITORY=ghcr.io/bitnami-labs/sealed-secrets-controller/signs # 验证GHCR中上传的图像 cosign verify--key.github/workflows/cosign.pub ghcr.io/bitnami-labs/sealed-secrets-controller:最新 # 验证Dockerhub上传的图片 cosign verify--key.github/workflows/cosign.pub docker.io/bitnami/sealed-secrets-controller:最新
库贝塞尔·转换 : https://github.com/EladLeev/kubesal-convert Visual Studio代码扩展: https://marketplace.visualstudio.com/items?itemName=codecontemplator.kubeseal WebSeal:在浏览器中生成机密: https://socialgouv.github.io/webseal网站 HybridEncrypt TypeScript实现: https://github.com/SocialGouv/aes-gcm-rsa-oaep网站 [失望]密封秘密操作员: https://github.com/dispab1e/sealed-secrets-operator-helm