Я изо всех сил пытаюсь создать два файла конфигурации JSON в главном каталоге приложения (/ publish), оставив все остальные файлы в этом каталоге нетронутыми. Я пробовал следующее:
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
labels:
app: myapp
spec:
replicas: 1
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: url_to_image
ports:
- containerPort: 1234
volumeMounts:
- name: config-files
mountPath: "/publish"
volumes:
- name: config-files
configMap:
name: myapp
---
apiVersion: v1
kind: Service
metadata:
name: myapp
spec:
ports:
- port: 80
targetPort: 1234
protocol: TCP
type: NodePort
selector:
app: myapp
---
kind: ConfigMap
apiVersion: v1
metadata:
name: myapp
labels:
app: myapp
data:
appsettings.json: |
{ some JSON }
sharedsettings.json: |
{ more JSON }
Два файла конфигурации (appsettings.json и sharedsettings.json) созданы правильно, но, к сожалению, все остальные файлы в / publish удаляются в процессе.
Какой был бы лучший подход?
Хорошо, нашел решение, но оно не очень элегантное. Есть ли лучшие решения?
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
labels:
app: myapp
spec:
replicas: 1
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: url_to_image
ports:
- containerPort: 1234
volumeMounts:
- name: appsettings
mountPath: "/publish/appsettings.json"
subPath: whatever
volumeMounts:
- name: sharedsettings
mountPath: "/publish/sharedsettings.json"
subPath: whatever
volumes:
- name: appsettings
configMap:
name: myapp
items:
- key: appsettings.json
path: whatever
- name: sharedsettings
configMap:
name: myapp
items:
- key: sharedsettings.json
path: whatever
---
apiVersion: v1
kind: Service
metadata:
name: myapp
spec:
ports:
- port: 80
targetPort: 1234
protocol: TCP
type: NodePort
selector:
app: myapp
---
kind: ConfigMap
apiVersion: v1
metadata:
name: myapp
labels:
app: myapp
data:
appsettings.json: |
{ some JSON }
sharedsettings.json: |
{ more JSON }