我有一个keystore.jks文件,我需要将其作为我的docker进程的env变量传递。
我使用下面的命令将文件存储为秘密。
kubectl创建秘密通用ssl-keystore-cert --from文件=。/ keystore.jks
在我的deployment.yaml中使用上述秘密,如下所示。
{
"name": "SERVER_SSL_KEYSTORE",
"valueFrom": {
"secretKeyRef": {
"name": "ssl-keystore-cert",
"key": "keystore.jks"
}
}
}
错误:无法启动容器" app-service":来自的错误响应 守护进程:oci运行时错误:container_linux.go:265:启动容器 进程导致" process_linux.go:368:容器init导致\" setenv: 无效的参数\""退回重启失败的容器
无论如何将keystore.jks存储在secret或configmap中?
调试: -
kubectl描述了秘密的ssl-keystore-cert
Name: ssl-keystore-cert
Labels: <none>
Annotations: <none>
Type: Opaque
Data
====
keystore.jks: 4818 bytes
答案 0 :(得分:1)
在您的创建秘密中,您可以参考 keystore.jks
但在你的yaml中,你指的是 server-ssl.jks
这些键应该是相同的键,但它们是不同的。
要验证正确的密钥,请运行:
kubectl describe secrets/ssl-keystore-cert
答案 1 :(得分:0)
我建议您创建一个秘密,将Keystore作为环境变量传递(因为它是一个机密信息)。说过你所遵循的过程是正确的。请检查您在部署yml文件中传递的“key”值。我看到你需要文件的实际内容而不是文件名。当你执行“kubectl describe secret $ secretname”时,输出包含一个Data部分。请将键值更新为该部分中显示的值。如果没有解决,请发送describe命令的输出,以便我可以查看它。