Как создать образ с помощью Configmap

Я пытаюсь упростить процесс развертывания. В настоящее время мы создаем файл jar для нашего приложения Spring Boot, а затем создаем образ со следующим файлом DockerFile.

FROM [DTRServer]/java/javaimage_mmddyyyy:8
EXPOSE 8080
COPY /conf/myapp-conf.yaml /etc/k8t/myapp-conf.yaml
ADD target/myapp_mmddyyyy.jar myapp.jar
ENTRYPOINT ["java", "-jar", "myapp.jar", "--spring.config.location=/etc/k8t/myapp-conf.yaml"]

В нашем k8t мы создаем Configmap (app-config). Итак, наш файл deployment.yaml похож на

      containers:
        - image: [DTRServer]/projectname/myappimage:0.2.4-43
          imagePullPolicy: Always
          name: myapp
          ports:
            - containerPort: 8080
          volumeMounts:
            - name: myapp-conf
              mountPath: /etc/k8t/
      volumes:
        - name: myapp-conf
          configMap:
            name: myapp-conf

Почему мне нужно указывать spring.config.location в Dockerfile при сборке? Мы собираемся использовать Configmap. Поэтому я удалил информацию о конфигурационном файле из Dockerfile и deployment.yaml.

FROM [DTRServer]/java/javaimage_mmddyyyy:8
EXPOSE 8080
ADD target/myapp_mmddyyyy.jar myapp.jar
ENTRYPOINT ["java", "-jar", "myapp.jar"]
      containers:
        - image: [DTRServer]/projectname/myappimage:0.2.4-43
          imagePullPolicy: Always
          name: myapp
          ports:
            - containerPort: 8080
      volumes:
        - name: myapp-conf
          configMap:
            name: myapp-conf

Тогда поду это не нравится. Он жалуется, что не может найти значения конфигурации. Как создать образ без информации о конфигурации и запустить модуль с помощью Configmap?


person sapmp 1155    schedule 14.01.2021    source источник


Ответы (1)


Spring Boot 2.4 поддержку дерева конфигурации можно использовать вместе с Kubernetes ConfigMaps. Если вы хотите, чтобы несколько файлов были загружены из смонтированного каталога, чтобы имя файла было ключом, а содержимое стало значением, необходимо использовать префикс configtree:. Раздел volumeMounts по-прежнему должен присутствовать в разделе deployment.yml, чтобы указать, куда следует смонтировать данные ConfigMap. deployment.yml будет выглядеть примерно так:

  containers:
    - image: [DTRServer]/projectname/myappimage:0.2.4-43
      imagePullPolicy: Always
      name: myapp
      ports:
        - containerPort: 8080
      volumeMounts:
        - name: myapp-conf
          mountPath: /etc/k8t/
      env:
        - name: SPRING_CONFIG_IMPORT
          value: configtree:/etc/k8t/
  volumes:
    - name: myapp-conf
      configMap:
        name: myapp-conf
person Madhura Bhave    schedule 14.01.2021