创建以下目录结构
- k8s
- k8s/基础
- k8s/叠加层
- k8s/覆盖/鲍勃
- k8s/覆盖/起诉
首先,我们需要创建基础。基础是默认模板,它提供适用于两个人的位。在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:
位中的路径即可。
接下来我们需要执行 akustomize build
来生成结果版本 - bob and 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 对空间很敏感,我不确定这在 Stackoverflow 答案中是否会很好,所以我也放在了 Github 上:https ://github.com/just1689/kustomize-local-storage