将文件从Openshift复制到外部unix计算机
我正在使用rsync(oc-client)每天将文件从openshift-pod复制到外部unix机器,以进行批处理活动。应该使用外部unix机器上的shell脚本自动执行此过程。只是一天的开放式轮班经验将文件从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:/
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上,并且可以在安装过程中直接访问目标机器
:/trigger_to_copy/do_copy
do\u copy
,则启动rsyncdo\u copy
do_copy
时,它可能不存在,并且下次在目标机器上创建文件时将发生rsyncdo\u copy
谢谢但我需要换一种方式。需要从外部(目标linux系统)连接pod并从pod中提取文件。谢谢!。我使用用户帐户而不是服务帐户从外部linux机器连接Pod。如何访问令牌?我的意思是,我想在不使用shell脚本中的密码的情况下登录pod。你应该创建一个服务帐户。用户令牌是短期的,服务帐户令牌是长期的。您可以在自己的项目中创建服务帐户。好的,谢谢。我需要在shell脚本中硬编码令牌才能访问pod吗?例如:oc登录——令牌=。没有硬编码的其他方法吗?没有办法避免在某处硬编码令牌(它不必在脚本中)。您可以依赖环境变量,也可以依赖外部密码服务(如Vault)。此外,我相信,一旦你
oc登录
到机器上,你就不必每次都oc登录
。因此,如果没有其他人在使用机器执行oc登录
s,那么使用令牌手动oc登录
就足够了。您还可以将--token
直接传递给oc rsync
命令,如果是多用户,则跳过登录步骤。