安装KubeSeal$wgethttps://github.com/bitnami-labs/sealed-secrets/releases/download/v0.18.0/kubeseal-0.18。0-linux-amd64.tar.gz$tar-xvfkubeseal-0.18.0-linux-amd64.tar.gz$cpkubeseal/usr/local/bin/$kubeseal--versioninstallcontroller$kubectlapply-fhttps://github.com/bitnami-labs/sealed-secrets/releases/download/v0.18.0/controller.yaml执行上述命令后,kube-system命名空间下会启动一个controllerPod:$kgetpod-nkube系统|grepsealed-secrets-controller-b9fb75d85-k4csm1/1Running07h28mPod启动后使用端口转发映射到本地:$kubectl-nkube-systemport-forwardsvc/sealed-secrets-controller8080:8080使用生成加密文件的方法首先在本地创建一个名为secret-example.yaml的文件。编码前的secret字段为:mysupersecretapiVersion:v1kind:Secretmetadata:name:secret-exampledata:secret:bXlzdXBlcnNlY3JldAo=使用如下命令将secret-example.yaml转换为加密文件sealed-secret-example.yaml$kubeseal--秘密文件secret-example.yaml--sealed-secret-filesealed-secret-example.yamlsealed-secret-example.yaml的内容如下,spec.encryptedData.secret就是加密后的内容:apiVersion:bitnami.com/v1alpha1kind:SealedSecretmetadata:creationTimestamp:nullname:secret-examplenamespace:kube-systemspec:encryptedData:secret:AgB1ZZg8+J+0HLymOQZdTfWVQZiNkhm5X6WULJuBAAEaQQNhM8i2TV2I1SgKT4sUOCRv90XA1oeFld3XoGPjvYE3leOD1cvK1dDVqno6mNLRziokISk/9fB3cVE2GVgyCud//M53xNpVemDufgsJS2q/KGIOeNEijk9ZM2FaKoLDwtPaVNL0NfmC2xne2XtWJp+/eMOREhbubQhnj5M/Se75axazviuDNf6Ss9fAuR38Msd5DXnKBtyrckEHSa8TDn8ErssOh0ogX14e0/ThN3EWJecSBtx7Xfd0m90+vjmvWevMag442349aquR/qLo0mg40mhcCqSBw/MjaIGZ2F5XRufG1WEP43OgLMTixN2lLSU3eYTrv5t075taI9WJgoOl0DD8UA74EMpX7RMKTiXD6C0XngKmMKg5fUK7JNLFfwHMRPi4zNTwJa9ViDyD0iAJrGGbmMso/nHEtwOtrLE5Rrf0kLQ5N6Lj57gOBdqu903/vDM4Jm695GvEWL2aR3ShOxasHCuZeXj8Q5+KYWeF9sySiJH8bwEtaw6x7j9AxBOwjxWYD0Jvj9KhtlqBa4okSDc3bcgRKGhsSXQx6jOumI5rj+V542hkB6Z8JOtJ17VmzR6XDQDmqSl1FqqwKD5n5yUy5Kf6pJYBnsgKn3TzesQ6JfQbyRLTh1Pn3odOYCnp+Ixbd0Tgn0n5m0KO3RX0hiwGoe0hObIZcsF36g==template:data:nullmetadata:creationTimestamp:nullname:secret-examplenamespace:kube-system可以保存加密文件到Gitlab创建加密文件:$kcreate-fsealed-secret-example.yamlsealedsecret.bitnami.com/secret-examplecreated$kgetsealedsecrets.bitnami.comNAMEAGEsecret-example6s创建加密文件后,Controller将对其进行解密并生成对应的secret:$kgetsecrets|grepsecret-examplesecret-exampleOpaque12m15s查看Controller生成的secret资源内容,可以看到data.secret与secret-example.yaml文件内容一致上面创建:$kgetsecretsecret-example-oyamlapiVersion:v1data:secret:bXlzdXBlcnNlY3JldAo=kind:Secretmetadata:creationTimestamp:"2022-06-10T00:50:40Z"name:secret-examplenamespace:kube-systemownerReferences:-apiVersion:bitnami.com/v1trollera:1truekind:SealedSecretname:secret-exampleuid:57a5b691-9bb5-4dac-800a-1a1baa878299resourceVersion:"675560"uid:e0db31ad-082b-4596-9fd0-28cc810d86f4type:Opaqueubeseal命名空间提示支持以下API:RouteDescription/hhealthz健康检查对就绪和活动探测以及创建外部探测有用的路由;例如,使用黑盒导出器。/metricsEndpoint供普罗米修斯检索控制器的指标。/v1/verifyValidatesasecret./v1/rotateRotatesthesecret./v1/cert.pemRetrievesthepubliccertificate。上面的例子中,Controller使用的证书是自己生成的,你也可以指定自己的证书,更方便迁移和管理。使用KubeSeal时可能会出现混淆。如果用户直接挂载另一个命名空间的secret,那么这可能会导致secret泄露。官方对此进行了解释,比如限制用户可以通过RBAC访问的命名空间和资源类型。在README中查看更多信息
