Подключение к внешней базе данных из приложения, развернутого в Kubernetes - PullRequest
1 голос
/ 13 апреля 2019

Я развертываю приложение Spring Boot в мини-кубе, которое подключается к базе данных, работающей на хосте.Следуя рекомендациям 12-факторного приложения, я использую переменные среды для необходимой конфигурации:

SPRING_DATASOURCE_DRIVER_CLASS_NAME=org.postgresql.Driver
SPRING_DATASOURCE_PASSWORD=...
SPRING_DATASOURCE_URL=jdbc:postgresql://<HOST_IP_FROM_K8S>:5432/myservice
SPRING_DATASOURCE_USERNAME=...

Документы kubernetes показывают только, как устанавливать переменные среды в файлах службы и развертывания .yaml, чего я не хочу делать,Есть ли способ передать переменные среды в командной строке для minikube или kubectl при создании развертывания?(В Docker я делаю это с -e.)

Обратите внимание, что переменные среды должны быть установлены перед запуском приложения, иначе оно аварийно завершится.

Ответы [ 2 ]

1 голос
/ 18 апреля 2019

Следуя вышеприведенному комментарию Ансила, я использовал configmap и secret для передачи конфигурации следующим образом:

kubectl create secret generic springdatasourcepassword --from-literal=SPRING_DATASOURCE_PASSWORD=postgres
kubectl create secret generic springdatasourceusername --from-literal=SPRING_DATASOURCE_USERNAME=postgres
kubectl create configmap springdatasourcedriverclassname --from-literal=SPRING_DATASOURCE_DRIVER_CLASS_NAME=org.postgresql.Driver
kubectl create configmap springdatasourceurl --from-literal=SPRING_DATASOURCE_URL=jdbc:postgresql://172.18.0.1:5432/bookservice

На них есть ссылки в файле deploy.yaml, например:

env:
- name: GET_HOSTS_FROM
  value: dns
- name: SPRING_DATASOURCE_DRIVER_CLASS_NAME
  valueFrom:
    configMapKeyRef:
      name: springdatasourcedriverclassname
      key: SPRING_DATASOURCE_DRIVER_CLASS_NAME
- name: SPRING_DATASOURCE_URL
  valueFrom:
    configMapKeyRef:
      name: springdatasourceurl
      key: SPRING_DATASOURCE_URL
- name: SPRING_DATASOURCE_PASSWORD
  valueFrom:
    secretKeyRef:
      name: springdatasourcepassword
      key: SPRING_DATASOURCE_PASSWORD
- name: SPRING_DATASOURCE_USERNAME
  valueFrom:
    secretKeyRef:
      name: springdatasourceusername
      key: SPRING_DATASOURCE_USERNAME

Полное объяснение можно найти здесь .

0 голосов
/ 13 апреля 2019

У нас нет прямой опции с подкомандой create в kubectl для передачи переменных среды.

Вы можете использовать Шлем для настройки развертывания.

(Пример: https://docs.bitnami.com/kubernetes/how-to/deploy-java-application-kubernetes-helm/)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...