Skip to content

Academy - demo project built with AWS, Kubernetes, Python, NodeJS, Golang, Java

License

Notifications You must be signed in to change notification settings

sonufrienko/academy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

42 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Academy

Academy - demo project.

βš™οΈ Built with

  • AWS
    • EKS
    • NLB
  • Kubernetes (1.18)
    • NGINX Ingress Controller
  • NodeJS (v14)
    • Express
  • Python (3.8)
    • FastAPI
  • Go (1.16)
    • Fiber

πŸ“– Application Structure

.
β”œβ”€β”€ api               # All our microservices
β”‚Β Β  β”œβ”€β”€ account       # Account microservice with NodeJS
β”‚Β Β  β”œβ”€β”€ comments      # Comments microservice with Go
β”‚Β Β  └── courses       # Courses microservice with Python
β”œβ”€β”€ kubernetes        # Kubernetes deployments, services, etc.
β”œβ”€β”€ web
β”œβ”€β”€ LICENSE
└── README.md

Getting Started

πŸš€ Deploy to AWS EKS

  1. Setup AWS EKS with eksctl

    eksctl create cluster -f kubernetes/cluster.yaml
  2. Setup AWS NLB to expose the NGINX Ingress controller

    kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.44.0/deploy/static/provider/aws/deploy.yaml

    Fix https issue.

    kubectl edit svc ingress-nginx-controller -n ingress-nginx
    

    Replace targetPort: https -> targetPort: http

  3. Configure AWS

    • Create Hosted Zone on AWS Route53

      Example: academy.onufrienko.com

    • Create Certificate on AWS ACM

      Example: onufrienko.com and *.onufrienko.com

    • Configure AWS NLB to use TLS

      Console > EC2 > Load Balancers > your NLB > Listeners > Edit (TCP: 443)

      Protocol: TLS

      Port: 443

      Default SSL certificate: From ACM + select your certificate

  4. Deploy

    cd kubernetes
    kubectl apply -f ingress.yaml
    kubectl apply -f account-deployment.yaml
    kubectl apply -f account-service.yaml
    kubectl apply -f comments-deployment.yaml
    kubectl apply -f comments-service.yaml
    kubectl apply -f courses-deployment.yaml
    kubectl apply -f courses-service.yaml

About

Academy - demo project built with AWS, Kubernetes, Python, NodeJS, Golang, Java

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published