gpt4 book ai didi

Kubernetes 在 pod 中使用 secret

转载 作者:行者123 更新时间:2023-12-02 11:41:04 25 4
gpt4 key购买 nike

我有一个需要以下属性的 Spring Boot 应用程序镜像。

server.ssl.keyStore=/certs/keystore.jks

我正在使用 bewloe 命令将 keystore 文件加载到 secret 中。

kubectl create secret generic ssl-keystore-cert --from-file=./server-ssl.jks

我在 deployment.yaml 中使用以下 secret 引用

           {
"name": "SERVER_SSL_KEYSTORE",
"valueFrom": {
"secretKeyRef": {
"name": "ssl-keystore-cert",
"key": "server-ssl.jks"
}
}
}

通过上述引用,我收到以下错误。

Error: failed to start container "app-service": Error response from daemon: oci runtime error: container_linux.go:265: starting container process caused "process_linux.go:368: container init caused \"setenv: invalid argument\"" Back-off restarting failed container



如果我使用卷挂载选项,
"spec": {
"volumes": [
{
"name": "keystore-cert",
"secret": {
"secretName": "ssl-keystore-cert",
"items": [
{
"key": "server-ssl.jks",
"path": "keycerts"
}
]
}
}
],
"containers": [
{
"env": [
{
"name": "JAVA_OPTS",
"value": "-Dserver.ssl.keyStore=/certs/keystore/keycerts"
}
],
"name": "app-service",
"ports": [
{
"containerPort": 8080,
"protocol": "TCP"
}
],
"volumeMounts": [
{
"name": "keystore-cert",
"mountPath": "/certs/keystore"
}
],
"imagePullPolicy": "IfNotPresent"
}
]

使用上述方法,我收到以下错误。

Caused by: java.lang.IllegalArgumentException: Resource location must not be null at org.springframework.util.Assert.notNull(Assert.java:134) ~[spring-core-4.3.7.RELEASE.jar!/:4.3.7.RELEASE] at org.springframework.util.ResourceUtils.getURL(ResourceUtils.java:131) ~[spring-core-4.3.7.RELEASE.jar!/:4.3.7.RELEASE] at org.springframework.boot.context.embedded.jetty.JettyEmbeddedServletContainerFactory.configureSslKeyStore(JettyEmbeddedServletContainerFactory.java:301) ~[spring-boot-1.4.5.RELEASE.jar!/:1.4.5.RELEASE]



我也尝试使用以下选项,而不是 JAVA_OPTS,
{
"name": "SERVER_SSL_KEYSTORE",
"value": "/certs/keystore/keycerts"
}

错误仍然相同。

不知道什么是正确的方法。

最佳答案

我试图用你的配置重复这种情况。我创建了一个 secret 使用的命令:

kubectl create secret generic ssl-keystore-cert --from-file=./server-ssl.jks

我使用这个 YAML 作为测试环境:
apiVersion: v1
kind: Pod
metadata:
name: busybox
namespace: default
spec:
containers:
- image: busybox
command:
- sleep
- "3600"
imagePullPolicy: IfNotPresent
name: busybox
env:
- name: JAVA_OPTS
value: "-Dserver.ssl.keyStore=/certs/keystore/server-ssl.jks"
ports:
- containerPort: 8080
protocol: TCP
volumeMounts:
- name: secret-volume
readOnly: true
mountPath: "/cert/keystore"
volumes:
- name: secret-volume
secret:
secretName: ssl-keystore-cert

如您所见,我在变量中使用了“server-ssl.jks”文件名。如果您从文件中创建 key ,Kubernetes 会将此文件存储在 key 中。当您将此 secret 挂载到任何地方时,您只需存储该文件。您尝试使用 /certs/keystore/keycerts但它不存在,您在日志中看到:

Resource location must not be null at org.springframework.util.Assert.notNull



因为你挂载的 secret 就在这里 /certs/keystore/keycerts/server-ssl.jks
它应该可以工作,但只需修复路径

关于Kubernetes 在 pod 中使用 secret ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49723428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com