问题标签 [kubernetes-secrets]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kubernetes - 从 kubernetes secret 导入数据到配置映射
我正在使用一个包含应用程序数据库配置的 kubernetes ConfigMap,并且有一个包含数据库密码的秘密。我需要在 ConfigMap 中使用这个秘密,所以当我尝试在 ConfigMap 中添加环境变量并从秘密中指定 pod 部署中的值时,我无法使用密码连接到 mysql,因为 ConfigMap 中的值采用了变量的确切字符串。
和部署.yaml
注意:秘密存在,我可以获得“mysql-root-password”值并用于登录数据库
spring - Kubernetes Secret 和 Spring Boot 配置
我们的服务在 Kubernetes 集群中运行。我正在尝试使我们的服务受到 SSL 的保护。
为此,我添加到 application.properties:
我想从集群中定义的 kubernetes 机密中获取的密钥库密码。
当服务开始运行时,我收到一个错误Password verification failed
:
“org.apache.catalina.LifecycleException: 无法启动组件 [Connector[HTTP/1.1-8080]]\n\tat org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)\n\tat org .apache.catalina.core.StandardService.addConnector(StandardService.java:225)\n\tat org.springframework.boot.web.embedded.tomcat.TomcatWebServer.addPreviousRemovedConnectors(TomcatWebServer.java:256)\n\tat org.springframework .boot.web.embedded.tomcat.TomcatWebServer.start(TomcatWebServer.java:198)\n\tat org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.startWebServer(ServletWebServerApplicationContext.java:300)\n\tat org .springframework.boot.web.servlet.context.ServletWebServerApplicationContext.finishRefresh(ServletWebServerApplicationContext.java:162)\n\tat org.springframework.context.support.AbstractApplicationContext。刷新(AbstractApplicationContext.java:553)\n\tat org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140)\n\tat org.springframework.boot.SpringApplication.refresh(SpringApplication. java:759)\n\tat org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:395)\n\tat org.springframework.boot.SpringApplication.run(SpringApplication.java:327)\n\tat org. springframework.boot.SpringApplication.run(SpringApplication.java:1255)\n\tat org.springframework.boot.SpringApplication.run(SpringApplication.java:1243)\n\tat com.ibm.securityservices.cryptoutils.Application.main( Application.java:9)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat sun.reflect。DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java: 48)\n\tat org.springframework.boot.loader.Launcher.launch(Launcher.java:87)\n\tat org.springframework.boot.loader.Launcher.launch(Launcher.java:50)\n\tat org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)\n原因:org.apache.catalina.LifecycleException: 协议处理程序启动失败\n\tat org.apache.catalina.connector.Connector.startInternal( Connector.java:1020)\n\tat org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)\n\t... 省略了 21 个常用框架\n原因:java.lang.IllegalArgumentException: Keystore被篡改,或密码不正确\n\tat org.apache.tomcat.util.net.AbstractJsseEndpoint。createSSLContext(AbstractJsseEndpoint.java:116)\n\tat org.apache.tomcat.util.net.AbstractJsseEndpoint.initialiseSsl(AbstractJsseEndpoint.java:87)\n\tat org.apache.tomcat.util.net.NioEndpoint.bind( NioEndpoint.java:225)\n\tat org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:1150)\n\tat org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:591) \n\tat org.apache.catalina.connector.Connector.startInternal(Connector.java:1018)\n\t... 省略了 22 个常用帧\n原因:java.io.IOException: Keystore was tampered with, or password不正确\n\tat sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:780)\n\tat sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:56)\n\tat sun。 security.provider.KeyStoreDelegator.engineLoad(KeyStoreDelegator.java:224)\n\tat sun.security.provider。JavaKeyStore$DualFormatJKS.engineLoad(JavaKeyStore.java:70)\n\tat java.security.KeyStore.load(KeyStore.java:1445)\n\tat org.apache.tomcat.util.net.SSLUtilBase.getStore(SSLUtilBase. java:139)\n\tat org.apache.tomcat.util.net.SSLHostConfigCertificate.getCertificateKeystore(SSLHostConfigCertificate.java:204)\n\tat org.apache.tomcat.util.net.jsse.JSSEUtil.getKeyManagers(JSSEUtil. java:184)\n\tat org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:114)\n\t... 省略了 27 个常用帧\n原因:java.security.UnrecoverableKeyException: Password验证失败\n\tat sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:778)\n\t...省略了35个常用帧\n"}getStore(SSLUtilBase.java:139)\n\tat org.apache.tomcat.util.net.SSLHostConfigCertificate.getCertificateKeystore(SSLHostConfigCertificate.java:204)\n\tat org.apache.tomcat.util.net.jsse.JSSEUtil。 getKeyManagers(JSSEUtil.java:184)\n\tat org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:114)\n\t... 省略了 27 个常用帧\n原因:java.security .UnrecoverableKeyException: 密码验证失败\n\tat sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:778)\n\t...省略了35个常用帧\n"}getStore(SSLUtilBase.java:139)\n\tat org.apache.tomcat.util.net.SSLHostConfigCertificate.getCertificateKeystore(SSLHostConfigCertificate.java:204)\n\tat org.apache.tomcat.util.net.jsse.JSSEUtil。 getKeyManagers(JSSEUtil.java:184)\n\tat org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:114)\n\t... 省略了 27 个常用帧\n原因:java.security .UnrecoverableKeyException: 密码验证失败\n\tat sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:778)\n\t...省略了35个常用帧\n"}createSSLContext(AbstractJsseEndpoint.java:114)\n\t... 省略了 27 个常用帧\n原因:java.security.UnrecoverableKeyException: 密码验证失败\n\tat sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java: 778)\n\t...省略了 35 个常用帧\n"}createSSLContext(AbstractJsseEndpoint.java:114)\n\t... 省略了 27 个常用帧\n原因:java.security.UnrecoverableKeyException: 密码验证失败\n\tat sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java: 778)\n\t...省略了 35 个常用帧\n"}
我的调查:
1.如果我在代码中打印
我看到了它的正确价值。
2. 如果我在应用程序属性中设置硬编码常量密码值,它可以工作,服务启动并运行。
所以我想问题是为应用程序属性设置秘密值。
您的帮助和建议将不胜感激
curl - 通过rest api创建k8s秘密时出错
我想通过 kubectl api 创建一个秘密。下面是脚本,我正在运行但在解析 yaml 文件时出错。请帮忙
错误:
message": "提供的对象无法识别(必须是 Secret 类型):无法获取版本/种类;json 解析错误:无效字符 '}' 正在寻找对象键字符串的开头 ({\"apiVersion\": \"v1\",\"kind\": \"S ...)", "reason": "错误的请求”,
kubernetes - Kubernetes Secrets 卷与环境变量
有没有推荐的方式来使用Kubernetes Secrets?它们可以作为环境变量公开或使用卷安装。一个比另一个更安全吗?
kubernetes - Kubernetes 机密和服务帐户
在过去的 6 个月里,我一直在使用 Kubernetes,我们已经部署了一些服务。
我们即将部署另一个存储加密数据并将密钥放入 KMS 的设备。这需要两个服务帐户,一个用于数据,一个用于密钥。
必须审核对此的数据访问。由于对这些数据的访问非常敏感,我们不愿意将这两个服务帐户都放在名称空间中,就好像以任何方式受到损害一样,攻击者可以在未经审计的情况下访问数据和密钥。
现在我们有一个密钥,另一个我们将手动发布到单个 pod。
这很可怕,因为它需要一个人信任这个密钥,并且限制了可扩展性。幸运的是,这项服务的数量非常少。
有没有其他人遇到过同样的问题?你是怎么解决的?
干杯
要求
- 没有一个人可以访问这两个密钥(数据存储和 KMS)
kubernetes - Kubernetes Secret 的管理
我们从 Kubernetes 开始,想知道其他项目如何管理 Kubernetes 机密:
- 由于 Kubernetes 机密值只是 base64 编码,因此不建议将机密提交到源代码控制中
- 如果不致力于源代码控制,则应将其保存在其他地方的某个中心位置,否则就没有单一的事实来源。如果它存储在其他地方(例如 Hashicorp Vault),与 CI 的集成如何?CI 是否从 Vault 中获取值,在 Kubernetes 中按需创建机密资源?
- 另一种方法可能是有一个专门的团队来处理基础设施,并且只有该团队知道和管理秘密。但是,如果项目数量很大,这个团队可能会成为瓶颈
deployment - 在 Kubernetes 上创建容器间歇性失败 - 无法挂载默认令牌
在过去的几天里,我们在部署(通过 Helm)到 Kubernetes v1.11.2 时遇到了间歇性部署失败。
失败时,kubectl describe <deployment>
通常会报容器创建失败:
我们可以在 kubelet 日志中找到的唯一问题是:
它是间歇性的,这意味着每 20 次左右的部署就会失败一次。重新运行部署按预期工作。
集群和节点运行状况在部署时看起来都很好,所以我们不知道从哪里开始。寻找关于下一步从哪里开始诊断问题的建议。
编辑:根据要求,部署文件是通过 Helm 模板生成的,输出如下所示。有关更多信息,我们的许多服务都使用了相同的 Helm 模板,但只有这个特定的服务有这个间歇性问题:
kubernetes - `secret` 如何保护 Kubernetes 中的敏感信息
我对 Kubernetes 很陌生。
我的理解secret
是它通过base64
. 从我看到的资源来看,据称secret
可以保护敏感信息。我不明白这一点。
除了用 编码信息之外,我看不出和base64
之间有任何真正的区别。我们可以很容易地解码编码信息。这意味着根本没有保护...secret
configMap
base64
我的理解错了吗?
kubernetes - 如何为一群拥有多个字段的用户设置秘密?
然后我可以将它们包括在内:
并在 Node.js 应用程序中使用它们,例如process.env.JOHN_USERNAME
,等等。
这行得通,但是有没有一种更简洁/更简单的方法来为一群拥有多个字段的用户设置秘密?我想这会因为 100 个用户 x 5 个字段而变得混乱。
kubernetes - 将所有秘密作为环境变量插入到 kubernetes 部署中
我有几十个秘密要传递到一个非常冗长的 k8 部署中,下面是从redis-secrets
秘密传递 redis 秘密的示例。
是否可以将所有秘密传递redis-secrets
到部署中,秘密的密钥是环境变量密钥?