Перейти к содержанию

Параметры и секреты

Параметры интеграции

Адреса, имена очередей и другие настройки задавайте в конце application.properties, а в маршрутах ссылайтесь на них как {{my.param}}:

events.topic=incoming.events
- to:
    uri: kafka
    parameters:
      topic: "{{events.topic}}"

Секреты

Пароли и токены не храните в application.properties: файлы проекта попадают в git. Создайте секрет Kubernetes в namespace платформы:

apiVersion: v1
kind: Secret
metadata:
  name: integration-db
type: Opaque
stringData:
  DB_URL: "jdbc:postgresql://db.example.local:5432/integration"
  DB_USERNAME: "integration_user"
  DB_PASSWORD: "<пароль>"
kubectl -n <namespace> apply -f integration-db-secret.yaml

Файл с заполненным секретом не кладите в репозиторий интеграций.

Подключите секрет как переменные окружения в deployment.jkube.yaml. Остальные поля контейнера из шаблона (порты, пробы, переменные OpenTelemetry) сохраните:

spec:
  template:
    spec:
      containers:
        - env:
            - name: DB_URL
              valueFrom:
                secretKeyRef:
                  name: integration-db
                  key: DB_URL
            - name: DB_USERNAME
              valueFrom:
                secretKeyRef:
                  name: integration-db
                  key: DB_USERNAME
            - name: DB_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: integration-db
                  key: DB_PASSWORD

В маршрутах и бинах переменная окружения читается так: {{env:DB_URL}}.

- beans:
    - name: default
      type: org.apache.commons.dbcp2.BasicDataSource
      properties:
        url: '{{env:DB_URL}}'
        username: '{{env:DB_USERNAME}}'
        password: '{{env:DB_PASSWORD}}'
        driverClassName: org.postgresql.Driver

Для бина нужны зависимости camel-sql, commons-dbcp2 и драйвер PostgreSQL, пример есть в разделе Зависимости.

deployment.jkube.yaml используется и при развертывании, и в dev-режиме, поэтому секреты доступны интеграции в обоих случаях. Переменные окружения читаются при старте пода: после изменения секрета перезапустите интеграцию.