我有使用Java构建的容器化微服务。该应用程序在搜索属性文件时使用默认的/ config-volume目录。以前,我是使用Dockerfiles手动部署的,现在我希望使用Kubernetes来自动化此过程。容器映像立即启动微服务,因此我需要立即将添加属性添加到config-volume文件夹。我是通过这个简单的Dockerfile在Docker中完成的
FROM ########.amazon.ecr.url.us-north-1.amazonaws.com/company/image-name:1.0.0
RUN mkdir /config-volume
COPY path/to/my.properties /config-volume
我正试图在kubernetes部署.yaml中复制这种类型的行为,但我找不到任何方法。
我尝试在应用部署后立即执行kubectl cp
命令,该命令有时可以工作,但是它会导致竞争,导致微服务在启动时失败。
(我已删除了不必要的部分)
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-service
spec:
replicas: 1
template:
spec:
containers:
- env:
image: ########.amazon.ecr.url.us-north-1.amazonaws.com/company/image-name:1.0.0
name: my-service
ports:
- containerPort: 8080
volumeMounts:
- mountPath: /config-volume
name: config-volume
volumes:
- name: config-volume
emptyDir: {}
status: {}
是否可以将文件复制到Deployment.yaml内部的卷中?
答案 0 :(得分:2)
您正在尝试使用卷模拟ConfigMap
。而是将您的配置放入ConfigMap
中,然后将其安装到部署中。文档在那里:
https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/
将您的配置配置为ConfigMap
后,请使用以下方式进行安装:
...
containers:
- name: mycontainer
volumeMounts:
- name: config-volume
mountPath: /config-volume
volumes:
- name: config-volume
configMap:
name: nameOfConfigMap