Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot Openshift/Kubernetes ssh Secret不';t使用Camel SFTP组件_Spring Boot_Kubernetes_Apache Camel_Openshift - Fatal编程技术网

Spring boot Openshift/Kubernetes ssh Secret不';t使用Camel SFTP组件

Spring boot Openshift/Kubernetes ssh Secret不';t使用Camel SFTP组件,spring-boot,kubernetes,apache-camel,openshift,Spring Boot,Kubernetes,Apache Camel,Openshift,长话短说---> 将从Openshift中的机密中检索到的ssh密钥传递到apache camel SFTP组件时,无法连接服务器;然而,如果我直接将实际ssh密钥文件的路径(不创建机密)传递给同一个组件,它就可以正常工作。例外情况是,密钥无效。我试图用java读取密钥文件,并将其作为ByteArray作为privateKey参数传递,但没有成功。似乎传递密钥是因为byte没有尽可能地发挥作用 SFTP组件属性-> sftp: host: my.sftp.server port: 22 f

长话短说--->

将从Openshift中的机密中检索到的ssh密钥传递到apache camel SFTP组件时,无法连接服务器;然而,如果我直接将实际ssh密钥文件的路径(不创建机密)传递给同一个组件,它就可以正常工作。例外情况是,密钥无效。我试图用java读取密钥文件,并将其作为ByteArray作为privateKey参数传递,但没有成功。似乎传递密钥是因为byte没有尽可能地发挥作用

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
- name: SSH_SECRET

  valueFrom:

    secretKeyRef:

      name: sshsecret

      key: ssh-privatekey
spring:

  cloud:

    kubernetes:

      secrets:


        enabled: true

        enableApi: true

        name: sshsecret
volumeMounts:

- mountPath: /var/run/secret/secret-volume

  name: secret-volume

volumes:

- name: secret-volume

   secret:

      secretName: sshsecret
spring:

  cloud:

    kubernetes:

      secrets:

        enabled: true

        paths: /var/run/secret/secret-volume
应用程序详细信息: 我正在使用Openshift 3.11。 开发配置了fabric8和SpringCloud kubernetes插件的Camel-SpringBoot微集成服务以进行部署

我正在创建一个秘密,

oc secrets新sshauth sshsecret--ssh privatekey=$HOME/.ssh/id\u rsa

我已尝试使用deployment.yml和bootstrap.yml引用secret

使用带有密钥ref的as env变量->

部署.yml->

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
- name: SSH_SECRET

  valueFrom:

    secretKeyRef:

      name: sshsecret

      key: ssh-privatekey
spring:

  cloud:

    kubernetes:

      secrets:


        enabled: true

        enableApi: true

        name: sshsecret
volumeMounts:

- mountPath: /var/run/secret/secret-volume

  name: secret-volume

volumes:

- name: secret-volume

   secret:

      secretName: sshsecret
spring:

  cloud:

    kubernetes:

      secrets:

        enabled: true

        paths: /var/run/secret/secret-volume
bootstrap.yml->

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
- name: SSH_SECRET

  valueFrom:

    secretKeyRef:

      name: sshsecret

      key: ssh-privatekey
spring:

  cloud:

    kubernetes:

      secrets:


        enabled: true

        enableApi: true

        name: sshsecret
volumeMounts:

- mountPath: /var/run/secret/secret-volume

  name: secret-volume

volumes:

- name: secret-volume

   secret:

      secretName: sshsecret
spring:

  cloud:

    kubernetes:

      secrets:

        enabled: true

        paths: /var/run/secret/secret-volume
使用已装入的卷->

部署.yml->

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
- name: SSH_SECRET

  valueFrom:

    secretKeyRef:

      name: sshsecret

      key: ssh-privatekey
spring:

  cloud:

    kubernetes:

      secrets:


        enabled: true

        enableApi: true

        name: sshsecret
volumeMounts:

- mountPath: /var/run/secret/secret-volume

  name: secret-volume

volumes:

- name: secret-volume

   secret:

      secretName: sshsecret
spring:

  cloud:

    kubernetes:

      secrets:

        enabled: true

        paths: /var/run/secret/secret-volume
bootstrap.yml->

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
- name: SSH_SECRET

  valueFrom:

    secretKeyRef:

      name: sshsecret

      key: ssh-privatekey
spring:

  cloud:

    kubernetes:

      secrets:


        enabled: true

        enableApi: true

        name: sshsecret
volumeMounts:

- mountPath: /var/run/secret/secret-volume

  name: secret-volume

volumes:

- name: secret-volume

   secret:

      secretName: sshsecret
spring:

  cloud:

    kubernetes:

      secrets:

        enabled: true

        paths: /var/run/secret/secret-volume
注意:部署服务后,我可以看到装载的卷与容器相连,甚至可以猛击到POD中,转到同一目录并找到完全完整的私钥


任何帮助都将不胜感激。问我所有你需要知道的问题来解决这个问题。

这是我方面的一个非常严重的错误。我在camel-SFTP组件中使用了privateKeyUri,而不是privateKeyFile。我没有纠正这一点,总是直接更改配置映射中的SFTP参数

顺便说一下,对于那些试图实现类似用例的人;使用第二个选项,即将机密装载到卷中,然后在Camel中引用卷路径。不要将secret用作ENV变量,因此不需要在bootstrap.yml中启用secret API

谢谢你,干杯


Rito

privateKeyFilePath
中指定的私钥文件的名称是
ssh privatekey
;在deployment.yml中,secretName字段是
secretName:sshsecret
。装载卷中的文件名是什么-
ssh privatekey
sshsecret
?在OCP中创建的机密名称是sshsecret,但是在机密数据中,我们有密钥-值对,因此密钥是ssh privatekey。因此,当您将机密装载到卷时,机密数据会写入文件,文件名就是上面提到的密钥名。简而言之,文件名是ssh privatekey。