Joget DX 8 Stable Released
The stable release for Joget DX 8 is now available, with a focus on UX and Governance.
The following guide will show steps to deploy Joget on EKS using Terraform
Prerequisites
Configuring Terraform Remote Backend
Disclaimer: The Terraform code provisions the minimum required infrastructure. You may have to modify some of the parameters to ensure that it works in your environment. You may refer to the official AWS and Hashicorp documentation for more details
app_name=”<your-app-name>”
terraform init
terraform plan
to observe the resources that will be deployed (optional)terraform apply -auto-approve
infrastructure
directory and open main.tf
backend "s3" {
bucket = "xxx"
key = "terraform.infrastructure.tfstate"
region = "xxx"
dynamodb_table = "xxx"
}
Note: This process will create a local Terraform state. The remote state will only apply for infrastructure.
Deploying AWS Infrastructure
terraform.tfvars
file and ensure the following variables are includedapp_name=”<your-app-name>”
cluster_name=”<your-eks-cluster-name>”
rds_username=”<your-rds-username>”
rds_password=”<your-rds-password>”
terraform init
terraform plan
to observe the resources that will be deployed (optional)terraform apply -auto-approve
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:
Deploying Joget DX 8
kubectl apply -f joget-dx8-tomcat9-deployment.yaml
kubectl get pods -A
to obtain the status of the pods.Accessing Joget through Load Balancer
kubectl get ingress -A
. You should see the DNS under Address column as follows:k8s-namespace-RANDOM-STRING.REGION.elb.amazonaws.com
/jw
. It will redirect you to the database setup.Note: The Terraform IaC has RDS Aurora Serverless included in the Infrastructure, and as such, it will be deployed alongside the EKS. You may use the RDS to better synergize with the VPC configuration. Ensure that you use the writer endpoint when setting up Joget database
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,
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
kubectl apply -f
<storageclass>.yamljoget-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
kubectl delete pvc efs-claim
, then recreate it using kubectl apply -f joget-dx8-tomcat9-deployment.yaml
Joget on AWS Marketplace
Joget is also available in AWS Marketplace. Installation guide is available on the Marketplace page. Ensure that you have installed eksctl when following the instruction
Common Errors
Terraform
Kubernetes/EKS
aws_auth_users= [
{
userarn = "arn:aws:iam::<account-id>:user/<username>"
username = "<username>"
groups = ["system:masters"]
}
]
If you are using roles, you may append the aws_auth_roles block like so:
{
rolearn = “arn:aws:iam::<account-id>:role/<role-name>”
username = "<role-name>"
groups = ["system:masters"]
}
AWS Marketplace