mirror of
https://github.com/netbirdio/netbird.git
synced 2025-02-23 13:41:19 +01:00
Feature/Use Zitadel Postgres Integration by default (#2181)
replaces cockroachDB as default DB for Zitadel in the getting started script to deploy script. Users can switch back to cockroachDB by setting the environment variable ZITADEL_DATABASE to cockroach.
This commit is contained in:
parent
f6ccf6b97a
commit
17874771cc
59
.github/workflows/test-infrastructure-files.yml
vendored
59
.github/workflows/test-infrastructure-files.yml
vendored
@ -178,34 +178,79 @@ jobs:
|
|||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
- name: run script
|
- name: run script with Zitadel PostgreSQL
|
||||||
run: NETBIRD_DOMAIN=use-ip bash -x infrastructure_files/getting-started-with-zitadel.sh
|
run: NETBIRD_DOMAIN=use-ip bash -x infrastructure_files/getting-started-with-zitadel.sh
|
||||||
|
|
||||||
- name: test Caddy file gen
|
- name: test Caddy file gen postgres
|
||||||
run: test -f Caddyfile
|
run: test -f Caddyfile
|
||||||
- name: test docker-compose file gen
|
|
||||||
|
- name: test docker-compose file gen postgres
|
||||||
run: test -f docker-compose.yml
|
run: test -f docker-compose.yml
|
||||||
- name: test management.json file gen
|
|
||||||
|
- name: test management.json file gen postgres
|
||||||
run: test -f management.json
|
run: test -f management.json
|
||||||
- name: test turnserver.conf file gen
|
|
||||||
|
- name: test turnserver.conf file gen postgres
|
||||||
run: |
|
run: |
|
||||||
set -x
|
set -x
|
||||||
test -f turnserver.conf
|
test -f turnserver.conf
|
||||||
grep external-ip turnserver.conf
|
grep external-ip turnserver.conf
|
||||||
- name: test zitadel.env file gen
|
|
||||||
|
- name: test zitadel.env file gen postgres
|
||||||
run: test -f zitadel.env
|
run: test -f zitadel.env
|
||||||
- name: test dashboard.env file gen
|
|
||||||
|
- name: test dashboard.env file gen postgres
|
||||||
run: test -f dashboard.env
|
run: test -f dashboard.env
|
||||||
|
|
||||||
|
- name: test zdb.env file gen postgres
|
||||||
|
run: test -f zdb.env
|
||||||
|
|
||||||
|
- name: Postgres run cleanup
|
||||||
|
run: |
|
||||||
|
docker-compose down --volumes --rmi all
|
||||||
|
rm -rf docker-compose.yml Caddyfile zitadel.env dashboard.env machinekey/zitadel-admin-sa.token turnserver.conf management.json zdb.env
|
||||||
|
|
||||||
|
- name: run script with Zitadel CockroachDB
|
||||||
|
run: bash -x infrastructure_files/getting-started-with-zitadel.sh
|
||||||
|
env:
|
||||||
|
NETBIRD_DOMAIN: use-ip
|
||||||
|
ZITADEL_DATABASE: cockroach
|
||||||
|
|
||||||
|
- name: test Caddy file gen CockroachDB
|
||||||
|
run: test -f Caddyfile
|
||||||
|
|
||||||
|
- name: test docker-compose file gen CockroachDB
|
||||||
|
run: test -f docker-compose.yml
|
||||||
|
|
||||||
|
- name: test management.json file gen CockroachDB
|
||||||
|
run: test -f management.json
|
||||||
|
|
||||||
|
- name: test turnserver.conf file gen CockroachDB
|
||||||
|
run: |
|
||||||
|
set -x
|
||||||
|
test -f turnserver.conf
|
||||||
|
grep external-ip turnserver.conf
|
||||||
|
|
||||||
|
- name: test zitadel.env file gen CockroachDB
|
||||||
|
run: test -f zitadel.env
|
||||||
|
|
||||||
|
- name: test dashboard.env file gen CockroachDB
|
||||||
|
run: test -f dashboard.env
|
||||||
|
|
||||||
test-download-geolite2-script:
|
test-download-geolite2-script:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Install jq
|
- name: Install jq
|
||||||
run: sudo apt-get update && sudo apt-get install -y unzip sqlite3
|
run: sudo apt-get update && sudo apt-get install -y unzip sqlite3
|
||||||
|
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
- name: test script
|
- name: test script
|
||||||
run: bash -x infrastructure_files/download-geolite2.sh
|
run: bash -x infrastructure_files/download-geolite2.sh
|
||||||
|
|
||||||
- name: test mmdb file exists
|
- name: test mmdb file exists
|
||||||
run: test -f GeoLite2-City.mmdb
|
run: test -f GeoLite2-City.mmdb
|
||||||
|
|
||||||
- name: test geonames file exists
|
- name: test geonames file exists
|
||||||
run: test -f geonames.db
|
run: test -f geonames.db
|
||||||
|
@ -50,7 +50,7 @@ check_jq() {
|
|||||||
wait_crdb() {
|
wait_crdb() {
|
||||||
set +e
|
set +e
|
||||||
while true; do
|
while true; do
|
||||||
if $DOCKER_COMPOSE_COMMAND exec -T crdb curl -sf -o /dev/null 'http://localhost:8080/health?ready=1'; then
|
if $DOCKER_COMPOSE_COMMAND exec -T zdb curl -sf -o /dev/null 'http://localhost:8080/health?ready=1'; then
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
echo -n " ."
|
echo -n " ."
|
||||||
@ -61,14 +61,16 @@ wait_crdb() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
init_crdb() {
|
init_crdb() {
|
||||||
|
if [[ $ZITADEL_DATABASE == "cockroach" ]]; then
|
||||||
echo -e "\nInitializing Zitadel's CockroachDB\n\n"
|
echo -e "\nInitializing Zitadel's CockroachDB\n\n"
|
||||||
$DOCKER_COMPOSE_COMMAND up -d crdb
|
$DOCKER_COMPOSE_COMMAND up -d zdb
|
||||||
echo ""
|
echo ""
|
||||||
# shellcheck disable=SC2028
|
# shellcheck disable=SC2028
|
||||||
echo -n "Waiting cockroachDB to become ready "
|
echo -n "Waiting CockroachDB to become ready"
|
||||||
wait_crdb
|
wait_crdb
|
||||||
$DOCKER_COMPOSE_COMMAND exec -T crdb /bin/bash -c "cp /cockroach/certs/* /zitadel-certs/ && cockroach cert create-client --overwrite --certs-dir /zitadel-certs/ --ca-key /zitadel-certs/ca.key zitadel_user && chown -R 1000:1000 /zitadel-certs/"
|
$DOCKER_COMPOSE_COMMAND exec -T zdb /bin/bash -c "cp /cockroach/certs/* /zitadel-certs/ && cockroach cert create-client --overwrite --certs-dir /zitadel-certs/ --ca-key /zitadel-certs/ca.key zitadel_user && chown -R 1000:1000 /zitadel-certs/"
|
||||||
handle_request_command_status $? "init_crdb failed" ""
|
handle_request_command_status $? "init_crdb failed" ""
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
get_main_ip_address() {
|
get_main_ip_address() {
|
||||||
@ -461,6 +463,20 @@ initEnvironment() {
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ $ZITADEL_DATABASE == "" ]]; then
|
||||||
|
echo "Use Postgres as default Zitadel database."
|
||||||
|
echo "For using CockroachDB please the environment variable 'export ZITADEL_DATABASE=cockroach'."
|
||||||
|
POSTGRES_ROOT_PASSWORD="$(openssl rand -base64 32 | sed 's/=//g')@"
|
||||||
|
POSTGRES_ZITADEL_PASSWORD="$(openssl rand -base64 32 | sed 's/=//g')@"
|
||||||
|
ZDB=$(renderDockerComposePostgres)
|
||||||
|
ZITADEL_DB_ENV=$(renderZitadelPostgresEnv)
|
||||||
|
renderPostgresEnv > zdb.env
|
||||||
|
elif [[ $ZITADEL_DATABASE == "cockroach" ]]; then
|
||||||
|
echo "Use CockroachDB as Zitadel database."
|
||||||
|
ZDB=$(renderDockerComposeCockroachDB)
|
||||||
|
ZITADEL_DB_ENV=$(renderZitadelCockroachDBEnv)
|
||||||
|
fi
|
||||||
|
|
||||||
echo Rendering initial files...
|
echo Rendering initial files...
|
||||||
renderDockerCompose > docker-compose.yml
|
renderDockerCompose > docker-compose.yml
|
||||||
renderCaddyfile > Caddyfile
|
renderCaddyfile > Caddyfile
|
||||||
@ -474,7 +490,7 @@ initEnvironment() {
|
|||||||
|
|
||||||
init_crdb
|
init_crdb
|
||||||
|
|
||||||
echo -e "\nStarting Zidatel IDP for user management\n\n"
|
echo -e "\nStarting Zitadel IDP for user management\n\n"
|
||||||
$DOCKER_COMPOSE_COMMAND up -d caddy zitadel
|
$DOCKER_COMPOSE_COMMAND up -d caddy zitadel
|
||||||
init_zitadel
|
init_zitadel
|
||||||
|
|
||||||
@ -679,16 +695,6 @@ renderZitadelEnv() {
|
|||||||
cat <<EOF
|
cat <<EOF
|
||||||
ZITADEL_LOG_LEVEL=debug
|
ZITADEL_LOG_LEVEL=debug
|
||||||
ZITADEL_MASTERKEY=$ZITADEL_MASTERKEY
|
ZITADEL_MASTERKEY=$ZITADEL_MASTERKEY
|
||||||
ZITADEL_DATABASE_COCKROACH_HOST=crdb
|
|
||||||
ZITADEL_DATABASE_COCKROACH_USER_USERNAME=zitadel_user
|
|
||||||
ZITADEL_DATABASE_COCKROACH_USER_SSL_MODE=verify-full
|
|
||||||
ZITADEL_DATABASE_COCKROACH_USER_SSL_ROOTCERT="/crdb-certs/ca.crt"
|
|
||||||
ZITADEL_DATABASE_COCKROACH_USER_SSL_CERT="/crdb-certs/client.zitadel_user.crt"
|
|
||||||
ZITADEL_DATABASE_COCKROACH_USER_SSL_KEY="/crdb-certs/client.zitadel_user.key"
|
|
||||||
ZITADEL_DATABASE_COCKROACH_ADMIN_SSL_MODE=verify-full
|
|
||||||
ZITADEL_DATABASE_COCKROACH_ADMIN_SSL_ROOTCERT="/crdb-certs/ca.crt"
|
|
||||||
ZITADEL_DATABASE_COCKROACH_ADMIN_SSL_CERT="/crdb-certs/client.root.crt"
|
|
||||||
ZITADEL_DATABASE_COCKROACH_ADMIN_SSL_KEY="/crdb-certs/client.root.key"
|
|
||||||
ZITADEL_EXTERNALSECURE=$ZITADEL_EXTERNALSECURE
|
ZITADEL_EXTERNALSECURE=$ZITADEL_EXTERNALSECURE
|
||||||
ZITADEL_TLS_ENABLED="false"
|
ZITADEL_TLS_ENABLED="false"
|
||||||
ZITADEL_EXTERNALPORT=$NETBIRD_PORT
|
ZITADEL_EXTERNALPORT=$NETBIRD_PORT
|
||||||
@ -698,6 +704,43 @@ ZITADEL_FIRSTINSTANCE_ORG_MACHINE_MACHINE_USERNAME=zitadel-admin-sa
|
|||||||
ZITADEL_FIRSTINSTANCE_ORG_MACHINE_MACHINE_NAME=Admin
|
ZITADEL_FIRSTINSTANCE_ORG_MACHINE_MACHINE_NAME=Admin
|
||||||
ZITADEL_FIRSTINSTANCE_ORG_MACHINE_PAT_SCOPES=openid
|
ZITADEL_FIRSTINSTANCE_ORG_MACHINE_PAT_SCOPES=openid
|
||||||
ZITADEL_FIRSTINSTANCE_ORG_MACHINE_PAT_EXPIRATIONDATE=$ZIDATE_TOKEN_EXPIRATION_DATE
|
ZITADEL_FIRSTINSTANCE_ORG_MACHINE_PAT_EXPIRATIONDATE=$ZIDATE_TOKEN_EXPIRATION_DATE
|
||||||
|
$ZITADEL_DB_ENV
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
renderZitadelCockroachDBEnv() {
|
||||||
|
cat <<EOF
|
||||||
|
ZITADEL_DATABASE_COCKROACH_HOST=zdb
|
||||||
|
ZITADEL_DATABASE_COCKROACH_USER_USERNAME=zitadel_user
|
||||||
|
ZITADEL_DATABASE_COCKROACH_USER_SSL_MODE=verify-full
|
||||||
|
ZITADEL_DATABASE_COCKROACH_USER_SSL_ROOTCERT="/zdb-certs/ca.crt"
|
||||||
|
ZITADEL_DATABASE_COCKROACH_USER_SSL_CERT="/zdb-certs/client.zitadel_user.crt"
|
||||||
|
ZITADEL_DATABASE_COCKROACH_USER_SSL_KEY="/zdb-certs/client.zitadel_user.key"
|
||||||
|
ZITADEL_DATABASE_COCKROACH_ADMIN_SSL_MODE=verify-full
|
||||||
|
ZITADEL_DATABASE_COCKROACH_ADMIN_SSL_ROOTCERT="/zdb-certs/ca.crt"
|
||||||
|
ZITADEL_DATABASE_COCKROACH_ADMIN_SSL_CERT="/zdb-certs/client.root.crt"
|
||||||
|
ZITADEL_DATABASE_COCKROACH_ADMIN_SSL_KEY="/zdb-certs/client.root.key"
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
renderZitadelPostgresEnv() {
|
||||||
|
cat <<EOF
|
||||||
|
ZITADEL_DATABASE_POSTGRES_HOST=zdb
|
||||||
|
ZITADEL_DATABASE_POSTGRES_PORT=5432
|
||||||
|
ZITADEL_DATABASE_POSTGRES_DATABASE=zitadel
|
||||||
|
ZITADEL_DATABASE_POSTGRES_USER_USERNAME=zitadel
|
||||||
|
ZITADEL_DATABASE_POSTGRES_USER_PASSWORD=$POSTGRES_ZITADEL_PASSWORD
|
||||||
|
ZITADEL_DATABASE_POSTGRES_USER_SSL_MODE=disable
|
||||||
|
ZITADEL_DATABASE_POSTGRES_ADMIN_USERNAME=root
|
||||||
|
ZITADEL_DATABASE_POSTGRES_ADMIN_PASSWORD=$POSTGRES_ROOT_PASSWORD
|
||||||
|
ZITADEL_DATABASE_POSTGRES_ADMIN_SSL_MODE=disable
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
renderPostgresEnv() {
|
||||||
|
cat <<EOF
|
||||||
|
POSTGRES_USER=root
|
||||||
|
POSTGRES_PASSWORD=$POSTGRES_ROOT_PASSWORD
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -765,20 +808,33 @@ services:
|
|||||||
env_file:
|
env_file:
|
||||||
- ./zitadel.env
|
- ./zitadel.env
|
||||||
depends_on:
|
depends_on:
|
||||||
crdb:
|
zdb:
|
||||||
condition: 'service_healthy'
|
condition: 'service_healthy'
|
||||||
volumes:
|
volumes:
|
||||||
- ./machinekey:/machinekey
|
- ./machinekey:/machinekey
|
||||||
- netbird_zitadel_certs:/crdb-certs:ro
|
- netbird_zitadel_certs:/zdb-certs:ro
|
||||||
# CockroachDB for zitadel
|
$ZDB
|
||||||
crdb:
|
netbird_zdb_data:
|
||||||
|
netbird_management:
|
||||||
|
netbird_caddy_data:
|
||||||
|
netbird_zitadel_certs:
|
||||||
|
|
||||||
|
networks:
|
||||||
|
netbird:
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
renderDockerComposeCockroachDB() {
|
||||||
|
cat <<EOF
|
||||||
|
# CockroachDB for Zitadel
|
||||||
|
zdb:
|
||||||
restart: 'always'
|
restart: 'always'
|
||||||
networks: [netbird]
|
networks: [netbird]
|
||||||
image: 'cockroachdb/cockroach:latest-v23.2'
|
image: 'cockroachdb/cockroach:latest-v23.2'
|
||||||
command: 'start-single-node --advertise-addr crdb'
|
command: 'start-single-node --advertise-addr zdb'
|
||||||
volumes:
|
volumes:
|
||||||
- netbird_crdb_data:/cockroach/cockroach-data
|
- netbird_zdb_data:/cockroach/cockroach-data
|
||||||
- netbird_crdb_certs:/cockroach/certs
|
- netbird_zdb_certs:/cockroach/certs
|
||||||
- netbird_zitadel_certs:/zitadel-certs
|
- netbird_zitadel_certs:/zitadel-certs
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: [ "CMD", "curl", "-f", "http://localhost:8080/health?ready=1" ]
|
test: [ "CMD", "curl", "-f", "http://localhost:8080/health?ready=1" ]
|
||||||
@ -788,14 +844,29 @@ services:
|
|||||||
start_period: '20s'
|
start_period: '20s'
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
netbird_management:
|
netbird_zdb_certs:
|
||||||
netbird_caddy_data:
|
EOF
|
||||||
netbird_crdb_data:
|
}
|
||||||
netbird_crdb_certs:
|
|
||||||
netbird_zitadel_certs:
|
|
||||||
|
|
||||||
networks:
|
renderDockerComposePostgres() {
|
||||||
netbird:
|
cat <<EOF
|
||||||
|
# Postgres for Zitadel
|
||||||
|
zdb:
|
||||||
|
restart: 'always'
|
||||||
|
networks: [netbird]
|
||||||
|
image: 'postgres:16-alpine'
|
||||||
|
env_file:
|
||||||
|
- ./zdb.env
|
||||||
|
volumes:
|
||||||
|
- netbird_zdb_data:/var/lib/postgresql/data:rw
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "pg_isready", "-d", "db_prod"]
|
||||||
|
interval: 5s
|
||||||
|
timeout: 60s
|
||||||
|
retries: 10
|
||||||
|
start_period: 5s
|
||||||
|
|
||||||
|
volumes:
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user