Kubernetes - 如何使用pod中目录中的文件?

时间:2018-05-11 20:18:48

标签: docker kubernetes docker-volume kubernetes-helm

我有一个构建器映像/容器,它应该在带有测试源的目录上运行测试。

容器在AWS EKS中的Kubernetes窗格中通过helm test运行。即不是docker,所以我不能简单地使用-v卷装。

我正在努力找到以简单的方式将此目录带到容器的正确方法。这是我拥有的头盔模板。除卷外,所有作品都有效。

apiVersion: v1
kind: Pod
metadata:
  name: "{{ .Release.Name }}-gatling-test"
  annotations:
    "helm.sh/hook": test-success
spec:
  restartPolicy: Never
  containers:
  - name: {{ .Release.Name }}-gatling-test
    image: {{ .Values.builderImage }}
    command: ["sh", "-c", 'mvn -B gatling:test -pl csa-testing -DCSA_SERVER={{ template "project.fullname" . }} -DCSA_PORT={{ .Values.service.appPort }}']
    ## TODO: The builder image also counts with having /tmp/build, so it needs a mount: -v '${job.WORKDIR}:/tmp/build'
    volumeMounts:
    - name: mavenRepoToBuild
      mountPath: /tmp/build
    volumes:
    - name: mavenRepoToBuild
      hostPath:
        path: {{.Values.fromJenkins.WORKDIR}}

我在几个地方看过它不能直接完成。那么间接做到这一点的简单方法是什么?压缩并上传到S3并下载?或者将其作为图层添加到图像中?或者我应该创建Kubernetes卷资源吗?

1 个答案:

答案 0 :(得分:0)

hostPath目录或文件必须存在于所有群集节点上。

您可以在hostPath上附加一些类型以确定其文件或目录。

您可以在主机路径上使用的类型列表可以在kubernetes文档中找到。

https://kubernetes.io/docs/concepts/storage/volumes/

顺便问一下,你得到什么错误?没有权限?您可以执行helm run-run来查看渲染的模板。