Kubernetes - 在秘密或configMap中存储jks文件

时间:2018-04-09 03:07:22

标签: kubernetes

我有一个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

2 个答案:

答案 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命令的输出,以便我可以查看它。