Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.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
将文件从Openshift复制到外部unix计算机_Unix_Openshift_Sftp_Rsync - Fatal编程技术网

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

将文件从Openshift复制到外部unix计算机,unix,openshift,sftp,rsync,Unix,Openshift,Sftp,Rsync,我正在使用rsync(oc-client)每天将文件从openshift-pod复制到外部unix机器,以进行批处理活动。应该使用外部unix机器上的shell脚本自动执行此过程。只是一天的开放式轮班经验 oc login -u=<user> -p=<password> -n=<project> oc rsync <pod-name>:/remote/dir/filename /unix/dir oc登录-u=-p=-n= oc rsync:/

我正在使用rsync(oc-client)每天将文件从openshift-pod复制到外部unix机器,以进行批处理活动。应该使用外部unix机器上的shell脚本自动执行此过程。只是一天的开放式轮班经验

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

oc rsync <pod-name>:/remote/dir/filename /unix/dir
oc登录-u=-p=-n=
oc rsync:/remote/dir/filename/unix/dir
问题1:

但我需要无密码登录,否则我应该使用加密密码。这样就不会暴露密码。有什么方法可以做到这一点

问题2:

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

对于查询1,这绝对是查询的完美用例。创建服务帐户后,您将使用
oc sa get token
为服务帐户获取一个长期有效的身份验证令牌(注意,您仍然需要授予服务帐户授权才能执行
rsync
oc create rolebinding--clusterrole=edit


对于查询2,我认为
rsync
将是正确的方法。另一种选择是,您可以设置将内容从pod推送到unix机器中的内容,而不是从pod中提取内容。显然,这需要unix机器公开可用,因此如果这是一个交易破坏者,只需使用
rsync

将ssh密钥作为机密存储在OpenShift中即可:

这可以安装到FS上,并且可以在安装过程中直接访问目标机器

  • 通过从pod到目标机器的ssh访问,您可以定期检查特定文件夹中是否存在文件,例如
    :/trigger_to_copy/do_copy
  • 如果存在
    do\u copy
    ,则启动rsync
  • 使用rsync完成后,在目标机器上删除
    do\u copy
  • 在下一次运行中,当pod检查
    do_copy
    时,它可能不存在,并且下次在目标机器上创建文件时将发生rsync
  • 在远程计算机上,您可以配置以所需的间隔创建
    do\u copy

  • 谢谢但我需要换一种方式。需要从外部(目标linux系统)连接pod并从pod中提取文件。谢谢!。我使用用户帐户而不是服务帐户从外部linux机器连接Pod。如何访问令牌?我的意思是,我想在不使用shell脚本中的密码的情况下登录pod。你应该创建一个服务帐户。用户令牌是短期的,服务帐户令牌是长期的。您可以在自己的项目中创建服务帐户。好的,谢谢。我需要在shell脚本中硬编码令牌才能访问pod吗?例如:oc登录——令牌=。没有硬编码的其他方法吗?没有办法避免在某处硬编码令牌(它不必在脚本中)。您可以依赖环境变量,也可以依赖外部密码服务(如Vault)。此外,我相信,一旦你
    oc登录
    到机器上,你就不必每次都
    oc登录
    。因此,如果没有其他人在使用机器执行
    oc登录
    s,那么使用令牌手动
    oc登录
    就足够了。您还可以将
    --token
    直接传递给
    oc rsync
    命令,如果是多用户,则跳过登录步骤。