使用deployment.yaml将文件复制到kubernetes pod

时间:2020-04-11 16:18:12

标签: docker kubernetes

我有使用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内部的卷中?

1 个答案:

答案 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