我正在尝试调整基于 Kubernetes 的应用程序,使其对开发更加友好。我kustomize用来将一些额外的容器添加到我的app-deployment. 它看起来像这样:
apiVersion: apps/v1
kind: Deployment
metadata:
name: app-deployment
spec:
template:
spec:
volumes:
- name: php-src
emptyDir: {}
- name: nginx-src
emptyDir: {}
- name: webpack-src
emptyDir: {}
containers:
- name: lsyncd
image: axiom/rsync-server
ports:
- name: sshd
containerPort: 22
- name: rsyncd
containerPort: 873
env:
- name: USERNAME
value: user
- name: PASSWORD
value: pass
volumeMounts:
- name: php-src
mountPath: /data/php
- name: nginx-src
mountPath: /data/nginx
- name: webpack-src
mountPath: /data/webpack
- name: nginx
volumeMounts:
- name: nginx-src
mountPath: /app
- name: php
volumeMounts:
- name: php-src
mountPath: /app
- name: webpack
image: dreg.mpen.ca/kymark/webpack
imagePullPolicy: Never # https://stackoverflow.com/a/54043058/65387
ports:
- name: http
containerPort: 8082
livenessProbe:
httpGet:
port: http
path: /assets/manifest.json
initialDelaySeconds: 20
periodSeconds: 60
command: ['node','--max_old_space_size=20000','node_modules/.bin/webpack-dev-server']
volumeMounts:
- name: webpack-src
mountPath: /app
基本上,我添加了一个新的 rsync 服务器,其中包含 3 个卷,对应于我要上传代码的 3 个不同容器。这部分工作得很好;我可以将我的代码同步到容器中,它会立即显示出来。
/app但是,nginx、PHP 和 webpack 映像在该目录中已经有一些代码(如node_modules和vendor)。当我安装在它的顶部时,它会消失(这是有道理的,因为我正在安装一个emptyDir)。但我想做的是使用覆盖安装,这样我上传的任何代码都将“覆盖”在已经存在的内容之上。
我可以这样做吗?如何?