Skip to content
This repository was archived by the owner on Jun 29, 2023. It is now read-only.

Commit ba32bd6

Browse files
committed
CB-18277 introduce init container that initialize NSS DB for Java based services
1 parent b77cf92 commit ba32bd6

14 files changed

+85
-8
lines changed

README.md

+19
Original file line numberDiff line numberDiff line change
@@ -90,3 +90,22 @@ Once the PR is merged, CircleCI will build it:
9090
* Create a new release on [GitHub releases tab](https://github.com/hortonworks/cloudbreak-deployer/releases), with the
9191
help of [gh-release](https://github.com/progrium/gh-release).
9292
* Create the git tag with `v` prefix like: `v0.0.3`.
93+
94+
### Configuring trusted certificates for the Java based services of Clodbreak Deployer Tool
95+
If an external database(RDS for example) for Cloudbreak's Java based services and enable `SSL` verification are needed, CBD started to support loading certificates from the `certs/into-nssdb/` directory of your deployment.
96+
97+
This means that certificates from the `certs/into-nssdb/` will be loaded to an `NSS DB` instance by a new Java init container and Java based services will get this `NSS DB` on a shared volume and use it as the default trust/key-store.
98+
99+
**The following `Profile` file snippet is an example of how `SSL` could be configured for the Environment and FreeIPA services**
100+
```
101+
export ENVIRONMENT_JAVA_OPTS='-Denvironment.db.env.ssl="true"'
102+
export ENVIRONMENT_DB_ENV_USER="postgres"
103+
export ENVIRONMENT_DB_ENV_DB="environmentdb"
104+
export ENVIRONMENT_DB_ENV_PASS="..."
105+
export ENVIRONMENT_DB_HOST="tb-.....cwuvxwrz4ivx.eu-central-1.rds.amazonaws.com"
106+
107+
export FREEIPA_DB_ENV_USER="postgres"
108+
export FREEIPA_DB_ENV_DB="freeipadb"
109+
export FREEIPA_DB_ENV_PASS="..."
110+
export FREEIPA_DB_ADDR="tb-....cwuvxwrz4ivx.eu-central-1.rds.amazonaws.com"
111+
export FREEIPA_JAVA_OPTS='-Dfreeipa.db.env.ssl="true"'

compose.go

+1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ func GenerateComposeYaml(args []string) {
3333
if dataMap["THUNDERHEAD_MOCK"] == "true" {
3434
insertIntoTemplateIfNotLocal(t, localDevList, "thunderhead-mock")
3535
}
36+
insertIntoTemplate(t, "nssdb-init")
3637
insertIntoTemplateIfNotLocal(t, localDevList, "core-gateway")
3738
insertIntoTemplateIfNotLocal(t, localDevList, "cadence")
3839
insertIntoTemplateIfNotLocal(t, localDevList, "cluster-proxy")

include/cloudbreak.bash

+10
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ cloudbreak-conf-tags() {
8686
env-import DOCKER_TAG_CLUSTER_PROXY_HEALTH_CHECK_WORKER 3.0.0-b59
8787
env-import DOCKER_TAG_CADENCE 0.24.0-auto-setup
8888
env-import DOCKER_TAG_CADENCE_WEB 1.0.0-b24
89+
env-import DOCKER_TAG_JAVA_NSSDB_INIT 1.0.0-b10108
8990

9091
env-import DOCKER_IMAGE_THUNDERHEAD_MOCK docker-private.infra.cloudera.com/cloudera/cloudbreak-mock-thunderhead
9192
env-import DOCKER_IMAGE_MOCK_INFRASTRUCTURE docker-private.infra.cloudera.com/cloudera/cloudbreak-mock-infrastructure
@@ -112,6 +113,7 @@ cloudbreak-conf-tags() {
112113
env-import DOCKER_IMAGE_CLUSTER_PROXY_HEALTH_CHECK_WORKER docker-private.infra.cloudera.com/cloudera/cloud/cluster-proxy
113114
env-import DOCKER_IMAGE_CADENCE ubercadence/server
114115
env-import DOCKER_IMAGE_CADENCE_WEB docker-private.infra.cloudera.com/cloudera/cadence-web
116+
env-import DOCKER_IMAGE_JAVA_NSSDB_INIT docker-private.infra.cloudera.com/cloudera/thunderhead-java-init-container-11
115117

116118
env-import CB_DEFAULT_SUBSCRIPTION_ADDRESS http://uluwatu:3000/notifications
117119
}
@@ -146,42 +148,50 @@ cloudbreak-conf-db() {
146148
env-import CB_DB_ENV_PASS ""
147149
env-import CB_DB_ENV_SCHEMA "public"
148150
env-import CB_HBM2DDL_STRATEGY "validate"
151+
env-import CB_DB_PORT_5432_TCP_ADDR "$COMMON_DB"
149152

150153
env-import PERISCOPE_DB_ENV_USER "postgres"
151154
env-import PERISCOPE_DB_ENV_DB "periscopedb"
152155
env-import PERISCOPE_DB_ENV_PASS ""
153156
env-import PERISCOPE_DB_ENV_SCHEMA "public"
154157
env-import PERISCOPE_HBM2DDL_STRATEGY "validate"
158+
env-import PERISCOPE_DB_PORT_5432_TCP_ADDR "$COMMON_DB"
155159

156160
env-import CONSUMPTION_DB_ENV_USER "postgres"
157161
env-import CONSUMPTION_DB_ENV_DB "consumptiondb"
158162
env-import CONSUMPTION_DB_ENV_PASS ""
159163
env-import CONSUMPTION_DB_ENV_SCHEMA "public"
160164
env-import CONSUMPTION_HBM2DDL_STRATEGY "validate"
165+
env-import CONSUMPTION_DB_HOST "$COMMON_DB"
161166

162167
env-import DATALAKE_DB_ENV_USER "postgres"
163168
env-import DATALAKE_DB_ENV_DB "datalakedb"
164169
env-import DATALAKE_DB_ENV_PASS ""
165170
env-import DATALAKE_DB_ENV_SCHEMA "public"
166171
env-import DATALAKE_HBM2DDL_STRATEGY "validate"
172+
env-import DATALAKE_DB_PORT_5432_TCP_ADDR "$COMMON_DB"
173+
167174

168175
env-import REDBEAMS_DB_ENV_USER "postgres"
169176
env-import REDBEAMS_DB_ENV_DB "redbeamsdb"
170177
env-import REDBEAMS_DB_ENV_PASS ""
171178
env-import REDBEAMS_DB_ENV_SCHEMA "public"
172179
env-import REDBEAMS_HBM2DDL_STRATEGY "validate"
180+
env-import REDBEAMS_DB_PORT_5432_TCP_ADDR "$COMMON_DB"
173181

174182
env-import ENVIRONMENT_DB_ENV_USER "postgres"
175183
env-import ENVIRONMENT_DB_ENV_DB "environmentdb"
176184
env-import ENVIRONMENT_DB_ENV_PASS ""
177185
env-import ENVIRONMENT_DB_ENV_SCHEMA "public"
178186
env-import ENVIRONMENT_HBM2DDL_STRATEGY "validate"
187+
env-import ENVIRONMENT_DB_HOST "$COMMON_DB"
179188

180189
env-import FREEIPA_DB_ENV_USER "postgres"
181190
env-import FREEIPA_DB_ENV_DB "freeipadb"
182191
env-import FREEIPA_DB_ENV_PASS ""
183192
env-import FREEIPA_DB_ENV_SCHEMA "public"
184193
env-import FREEIPA_HBM2DDL_STRATEGY "validate"
194+
env-import FREEIPA_DB_ADDR "$COMMON_DB"
185195

186196
env-import IDBMMS_DB_ENV_USER "postgres"
187197
env-import IDBMMS_DB_ENV_DB "idbmmsdb"

include/compose.bash

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
compose-init() {
2-
local required_compose=1.27.2
2+
local required_compose=1.29.1
33
local compose_version=$(docker-compose --version 2>&1 | grep -E -o "([0-9]+\.)+[0-9]+")
44

55
local compare_result=$(compare-versions ${compose_version} ${required_compose})

include/env.bash

+2
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@ DOCKER_IMAGE_CLOUDBREAK_WEB - Web UI Docker image name
177177
DOCKER_IMAGE_ENVIRONMENTS2_API - Environments2 API Docker image name
178178
DOCKER_IMAGE_IDBMMS - IDBMMS Docker image name
179179
DOCKER_IMAGE_WORKLOADIAM - WorkloadIam Docker image name
180+
DOCKER_IMAGE_JAVA_NSSDB_INIT - Java init container image name that initializes the NSS DB for java based services
180181
DOCKER_TAG_AUDIT - Audit Service container version
181182
DOCKER_TAG_ALPINE - Alpine container version
182183
DOCKER_TAG_CBD_SMARTSENSE - SmartSense container version
@@ -197,6 +198,7 @@ DOCKER_TAG_FREEIPA - FreeIpa container version
197198
DOCKER_TAG_POSTGRES - Postgresql container version
198199
DOCKER_TAG_TRAEFIK - Traefik container version
199200
DOCKER_TAG_ULUWATU - Web UI container version
201+
DOCKER_TAG_JAVA_NSSDB_INIT - Java init container image version that initializes the NSS DB for java based services
200202
DOCKER_STOP_TIMEOUT - Specify a shutdown timeout in seconds for containers
201203
HTTP_PROXY_HOST - HTTP proxy address
202204
HTTPS_PROXY_HOST - HTTPS proxy address

templates/compose-cloudbreak.tmpl

+5-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
- "ENDPOINTS_BEANS_ENABLED=false"
3434
- "ENDPOINTS_ENV_ENABLED=false"
3535
- "CB_ADDRESS_RESOLVING_TIMEOUT"
36-
- "CB_DB_PORT_5432_TCP_ADDR={{{get . "COMMON_DB"}}}"
36+
- "CB_DB_PORT_5432_TCP_ADDR={{{get . "CB_DB_PORT_5432_TCP_ADDR"}}}"
3737
- "CB_DB_PORT_5432_TCP_PORT=5432"
3838
- CB_DB_ENV_USER
3939
- CB_DB_ENV_PASS
@@ -127,6 +127,10 @@
127127
- /dev/urandom:/dev/random
128128
- ./logs/cloudbreak:/cloudbreak-log
129129
- ./etc/:/etc/cloudbreak
130+
- nssdb-init:/etc/pki/nssdb
131+
depends_on:
132+
nssdb-init-svc:
133+
condition: service_completed_successfully
130134
networks:
131135
- {{{get . "DOCKER_NETWORK_NAME"}}}
132136
logging:

templates/compose-consumption.tmpl

+5-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
- REST_DEBUG
88
- 'CONSUMPTION_JAVA_OPTS={{{getEscaped . "CONSUMPTION_JAVA_OPTS"}}}'
99
- CONSUMPTION_HBM2DDL_STRATEGY
10-
- "CONSUMPTION_DB_HOST={{{get . "COMMON_DB"}}}"
10+
- "CONSUMPTION_DB_HOST={{{get . "CONSUMPTION_DB_HOST"}}}"
1111
- "CONSUMPTION_DB_PORT=5432"
1212
- CONSUMPTION_DB_ENV_USER
1313
- CONSUMPTION_DB_ENV_PASS
@@ -47,6 +47,10 @@
4747
- /dev/urandom:/dev/random
4848
- ./logs/consumption:/consumption-log
4949
- ./etc/:/etc/consumption
50+
- nssdb-init:/etc/pki/nssdb
51+
depends_on:
52+
nssdb-init-svc:
53+
condition: service_completed_successfully
5054
networks:
5155
- {{{get . "DOCKER_NETWORK_NAME"}}}
5256
logging:

templates/compose-datalake.tmpl

+5-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
- REST_DEBUG
88
- 'DATALAKE_JAVA_OPTS={{{getEscaped . "DATALAKE_JAVA_OPTS"}}}'
99
- DATALAKE_HBM2DDL_STRATEGY
10-
- "DATALAKE_DB_PORT_5432_TCP_ADDR={{{get . "COMMON_DB"}}}"
10+
- "DATALAKE_DB_PORT_5432_TCP_ADDR={{{get . "DATALAKE_DB_PORT_5432_TCP_ADDR"}}}"
1111
- "DATALAKE_DB_PORT_5432_TCP_PORT=5432"
1212
- DATALAKE_DB_ENV_USER
1313
- DATALAKE_DB_ENV_PASS
@@ -57,6 +57,10 @@
5757
- /dev/urandom:/dev/random
5858
- ./logs/datalake:/datalake-log
5959
- ./etc/:/etc/datalake
60+
- nssdb-init:/etc/pki/nssdb
61+
depends_on:
62+
nssdb-init-svc:
63+
condition: service_completed_successfully
6064
networks:
6165
- {{{get . "DOCKER_NETWORK_NAME"}}}
6266
logging:

templates/compose-environment.tmpl

+5-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
- REST_DEBUG
1414
- 'ENVIRONMENT_JAVA_OPTS={{{getEscaped . "ENVIRONMENT_JAVA_OPTS"}}}'
1515
- ENVIRONMENT_HBM2DDL_STRATEGY
16-
- "ENVIRONMENT_DB_HOST={{{get . "COMMON_DB"}}}"
16+
- "ENVIRONMENT_DB_HOST={{{get . "ENVIRONMENT_DB_HOST"}}}"
1717
- "ENVIRONMENT_DB_PORT=5432"
1818
- ENVIRONMENT_DB_ENV_USER
1919
- ENVIRONMENT_DB_ENV_PASS
@@ -69,6 +69,10 @@
6969
- /dev/urandom:/dev/random
7070
- ./logs/environment:/environment-log
7171
- ./etc/:/etc/environment-service
72+
- nssdb-init:/etc/pki/nssdb
73+
depends_on:
74+
nssdb-init-svc:
75+
condition: service_completed_successfully
7276
networks:
7377
- {{{get . "DOCKER_NETWORK_NAME"}}}
7478
logging:

templates/compose-freeipa.tmpl

+5-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
- REST_DEBUG
1818
- 'FREEIPA_JAVA_OPTS={{{getEscaped . "FREEIPA_JAVA_OPTS"}}}'
1919
- FREEIPA_HBM2DDL_STRATEGY
20-
- "FREEIPA_DB_ADDR={{{get . "COMMON_DB"}}}"
20+
- "FREEIPA_DB_ADDR={{{get . "FREEIPA_DB_ADDR"}}}"
2121
- "FREEIPA_DB_PORT=5432"
2222
- FREEIPA_DB_ENV_USER
2323
- FREEIPA_DB_ENV_PASS
@@ -70,6 +70,10 @@
7070
- /dev/urandom:/dev/random
7171
- ./logs/freeipa:/freeipa-log
7272
- ./etc/:/etc/freeipa
73+
- nssdb-init:/etc/pki/nssdb
74+
depends_on:
75+
nssdb-init-svc:
76+
condition: service_completed_successfully
7377
networks:
7478
- {{{get . "DOCKER_NETWORK_NAME"}}}
7579
logging:

templates/compose-main.tmpl

+2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
version: '3'
22
volumes:
33
{{{get . "COMMON_DB_VOL"}}}:
4+
nssdb-init:
45
networks:
56
{{{get . "DOCKER_NETWORK_NAME"}}}:
67
driver: bridge
@@ -118,6 +119,7 @@ services:
118119
memory: 1024M
119120
cpus: 1.0
120121
{{{- block "cb-traefik" .}}}{{{end}}}
122+
{{{- block "nssdb-init" .}}}{{{end}}}
121123
{{{- block "thunderhead-mock" .}}}{{{end}}}
122124
{{{- block "mock-infrastructure" .}}}{{{end}}}
123125
{{{- block "core-gateway" .}}}{{{end}}}

templates/compose-nssdb-init.tmpl

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{{{define "nssdb-init"}}}
2+
nssdb-init-svc:
3+
image: {{{get . "DOCKER_IMAGE_JAVA_NSSDB_INIT"}}}:{{{get . "DOCKER_TAG_JAVA_NSSDB_INIT"}}}
4+
volumes:
5+
- nssdb-init:/mounted/nssdb
6+
- ./certs/into-nssdb/:/usr/local/share/ca-certificates/into-nssdb/
7+
networks:
8+
- default
9+
command: /usr/local/share/ca-certificates/into-nssdb/
10+
deploy:
11+
resources:
12+
limits:
13+
memory: 256M
14+
cpus: 1.0
15+
{{{end}}}

templates/compose-periscope.tmpl

+5-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
- http_proxy={{{get . "HTTP_PROXY"}}}
55
- https_proxy={{{get . "HTTPS_PROXY"}}}
66
- PERISCOPE_HBM2DDL_STRATEGY
7-
- "PERISCOPE_DB_PORT_5432_TCP_ADDR={{{get . "COMMON_DB"}}}"
7+
- "PERISCOPE_DB_PORT_5432_TCP_ADDR={{{get . "PERISCOPE_DB_PORT_5432_TCP_ADDR"}}}"
88
- "PERISCOPE_DB_PORT_5432_TCP_PORT=5432"
99
- PERISCOPE_DB_ENV_USER
1010
- PERISCOPE_DB_ENV_PASS
@@ -54,6 +54,10 @@
5454
- "{{{get . "CBD_CERT_ROOT_PATH"}}}:/certs"
5555
- ./logs/autoscale:/autoscale-log
5656
- /dev/urandom:/dev/random
57+
- nssdb-init:/etc/pki/nssdb
58+
depends_on:
59+
nssdb-init-svc:
60+
condition: service_completed_successfully
5761
networks:
5862
- {{{get . "DOCKER_NETWORK_NAME"}}}
5963
logging:

templates/compose-redbeams.tmpl

+5-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
- REST_DEBUG
1414
- 'REDBEAMS_JAVA_OPTS={{{getEscaped . "REDBEAMS_JAVA_OPTS"}}}'
1515
- REDBEAMS_HBM2DDL_STRATEGY
16-
- "REDBEAMS_DB_PORT_5432_TCP_ADDR={{{get . "COMMON_DB"}}}"
16+
- "REDBEAMS_DB_PORT_5432_TCP_ADDR={{{get . "REDBEAMS_DB_PORT_5432_TCP_ADDR"}}}"
1717
- "REDBEAMS_DB_PORT_5432_TCP_PORT=5432"
1818
- REDBEAMS_DB_ENV_USER
1919
- REDBEAMS_DB_ENV_PASS
@@ -54,6 +54,10 @@
5454
- /dev/urandom:/dev/random
5555
- ./logs/redbeams:/redbeams-log
5656
- ./etc/:/etc/redbeams
57+
- nssdb-init:/etc/pki/nssdb
58+
depends_on:
59+
nssdb-init-svc:
60+
condition: service_completed_successfully
5761
networks:
5862
- {{{get . "DOCKER_NETWORK_NAME"}}}
5963
logging:

0 commit comments

Comments
 (0)