Spring Boot - чтение переменных среды контейнера в файле свойств - PullRequest
0 голосов
/ 27 мая 2020

Я использую: Spring Boot Microservices (контейнерные) Docker Kubernetes

Мой случай выглядит следующим образом:

Мне нужно сгенерировать ссылку: https://dev-myapp.com ИЛИ https://qa-myapp.com в зависимости от среда, в которой работает моя служба (DEV, QA) В зависимости от среды (DEV, QA). У меня есть один профиль Spring, НО под этим профилем мое приложение может работать в кубернетах в двух типах сред: DEV или QA. Я хочу создать правильную ссылку - прочтите ее из моего файла свойств:

@Value("${email.body}")
  private String emailBody;

application.yaml:

email:
  body: Click on the following URL: ${ENVIRONMENT_URL:}/edge/invitation?code={0}&email={1}

DEVOPS (Kubernetes):

Манифест в рабочих нагрузках папка (ветвь DEV, на этот раз то же самое для гайки ветки qa с https://qa-myapp.com):

apiVersion: v1
kind: Service
...
...
apiVersion: apps/v1
kind: Deployment
...
...
containers:
env:
 - name: ENVIRONMENT_URL
          value: https://dev-myapp.com

Итак, можно ли прочитать это значение из контейнера kubernetes в моем файле свойств Spring ? Я хочу получить свойство email.body в зависимости от контейнера, в котором работает моя служба.

1 Ответ

3 голосов
/ 28 мая 2020

Да, это возможно, и мы исправили синтаксис yaml

apiVersion: v1
kind: Service
...
...
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        command: ["/bin/sh", "-c", "env | grep ENVIRONMENT_URL"]
        env:
        - name: ENVIRONMENT_URL
          value: https://myapp.com. #Indedntation Changed
        ports:
        - containerPort: 80
...