【发布时间】:2020-03-17 04:23:22
【问题描述】:
长话短说--->
在将 ssh-key 传递给 apache-camel SFTP 组件时,它无法连接服务器;而如果我直接将实际 ssh-key 文件的路径传递给同一个组件而不创建秘密,它就可以正常工作。例外是,无效的密钥。我试图在 java 中读取密钥文件并将其作为 ByteArray 作为 privateKey 参数传递,但没有运气。似乎将密钥作为字节传递并不是所有可能的方式。
SFTP 组件属性->
sftp:
host: my.sftp.server
port: 22
fileDirectory: /to
fileName: /app/home/file.txt
username: sftp-user
privateKeyFilePath: /var/run/secret/secret-volume/ssh-privatekey **(Also tried privateKey param with byte array)**
knownHostsFile: resource:classpath:keys/known_hosts
binary: true
申请详情: 我正在使用 Openshift 3.11。 开发配置了 fabric8 和 spring-cloud-kubernetes 插件的 Camel-SpringBoot 微集成服务进行部署。
我正在创建秘密,
oc secrets new-sshauth sshsecret --ssh-privatekey=$HOME/.ssh/id_rsa
我尝试使用 deployment.yml 和 bootstrap.yml 引用秘密
作为 env 变量与 secret-key-ref->
一起使用deployment.yml->
- name: SSH_SECRET
valueFrom:
secretKeyRef:
name: sshsecret
key: ssh-privatekey
bootstrap.yml->
spring:
cloud:
kubernetes:
secrets:
enabled: true
enableApi: true
name: sshsecret
作为挂载卷使用->
deployment.yml->
volumeMounts:
- mountPath: /var/run/secret/secret-volume
name: secret-volume
volumes:
- name: secret-volume
secret:
secretName: sshsecret
bootstrap.yml->
spring:
cloud:
kubernetes:
secrets:
enabled: true
paths: /var/run/secret/secret-volume
注意: 部署服务后,我可以看到挂载的卷已附加到容器中,甚至可以 bash 进入 POD 并转到同一目录并找到完全完好的私钥.
任何帮助将不胜感激。向我提出解决此问题需要知道的所有问题。
【问题讨论】:
-
privateKeyFilePath中指定的私钥文件名为ssh-privatekey;在 deployment.yml 中,secretName 文件是secretName: sshsecret。已安装卷中的文件名称是什么 -ssh-privatekey或sshsecret? -
在 OCP 中创建的秘密名称是 sshsecret,但是在秘密数据中,我们确实有键值对,所以密钥是 ssh-privatekey。因此,当您将秘密挂载到卷时,秘密数据会写入文件,文件名是上面提到的 KEY 名称。简而言之,文件的名称是 ssh-privatekey。
标签: spring-boot kubernetes apache-camel openshift