Skip to content

Commit 4af4e16

Browse files
authored
feat(beamdev): add option to start beam cert manager (#243)
Also generate CSRs for testing in beamdev
1 parent b43d8a1 commit 4af4e16

File tree

3 files changed

+52
-10
lines changed

3 files changed

+52
-10
lines changed

dev/beamdev

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ function stop {
167167
}
168168

169169
function clean {
170-
docker compose down
170+
docker compose --profile "*" down
171171
rm -fv pki/*.pem pki/*.json pki/pki.secret
172172
pki/pki clean
173173
}
@@ -275,6 +275,14 @@ case "$1" in
275275
shift
276276
start_bg $@
277277
;;
278+
start_cert_manager)
279+
shift
280+
clean
281+
pki/pki devsetup
282+
echo "$VAULT_TOKEN" > ./pki/pki.secret
283+
build $@
284+
docker compose --profile "cert-manager" up --no-build --no-recreate
285+
;;
278286
restart)
279287
shift
280288
build $@
@@ -296,6 +304,6 @@ case "$1" in
296304
defaults
297305
;;
298306
*)
299-
echo "Usage: $0 [--tag SOMETAG, e.g. develop, to use an existing image] build|start|start_bg|restart|stop|clean|defaults|demo|noop"
307+
echo "Usage: $0 [--tag SOMETAG, e.g. develop, to use an existing image] build|start|start_bg|start_cert_manager|restart|stop|clean|defaults|demo|noop"
300308
;;
301309
esac

dev/docker-compose.yml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,43 @@ services:
8686
secrets:
8787
- proxy2.pem
8888
- root.crt.pem
89+
90+
mailhog:
91+
image: mailhog/mailhog
92+
ports:
93+
- "1025:1025" # SMTP port
94+
- "8025:8025" # Web UI
95+
profiles:
96+
- cert-manager
97+
98+
cert-ui:
99+
image: samply/beam-cert-manager
100+
ports:
101+
- 8000:8000
102+
- 3000:3000
103+
environment:
104+
BROKER_URL: http://broker:8080
105+
VAULT_URL: http://vault:8200
106+
CSR_DIR: /pki
107+
SMTP_URL: smtp://mailhog:1025
108+
DB_DIR: /pki/db
109+
BROKER_MONITORING_KEY: ${BROKER_MONITORING_KEY}
110+
PKI_DEFAULT_ROLE: hd-dot-dktk-dot-com
111+
PUBLIC_BASE_URL: http://localhost:3000
112+
ADMIN_ADDR: 0.0.0.0:8000
113+
BROKER_ID: broker
114+
RUST_LOG: ${RUST_LOG}
115+
volumes:
116+
- ./pki:/pki
117+
secrets:
118+
- pki.secret
119+
depends_on:
120+
- vault
121+
- broker
122+
- mailhog
123+
profiles:
124+
- cert-manager
125+
89126
secrets:
90127
pki.secret:
91128
file: ./pki/pki.secret

dev/pki/pki

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ function start() {
1717
}
1818

1919
function clean() {
20-
rm -vf *.pem *.json *.secret
20+
rm -vf *.pem *.json *.secret *.csr
2121
docker compose down
2222
}
2323

@@ -95,17 +95,14 @@ function request() {
9595
application=$1
9696
cn=$2
9797
ttl=$3
98-
data="{\"common_name\": \"$cn\", \"ttl\": \"$ttl\"}"
99-
echo $data
98+
openssl req -new -newkey rsa:2048 -nodes -keyout ${application}.priv.pem -out ${application}.csr -subj "/CN=${cn}" 2>/dev/null
99+
data=$(jq -Rs '{common_name: "'$cn'", ttl: "'$ttl'", csr: .}' < ${application}.csr)
100100
echo "Creating Certificate for domain $cn"
101101
curl --header "X-Vault-Token: $VAULT_TOKEN" \
102102
--request POST \
103103
--data "$data" \
104104
--no-progress-meter \
105-
$VAULT_ADDR/v1/samply_pki/issue/hd-dot-dktk-dot-com | jq > ${application}.json
106-
cat ${application}.json | jq -r .data.certificate > ${application}.crt.pem
107-
cat ${application}.json | jq -r .data.ca_chain[] > ${application}.chain.pem
108-
cat ${application}.json | jq -r .data.private_key > ${application}.priv.pem
105+
$VAULT_ADDR/v1/samply_pki/sign/hd-dot-dktk-dot-com | jq > ${application}.json
109106
echo "Success: PEM files stored to ${application}*.pem"
110107
}
111108

@@ -118,7 +115,7 @@ function setup() {
118115
#touch root.crt.pem # see https://github.com/docker/compose/issues/8305
119116
start
120117
while ! [ "$(curl -s $VAULT_ADDR/v1/sys/health | jq -r .sealed)" == "false" ]; do echo "Waiting ..."; sleep 0.1; done
121-
docker compose exec -T vault sh -c "https_proxy=$http_proxy apk add --no-cache bash curl jq"
118+
docker compose exec -T vault sh -c "https_proxy=$http_proxy apk add --no-cache bash curl jq openssl"
122119
docker compose exec -T vault sh -c "VAULT_TOKEN=$VAULT_TOKEN http_proxy= HTTP_PROXY= PROXY1_ID=$PROXY1_ID PROXY2_ID=$PROXY2_ID /pki/pki init"
123120
docker compose exec -T vault sh -c "VAULT_TOKEN=$VAULT_TOKEN http_proxy= HTTP_PROXY= PROXY1_ID=$PROXY1_ID PROXY2_ID=$PROXY2_ID /pki/pki request_proxy $PROXY1_ID_SHORT" "24h"
124121
docker compose exec -T vault sh -c "VAULT_TOKEN=$VAULT_TOKEN http_proxy= HTTP_PROXY= PROXY1_ID=$PROXY1_ID PROXY2_ID=$PROXY2_ID /pki/pki request_proxy $PROXY2_ID_SHORT" "24h"

0 commit comments

Comments
 (0)