是否可以使用kustomize从env变量中指定卷hostPath?
我有一个Kubernetes清单,它描述了由一个容器组成的部署。在开发过程中,我使用不同的映像(包含dev工具)并将代码从我的主机装载到容器中。这样,我就可以进行代码更改,而不必重新部署。
我使用一个patchStategicMerge来替换生产映像,用我想在开发期间使用的映像,并将代码装入容器中,即
kustomization.yaml
kind: Kustomization
bases:
- ../../base
patchesStrategicMerge:
- my-service.yamlmy-service.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,这样其他开发人员就可以轻松地在他们自己的环境中使用它了。
有可能用库斯托梅斯来做这个吗?
发布于 2020-09-04 16:32:18
创建以下目录结构
首先,我们需要建立基地。基是默认模板,它提供适用于两个人的位元。在k8s/base中,创建一个名为app.yaml的文件并填充以下内容(实际上将您的文件粘贴在这里。您可以在其中放置其他公共比特(也可以用---和新行分隔)。
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: myservice
namespace: default
spec:
strategy:
type: RollingUpdate
replicas: 1
template:
metadata:
labels:
name: myservice
app: myservice
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: /xxx接下来,在同一个目录(k8s/base)中创建另一个名为kustomization.yaml的文件,并填充:
resources:
- app.yaml接下来,我们将创建两个覆盖:一个用于Bob,另一个用于Sue。
在k8s/overlays/bob中,让我们将Bob的自定义更改创建为app.yaml,并填充以下内容:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: myservice
namespace: default
spec:
template:
spec:
volumes:
- name: code
hostPath:
path: /users/bob/code现在,还在k8s/overlays/bob中创建另一个名为kustomization.yaml的文件,其内容如下:
resources:
- ../../base
patchesStrategicMerge:
- app.yaml我们可以将k8s/overlays/bob中的两个文件复制到k8s/overlays/sue目录中,只需更改volumes:位中的路径即可。
接下来,我们需要做一个kustomize build来生成结果版本- bob和sue。
如果k8s目录位于您的代码目录中,则打开终端(安装了Kustomize并运行:
kustomize build k8s/overlays/bob这将向您展示Bob的库口化将是什么样子:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: myservice
namespace: default
spec:
replicas: 1
strategy:
type: RollingUpdate
template:
metadata:
labels:
app: myservice
name: myservice
spec:
containers:
- command:
- CompileDaemon
- --build=make build
- --command=./myservice
image: myservice-dev-image:1.0.0
name: myservice
volumeMounts:
- mountPath: /go/src/app
name: code
volumes:
- hostPath:
path: /users/bob/code
name: code若要应用该方法,您可以运行:
kustomize build k8s/overlays/bob | kubectl apply -f -要应用Sue,可以运行:
kustomize build k8s/overlays/sue| kubectl apply -f -Yaml对空格很敏感,我不确定这是否适用于堆栈溢出式的回答,所以我也使用了Github:https://github.com/just1689/kustomize-local-storage
https://stackoverflow.com/questions/63722885
复制相似问题