Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Update some of the commands to the latest working ones
English

This article is provided as a technical guide to set up Joget DX

...

8 with PostgreSQL database on Kubernetes.

...

The following steps were implemented on Ubuntu

...

22.04, please modify the commands to suit your environment.


Table of Contents

Create Joget Image with PostgreSQL JDBC Driver

Code Block
languagebash
linenumberstrue
# create custom Dockerfile
cat <<EOF > joget-dx7dx8-postgresql-tomcat9.Dockerfile
FROM jogetworkflow/joget-dx7dx8-tomcat9:78.01.141

# Copy postgresql jdbc driver (download from https://jdbc.postgresql.org/download/postgresql-42.27.193.jar)
COPY postgresql-42.27.193.jar /deployments/apache-tomcat/lib/postgresql-42.27.193.jar
EOF

# build docker image
docker build -f joget-dx7dx8-postgresql-tomcat9.Dockerfile --rm -t quay.io/replaceWithYourAccount/joget-dx7dx8-postgresql-tomcat9:78.01.141 .

# push docker image
docker push quay.io/replaceWithYourAccount/joget-dx7dx8-postgresql-tomcat9:78.01.141

Deploy PostgreSQL on K8s using Helm

Code Block
languagebash
linenumberstrue
# deploy postgresql using Helm
helm repoinstall addpostgres bitnami httpsoci://chartsregistry-1.bitnamidocker.com/bitnami
helm install postgres bitnamiio/bitnamicharts/postgresql
helm list
helm get notes postgres

# wait for postgresql to startup
kubectl wait \
  --for=condition=ready pod \
  --selector=app.kubernetes.io/name=postgresql \
  --timeout=180s

...

Code Block
languagebash
linenumberstrue
# check setfor postgresql password
export POSTGRES_PASSWORD=$(kubectl get secret --namespace default postgres-postgresql -o jsonpath="{.data.postgresql-password}" | base64 --decode)

# run psql
kubectl run postgres-postgresql-client --rm --tty -i --restart='Never' --namespace default --image docker.io/bitnami/postgresql:1116.113.0-debian-1012-r24r4 --env="PGPASSWORD=$POSTGRES_PASSWORD" \
      --command -- psql --host postgres-postgresql -U postgres -d postgres -p 5432

$ CREATE DATABASE jwdb;
$ \quit

...

Obtain the pgsql file from Configure for PostgreSQL.

Code Block
languagebash
linenumberstrue
# import sql
cat jwdb-postgresql-dx7postgres.pgsqlsql | kubectl exec -i postgres-postgresql-0 -- env PGPASSWORD=$POSTGRES_PASSWORD psql -U postgres -d jwdb

...

Follow the instructions in https://dev.joget.org/community/display/DX7dx8/Joget+on+Kubernetes, replacing the jogetworkflow/joget-dx7dx8-tomcat9 image with the custom image quay.io/replaceWithYourAccount/joget-dx7dx8-postgresql-tomcat9 in the YAML

...

Code Block
languagebash
linenumberstrue
# ssh into tomcat pod and create datasource files
kubectl exec --stdin --tty deployments/joget-dx7dx8-tomcat9 -- /bin/bash

$ cat <<EOF > /opt/joget/wflow/app_datasource-postgresql.properties
workflowUser=postgres
workflowPassword=REPLACE_POSTGRES_PASSWORD_HERE
workflowDriver=org.postgresql.Driver
workflowUrl=jdbc\:postgresql\://postgres-postgresql/jwdb
EOF

$ cat <<EOF > /opt/joget/wflow/app_datasource.properties
currentProfile=postgresql
EOF

$ exit

...

Code Block
languagebash
linenumberstrue
# restart pods

kubectl scale --replicas=0 deployment/joget-dx7dx8-tomcat9

kubectl scale --replicas=1 deployment/joget-dx7dx8-tomcat9

# view logs

kubectl logs -f deployment/joget-dx7dx8-tomcat9