【问题标题】:Openshift/Kubernetes ssh Secret doesn't work with Camel SFTP componentOpenshift/Kubernetes ssh Secret 不适用于 Camel SFTP 组件
【发布时间】: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-privatekeysshsecret
  • 在 OCP 中创建的秘密名称是 sshsecret,但是在秘密数据中,我们确实有键值对,所以密钥是 ssh-privatekey。因此,当您将秘密挂载到卷时,秘密数据会写入文件,文件名是上面提到的 KEY 名称。简而言之,文件的名称是 ssh-privatekey。

标签: spring-boot kubernetes apache-camel openshift


【解决方案1】:

对我来说这是一个非常严重的错误。我在骆驼 SFTP 组件中使用 privateKeyUri 而不是 privateKeyFile。我没有纠正这一点,总是直接在 config-map 中更改那些 SFTP 参数。

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

无论如何,谢谢,干杯!

里托

【讨论】:

    猜你喜欢
    • 2019-12-21
    • 2022-01-22
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-20
    • 2018-01-07
    • 2020-08-20
    相关资源
    最近更新 更多