Comprehensive Laravel Application Deployment on Kubernetes with Helm and Terraform

GitlabEKSNginxTerraformALBDockerDevopsBashHelm

This project showcases the deployment of a Laravel application on a Kubernetes cluster using Docker, Helm, and Terraform. The primary goal is to automate and streamline the deployment process, leveraging modern DevOps tools and practices. The project includes the following key components and steps:

  1. Local Development and Dockerization: The Laravel application is first developed locally and then containerized using Docker.Docker Compose is optionally used for local testing, ensuring that the application works correctly in a containerized environment.
  2. Kubernetes Deployment with Helm: The application is deployed on a Kubernetes cluster using Helm, a package manager for Kubernetes.Helm charts are created to manage the Kubernetes resources required for the Laravel application, including deployments, services, and persistent volume claims.
  3. Provisioning EKS with Terraform: Terraform is used to provision an Amazon EKS (Elastic Kubernetes Service) cluster.The infrastructure is defined as code, allowing for automated and repeatable deployments of the Kubernetes cluster.
  4. CI/CD Integration with GitLab: GitLab CI/CD pipelines are configured to automate the build, test, and deployment processes.The .gitlab-ci.yml file defines the stages and jobs required to deploy the application from the repository to the Kubernetes cluster.
  5. Nginx Ingress Controller: An Nginx Ingress Controller is used to manage external access to the Kubernetes services.The controller routes external HTTP(S) traffic to the appropriate services within the cluster.
  6. Architecture and Deployment: The architecture diagram illustrates the interaction between various components, including the PHP pod hosting the Laravel application, MySQL database, Redis cache, and load balancer.The deployment ensures high availability, scalability, and security by using Kubernetes features like StatefulSets, Secrets, and PVCs.

This project demonstrates a robust and scalable approach to deploying a Laravel application in a cloud-native environment, leveraging the power of Kubernetes, Helm, and Terraform to automate the entire process from development to production.