Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • Ensure that you have these CLI tools installed:
  • Configured AWS CLI with Access Keys or assumed role with sufficient permissions
  • You have downloaded the Terraform IaC from here

...

Note: This step will take some time, around 20-30 minutes.


Core Services and Resource Deployed

These are the core services and resources (non exhaustive) list deployed from Terraform:

  • Virtual Private Cloud (VPC)
  • Elastic Kubernetes Service (EKS)
  • Elastic File System (EFS)
  • Relational Database System (RDS) - Serverless
  • Helm Charts:
    • AWS Load Balancer Controller
    • AWS EBS CSI Driver
    • AWS EFS CSI Driver
  • EC2 Servers - Created through EKS provisioning


Deploying Joget DX 8

  1. Download the Kubernetes manifest here.
  2. Run kubectl apply -f joget-dx8-tomcat9-deployment.yaml
  3. Wait for the containers to initialize. Run kubectl get pods -A to obtain the status of the pods.

...

  1. Click Save. Wait for the database to be setup
  2. Once the setup is complete, click Done. It will redirect you to the Joget main page

Using EFS with ReadWriteMany access mode

By default, the EKS cluster's Nodes will use EBS through EBS CSI Driver which only supports ReadWriteOnce. The Terraform already containing script to deploy EFS CSI Driver. To use EFS,

  1. Create a StorageClass manifest as follow:

    kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: <your-efs-sc-name> provisioner: efs.csi.aws.com parameters: provisioningMode: efs-ap fileSystemId: <efs-file-id> directoryPerms: "775" reclaimPolicy: Retain
  2. Apply the StorageClass by running kubectl apply -f <storageclass>.yaml
  3. Modify the PVC from the joget-dx8-tomcat9-deployment.yaml file to this:  

    apiVersion: v1 kind: PersistentVolumeClaim metadata: name: efs-claim spec: accessModes: - ReadWriteMany storageClassName: <your-efs-sc-name> resources: requests: storage: 5Gi
  4. Delete the current PVC - kubectl delete pvc efs-claim , then recreate it using kubectl apply -f joget-dx8-tomcat9-deployment.yaml
  5. Wait for the Persistent Volume to be created
  6. Once the Persistent Volume is created, modify the Joget Deployment to the following:

    apiVersion: apps/v1 kind: Deployment metadata: name: joget-dx8-tomcat9 labels: app: joget-dx8-tomcat9 spec: replicas: 1 selector: matchLabels: app: joget-dx8-tomcat9 template: metadata: labels: app: joget-dx8-tomcat9 spec: volumes: - name: <efs-pv-name> persistentVolumeClaim: claimName: joget-dx8-tomcat9-pvc securityContext: runAsUser: 1000 fsGroup: 0 containers: - name: joget-dx8-tomcat9 image: jogetworkflow/joget-dx8-tomcat9:latest ports: - containerPort: 8080 volumeMounts: - name: <efs-pv-name> mountPath: /opt/joget/wflow env: - name: KUBERNETES_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace
  7. Wait for the new pods to spawn. The new pods will now be using the EFS storage instead of EBS

Common Errors

Terraform

  • Error: error configuring S3 Backend: no valid credential sources for S3 Backend found.

...