API & UI to validate and list customers' and their phone numbers validation and countries.
API application was made by Java v8 using Spring boot framework v2.4.5 and UI was made using ReactJS,
- VPC with subnets
- Security groups
- EC2 instance as Ansible master node, that acts as a jumpbox for other servers
- EC2 instance for postgresql server
- EC2 instance for Microservice server
- EC2 instance for Loadbalancer server with nginx installed
- ECR repositories for front end and backend application
- EKS cluster with a managed node group having nodes that spans across 3 availability zones.
- Terrfaorm was used to deploy the infrastructure, and the various applications were deployed using terraform userdata, to remove that dependency from Ansible.
- The Ansible master node has a public ip address where only permitted users can connect to it.
- The microservice and database servers are in a private subnet.
- The loadbalancer server is in a public subnet with elastic ip enabled.
- ECR repositories for the applications were created using terraform
- Github Action was used for automating the deployment process.
- The applications were deployed to kubernetes with 3 replicas across 3 nodes in 3 availability zones
- Ansible was used for the configuration management, applying iptables firewall rules, changing default ssh ports etc
- Checkov was added to github pipeline to check for code misconfigurations.
- use AWS system manager for login to remove the need for management of ssh keys
- use AWS RDS database for postgresql deployment
The application can be reached on kubernetes through a node svc via the loadbalancer public ip http://52.211.167.97/