【发布时间】:2020-09-03 11:39:50
【问题描述】:
是否可以使用 kustomize 从环境变量中指定卷 hostPath?
我有一个 Kubernetes 清单,它描述了由一个容器组成的部署。 在开发过程中,我使用不同的图像(包含开发工具)并将代码从我的主机安装到容器中。这样我就可以更改代码而无需重新部署。
我正在使用 patchStategicMerge 将生产映像替换为我想在开发期间使用的映像,并将代码安装到容器中,即
kustomization.yaml
kind: Kustomization
bases:
- ../../base
patchesStrategicMerge:
- my-service.yaml
我的服务.yaml
---
apiVersion: apps/v1
...
...
spec:
containers:
- name: myservice
image: myservice-dev-image:1.0.0
command: ['CompileDaemon', '--build=make build', '--command=./myservice']
volumeMounts:
- name: code
mountPath: /go/src/app
volumes:
- name: code
hostPath:
path: /source/mycodepath/github.com/myservice
我想做的是通过环境变量使路径可配置,这样我就不必将我的特定路径(/source/mycodepath/)检查到 git 中,以便其他开发人员可以轻松使用在他们自己的环境中。
是否可以使用 kustomize 做到这一点?
【问题讨论】:
-
我不知道如何使用环境变量来做到这一点,但可以定义具有不同路径的覆盖。查看 Kustomize 叠加层。这是一个使用覆盖github.com/kubernetes-sigs/kustomize/tree/master/examples/…
-
我是否正确,您的问题可以简化为“如何将本地路径(从我的笔记本电脑)安装到 pod?” ,另外,你在哪里运行 pod?你是在独立的 k8s 上运行它,还是直接在你的主机/笔记本电脑/PC(minikube 等)上运行它,还是像 GKE、EKS 等一样托管?
-
@Nick 不完全是。我知道如何从我的笔记本电脑安装本地路径。问题出在我的笔记本电脑上,路径可能是 /users/bob/github/somecode,而在同事的笔记本电脑上,路径可能是 /users/sue/github/mycode。如果我使用叠加层,我可以在叠加层中定义我的路径。但我不想将它检查到 git 中。在 docker-compose 中,我们通过使用相对路径来解决这个问题,但这似乎不适用于 k8s
-
@JustinTamblyn 谢谢。我正在使用叠加层。问题是如何创建不同开发人员可以共享的覆盖,而无需修改卷路径。使用变量或相对路径会有所帮助。
-
@CoderJones 我想我明白了。我会把一些东西放在一起作为答案
标签: kubernetes kustomize