В 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, являются их собственными. |