Skip to content

ssahadevan-mendix/aws-mendix-quickstart

Repository files navigation

Aws Mendix quickstart

AWS Mendix Private Cloud Quickstart

Scripted install of EKS Cluster in AWS.
Install nginx ingress controllers
Configure Namespace for mendix
Deploys a mendix application

Acknowledgements

Thanks to Pablo Diaz, Dmitrii Zolotukhin for reviewing and providing feedback. Thanks to Clyde Waal , Gautam Gautam who provided the ideas and inspiration as part of the Cloud Practice discussions.

Sequence Diagram

Sequence Diagram

Prerequistes:

 aws cli
 eksctl
 kubectl
 Access keys for AWS cli
 ssh key pair for eksctl
 mxpc-cli - It is packaged here. Download and install the appropriate version from the Mendix platform
 Docker compatible registry ( to push/pul any images )

Note: This has been tested on an Apple Macintosh only

Configurations

env.sh

Update env.sh

export AWS_ACCESS_KEY_ID="TODO:your-aws-access-key"
export AWS_SECRET_ACCESS_KEY="TODO:"

## Used in create-cluster.sh, del-cluster.sh
export AWS_DEFAULT_REGION="TODO:"
export AWS_KEY_PAIR="TODO:"
export CLUSTER_NAME="mxdemo"

# Switch to create cluster or Not - Y or N
export CREATE_CLUSTER="Y"
export USE_SPOT_INSTANCES="Y"

## Used in configure.sh
## only required for connected mode -i and -s parameter
## mxpc-cli base-install --namespace new  -i $MENDIX_CONFIG_IVAL -s $MENDIX_CONFIG_SVAL --clusterMode connected  --clusterType generic
export MENDIX_CONFIG_IVAL="TODO:"
export MENDIX_CONFIG_SVAL="TODO:"

## Registry config - configure-template.yaml is updated with this information
export MENDIX_REGISTRY_PULL_URL="TODO:"
export MENDIX_REGISTRY_PUSH_URL="TODO:"
# Note: need to escape / with \/ for sed replacements
export MENDIX_REGISTRY_NAME="default-docker-virtual\/mendixapp"
export MENDIX_AUTH_USER="TODO:"
export MENDIX_AUTH_PW="TODO:"

# Switch for Minio and Postgres install - Y or N
export INSTALL_POSTGRES_MINIO="Y"
#Passwords for Postgres and Minio
export MINIO_PW="TODO:"
export POSTGRES_PW="TODO:"

# Location of the MDA file. This will be used to generate the demo.yaml by generate-yaml.sh
export MENDIX_DEMO_MDA="https:\/\/demo-storage-d1eyl9oe4fo8ph151641-staging.s3.us-east-2.amazonaws.com\/public\/Main+line-0.0.0.6.mda"

# Configure LInk to download Mendix Private Cloud CLI
export MENDIX_CLI_DOWNLOAD_LINK="https://cdn.mendix.com/mendix-for-private-cloud/mxpc-cli/mxpc-cli-2.4.1-linux-amd64.tar.gz"

Ensure that you can run mxpc-cli

Your Mac's security sesttings may prevent the downloaded mxpc-cli from executing.

. ./mxpc-cli -help

Create Cluster, Configure and Deploy Mendix application

Default is connected mode

. ./do-all.sh connected
      or
. ./do-all.sh standalone

Validation

Added validate.sh that is called at the end of do-all.sh
It will show if the result was Successful or not.

Events:           <none>
default                ingress-ngnix-nginx-ingress-58d84f694d-8lj2f   1/1     Running   0          76m
grafana                loki-0                                         1/1     Running   0          66m
grafana                loki-grafana-bff99f7f6-447vh                   2/2     Running   0          66m
grafana                loki-kube-state-metrics-799f7cbf89-sl9zr       1/1     Running   0          66m
grafana                loki-prometheus-server-54b7bc4574-vd9rd        2/2     Running   0          66m
grafana                loki-promtail-4tcff                            1/1     Running   0          66m
grafana                loki-promtail-87ckc                            1/1     Running   0          66m
kube-system            aws-node-fnzvv                                 1/1     Running   0          79m
kube-system            aws-node-n54vd                                 1/1     Running   0          79m
kube-system            coredns-56b458df85-54mbk                       1/1     Running   0          91m
kube-system            coredns-56b458df85-q5bmj                       1/1     Running   0          91m
kube-system            kube-proxy-kzs5m                               1/1     Running   0          79m
kube-system            kube-proxy-vsxm2                               1/1     Running   0          79m
new                    demo-master-ff9b8d85f-vpwr9                    2/2     Running   0          64m
new                    mendix-agent-64cc6b9c67-7kz9p                  1/1     Running   0          65m
new                    mendix-operator-cc6dfcfd5-jj4xl                1/1     Running   0          65m
privatecloud-storage   minio-shared-5c799fdd4b-lw6sn                  1/1     Running   0          66m
privatecloud-storage   postgres-shared-postgresql-0                   1/1     Running   0          66m
Result: Count of pods running
validate.sh - Success: Number of running pods is  18

Result: Checking Application Pods
validate.sh - Success: Number of running demo application pods is  1

validate.sh   Application Url: demo.3.12.43.139.nip.io # URL to access the app
validate.sh   Prometheus Url:  a7e82c3f4d494411f846668234609d83-283292745.us-east-2.elb.amazonaws.com:9090

./do-all.sh took 2792 seconds

Mendix application

validate.sh will print the Mendix application url at the end of the script.

validate.sh   Application Url: demo.3.12.43.139.nip.io # URL to access the app   

Prometheus

 validate.sh will print the Prometheus URL at the end of execution.

 validate.sh   Prometheus Url:  a7e82c3f4d494411f846668234609d83-283292745.us-east-2.elb.amazonaws.com:9090

Generated files

generate-yamls.sh creates configure.yaml configure-standalone.yaml demo.yaml

These files are generated from configure-template.yaml and demo-template.yaml

Deleting the cluster

del-cluster.sh will delete the cluster

Screenshots

https://github.com/ssahadevan-mendix/aws-mendix-quickstart/wiki

References

Install the Mendix components on the cluster using the instructions here - https://docs.mendix.com/developerportal/deploy/private-cloud-cli-non-interactive

Install and configure with the GUI (https://docs.mendix.com/developerportal/deploy/private-cloud-cluster/#4-installing-and-configuring-the-mendix-operator)