Kubernetes容器参数行为不正确



我想使用Kubernetes和postman/newmanDocker镜像来执行我的API测试。

在本地,我可以用

执行图像

docker run postman/newman run——env-var baseUrl = & lt; local-hostname>

我在Kubernetes manifest文件中包含了Image

spec:
containers:
- name: newman
image: postman/newman:latest
args:
- run
- '<url-to-collection>'
- --env-var baseUrl=<kubernetes-hostname>

当我应用清单并查看容器的日志时,我得到以下错误:

error: unknown option '--global-var baseUrl=<kubernetes-hostname>'

我用引号尝试了很多东西,并使用command部分而不是args部分,但总是得到相同的结果。我认为Kubernetes以某种方式构建命令,newman可执行文件无法理解它。然而,我找不到任何有关的信息。

(我还在GitHub的Newman仓库中创建了一个问题)

有谁能告诉我这个问题是从哪里来的,我该如何解决这个问题?

谢谢不管怎样!

Linux命令由一系列单词组成。如果你在shell提示符下输入一个命令,它会负责为你把它分割成单词,但是在Kubernetesargs:列表中,你需要自己把单词分割出来。

args:
- run
- '<url-to-collection>'
# You want these as two separate arguments, so they need to be
# two separate list items
- --env-var
- baseUrl=<kubernetes-hostname>

如果两个参数在同一个列表项中,它们是一个"word"

# /bin/ls "/app/some directory/some file"
command:
- /bin/ls
# a single argument, including embedded spaces
- /app/some directory/some file

同样的基本规则适用于Docker Composeentrypoint:command:以及json语法的DockerfileENTRYPOINTCMD指令,除了Docker本地形式也接受一个普通字符串,它们将在空格上分割(在Dockerfile的情况下使用shell,而不是在Compose的情况下)。

在您提供的docker run命令中,主机系统上的shell首先处理它,因此--env-var选项和baseUrl=...参数在传递到容器之前被分割成单独的单词。

相关内容

  • 没有找到相关文章

最新更新