Skip to content

devopscorner/laravel-eks-deployment

Repository files navigation

Infra Laravel Deployment

Laravel Kubernetes (EKS) Deployment Tools

all contributors tags download all download latest view clone issues pull requests forks stars license


Available Tags

Containers Pulls
Container devopscorner/phpfpm Tags phpfpm pulls
Container devopscorner/laravel Tags laravel pulls

Prerequirements

Folder Structure

docs

Index Documentation, see here for detail

compose

Docker Compose for Build Image, eg:

  • Ubuntu (Bastion SSH)
  • Nginx
  • PHPFpm (Laravel App)
  • etc

helm

HelmChart, Template, Helmfile Values:

  • charts
    • stateful
      • mariadb
      • mysql
      • postgresql
      • redis
      • etc
    • others
      • fluentd
      • grafana
      • jenkins
      • kibana
      • nginx
      • phpfpm
      • etc
  • helmfile
    • laravel-template.yml
    • laravel-values.yml
    • manifest-laravel-secret.yml
    • mariadb-values.yml
  • templates
    • api
    • backend
    • configmap
    • frontend
    • secretref
    • stateful
    • svcrole
    • helm-pack-lab.sh
    • helm-push-lab.sh

terraform/environment

Teraform AWS Providers, eg:

  • Core
  • TFState
  • Resources
    • Budget
    • EKS
    • RDS

terraform/modules (Terraform Submodules)

  • Official Repositories

    ./get-official.sh
    -- or --
    make sub-official
    
  • Community Repositories

    ./get-community.sh
    -- or --
    make sub-community
    

How-to-Use

  • Clone this repository

    git clone git@github.com:devopscorner/laravel-eks-deployment.git
    
  • Get all Terraform modules

    make sub-all
    
  • Assume Role for Terraform command

    aws sts assume-role --role-arn arn-role-to-assume --role-session-name AWSCLI
    
  • Terraform Execution

    terraform init
    terraform plan
    terraform apply
    
  • Terraform Cleanup (Remove ALL)

    terraform destroy
    ---
    Notes: PLEASE BEWARE TO USE THIS !!!
    

Deploy HelmChart

  • Set Context to Your Environment
    kubectl config use-context [YOUR_K8S_CONTEXT]
    -- or --
    kubectx [YOUR_K8S_CONTEXT]
    
  • Create Namespace larave-app
    kubectl create namespace laravel-app
    
  • Deploy Stateful HelmChart
    make helmchart-stateful [CHART_NAME]
    ---
    eg:
    make helmchart-stateful mariadb
    
  • Deploy Others HelmChart
    make helmchart-others [CHART_NAME]
    ---
    eg:
    make helmchart-others nginx
    make helmchart-others laravel
    

Cleanup Installation HelmChart

  • Set Context to Your Environment
    kubectl config use-context [YOUR_K8S_CONTEXT]
    -- or --
    kubectx [YOUR_K8S_CONTEXT]
    
  • Cleanup Stateful HelmChart
    make remove-helmchart-stateful [CHART_NAME]
    ---
    eg:
    make remove-helmchart-stateful mariadb
    
  • Cleanup Others HelmChart
    make remove-helmchart-others [CHART_NAME]
    ---
    eg:
    make remove-helmchart-others nginx
    make remove-helmchart-others laravel
    

Tested Environment

Versioning

  • Docker version

    docker -v
    ---
    Docker version 20.10.17-rd, build c2e4e01
    
    docker version
    ---
    Client:
      Version:           20.10.17-rd
      API version:       1.41
      Go version:        go1.17.11
      Git commit:        c2e4e01
      Built:             Fri Jul 22 18:31:17 2022
      OS/Arch:           darwin/amd64
      Context:           default
      Experimental:      true
    
    Server: Docker Desktop 4.14.1 (91661)
    Engine:
      Version:          20.10.21
      API version:      1.41 (minimum version 1.12)
      Go version:       go9.7
      Git commit:       3056208
      Built:            Tue Oct 25 18:00:19 2022
      OS/Arch:          linux/amd64
      Experimental:     false
    containerd:
      Version:          1.6.9
      GitCommit:        1c90a442489720eec95342e1789ee8a5e1b9536f
    runc:
      Version:          1.1.4
      GitCommit:        v1.1.4-0-g5fd4c4d
    docker-init:
      Version:          0.19.0
      GitCommit:        de40ad0
    
  • Docker-Compose version

    docker-compose -v
    ---
    Docker Compose version v2.11.1
    
  • AWS Cli

    aws --version
    ---
    laravel/2.8.7 Python/3.9.11 Darwin/21.6.0 exe/x86_64 prompt/off
    
  • Terraform Cli

    terraform version
    ---
    Terraform v1.3.5
    on darwin_amd64
    - provider registry.terraform.io/hashicorp/aws v3.74.3
    - provider registry.terraform.io/hashicorp/local v2.1.0
    - provider registry.terraform.io/hashicorp/null v3.1.0
    - provider registry.terraform.io/hashicorp/random v3.1.0
    - provider registry.terraform.io/hashicorp/time v0.7.2
    
  • Terraform Environment Cli

    tfenv -v
    ---
    tfenv 2.2.2
    

Copyright

  • Author: Dwi Fahni Denni (@zeroc0d3)
  • License: Apache v2