【问题标题】:Using kubectl to exec a command that passes a string from a file as a flag使用 kubectl 执行将文件中的字符串作为标志传递的命令
【发布时间】:2021-11-18 02:53:22
【问题描述】:

我正在尝试运行以下命令:

kubectl exec vault-1 -- vault operator raft join -leader-ca-cert=`cat "$VAULT_CACERT"` https://vault-0.vault-internal:8200

这里的目标是获取存储在 $VAULT_CACERT(pod 上的变量)路径中的证书文件的内容,并使用 kubectl 将其作为 -leader-ca-cert 传递。当我运行时,我得到 cat: '': No such file or directory,这似乎表明可能正在使用我的本地机器环境。连接到 pod 并以这种方式运行命令确实有效。

我尝试了一些不同的命令,似乎可以找到一种方法来通过 kubectl 实现我想要的。有没有更好的方法以某种方式传递这些数据?

【问题讨论】:

    标签: kubernetes kubectl cat hashicorp-vault


    【解决方案1】:

    如果ENV 在容器内,则不应在 exec 命令中使用反引号。使用单引号来避免本地机器终端上的 shell 扩展。 所以你可以试试下面的方法

    kubectl exec vault-1 -- vault operator raft join -leader-ca-cert='cat "$VAULT_CACERT"' https://vault-0.vault-internal:8200
    

    我测试了类似下面的东西,它似乎对我有用

    kubectl exec demo -- sh -c 'cat "$FILE_PATH"'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多