0

我有一个测试过程,它产生一个文件作为输出。

我想在构建期间开始这个测试过程,运行它直到完成,然后收集它生成的文件并将其复制回构建上下文。

在 Kubernetes/Helm 中执行此操作的正确方法是什么?

kubectl构建过程可以访问helmCLI 工具。

我有一个不使用的要求kubectl exec,因为集群设置不允许。

一些细节:

我能够使用Pod.

我设置了将输出文件存储在卷挂载中的过程,该卷挂载被挂载到emptyDir卷上。

我无法弄清楚如何获取输出文件。

我试过kubectl cp了,但我无法让它工作(没有这样的文件或目录)。

我不知道如何检查已停止容器的内容。

我无法弄清楚如何查看卷中的内容。

kubectl logs表明测试过程运行成功。该文件在容器内生成并存储在预期位置。

快速更新:

在我的本地 minikube 环境中,我能够设置一个持久卷并将输出文件复制回主机文件系统。接下来我将在 Jenkins 环境中尝试一下。

这是kubectl cp我的本地(boot2docker)环境的输出:

$ kubectl cp my-pod:/home/node/output . -c mycontainer
error: home/node/output no such file or directory

/home/node/output是容器内的 volumeMount 路径。

4

1 回答 1

1

我要求不要使用 kubectl exec,因为集群设置不允许。

如果没有kubectl exec命令,我可以建议这样做:

  1. 将测试作为集群内的作业运行。
  2. 使用 NFS 或 SMB 等共享卷来存储您的文件。
  3. 从共享卷中获取文件,您可以将其挂载到构建系统。

此外,许多构建系统都有 Artifacts 存储,它可能是存储测试结果的最佳选择。

于 2018-05-18T10:13:45.740 回答