Статьи

Настройка источников данных Open Liberty через секреты Kubernetes

В Open Liberty настройка учетных данных источника данных обычно выполняется в файле server.xml . Если мы используем контейнеры и оркестровку контейнеров, мы в идеале используем инфраструктуру как код и храним всю конфигурацию под контролем версий. Однако это, безусловно, нежелательно для этих учетных данных источника данных. По этой причине секретные определения Kubernetes позволяют нам отдельно хранить секретные значения, которые не должны быть видны всем в наших кластерах.

В Open Liberty мы можем определить необязательный файл bootstrap.properties который определяет свойства, которые считываются до конфигурации server.xml и, таким образом, могут влиять на поведение конфигурации. Мы используем этот файл, чтобы определить учетные данные для нашего источника данных:

1
2
coffee-shop.db.username=postgres
coffee-shop.db.password=postgres

Однако этот файл не будет включен в наш образ Docker, а будет внедрен в контейнер во время выполнения, например, по секретам Kubernetes.

На эти свойства можно ссылаться в нашем файле server.xml :

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="UTF-8"?>
<server description="Java EE 8 Server">
 
  ...
 
  <dataSource id="DefaultDataSource" jdbcDriverRef="postgresql-driver"
      type="javax.sql.ConnectionPoolDataSource" transactional="true">
 
    <properties serverName="coffee-shop-db" portNumber="5432"
        databaseName="postgres"
        user="${coffee-shop.db.username}"
        password="${coffee-shop.db.password}"/>
 
  </dataSource>
 
  ...
 
</server>

Чтобы bootstrap.properties файл bootstrap.properties в наш работающий контейнер, мы определяем том развертывания, который заполняется из секрета Kubernetes:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
kind: Deployment
apiVersion: apps/v1beta1
metadata:
  name: coffee-shop
spec:
# ...
      containers:
      - name: coffee-shop
        image: ...
        volumeMounts:
        - name: database-credentials-volume
          mountPath: /opt/wlp/usr/servers/defaultServer/bootstrap.properties
          subPath: bootstrap.properties
          readOnly: true
      volumes:
      - name: database-credentials-volume
        secret:
          secretName: database-credentials

Это требует секретных database-credentials Kubernetes, которые содержат содержимое файла bootstrap.properties под тем же именем ключа. Затем свойства загружаются из файла начальной загрузки во время запуска сервера.

Для получения дополнительной информации о конфигурации Open Liberty ознакомьтесь с документацией .

Опубликовано на Java Code Geeks с разрешения Себастьяна Дашнера, партнера нашей программы JCG. См. Оригинальную статью здесь: Настройка открытых источников данных Liberty через секреты Kubernetes.

Мнения, высказанные участниками Java Code Geeks, являются их собственными.