将文件从 Openshift 复制到外部 unix 机器

Copy files from Openshift to external unix machine

我每天使用 rsync(oc 客户端)将文件从 openshift pod 复制到外部 unix 机器以进行批处理 activity。这个过程应该使用来自外部 unix 机器的 shell 脚本自动执行。仅一天的空班经验

oc login -u=<user> -p=<password> -n=<project>

oc rsync <pod-name>:/remote/dir/filename /unix/dir

查询 1:

但是我需要少密码登录或者我应该使用加密密码。这样密码就不会暴露。有什么方法可以做到这一点?

查询 2:

rsync 是正确的方法吗? sftp文件传输怎么样?不确定,如何使用 sftp 从 openshift pod 传输文件。

对于查询 1,这绝对 Service Accounts 的完美用例。创建服务帐户后,您将使用 oc sa get-token <sa-name> 为服务帐户获取 long lived 身份验证令牌(请注意,您仍需要提供服务帐户 授权执行rsync,oc create rolebinding <sa-name> --clusterrole=edit).

对于查询 2,我认为 rsync 是正确的方法。另一种选择是,不是从 pod pulling 你的内容,你可以设置一些东西 push 你的内容从 pod 到你的 unix 机器.显然,这需要 unix 机器是公开可用的,所以如果这是一个交易破坏者,仍然 rsync.

在 OpenShift 中将 ssh 密钥存储为秘密:SSH Key Authentication

可以挂载到FS,在rsync期间可以直接访问目标机器。

  1. 通过从 pod 到目标机器的 ssh 访问,您可以定期检查特定文件夹中的文件是否存在,比如 <target_ip>:<target_folder_conf>/trigger_to_copy/do_copy
  2. 如果do_copy存在,启动rsync
  3. 完成 rsync 后,在目标机器上删除 do_copy
  4. 在下一个 运行 中,当 pod 检查 do_copy 时,它可能不存在,并且下次在目标机器上创建文件时会发生 rsync
  5. 在远程机器上,您可以配置为按要求的时间间隔创建 do_copy