Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sonufrienko/academy
Academy - demo project built with AWS, Kubernetes, Python, NodeJS, Golang, Java
https://github.com/sonufrienko/academy
aws eks golang java kubernetes nodejs python
Last synced: about 2 months ago
JSON representation
Academy - demo project built with AWS, Kubernetes, Python, NodeJS, Golang, Java
- Host: GitHub
- URL: https://github.com/sonufrienko/academy
- Owner: sonufrienko
- License: mit
- Created: 2021-03-24T15:17:34.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2021-04-07T15:41:24.000Z (almost 4 years ago)
- Last Synced: 2024-10-16T05:35:07.731Z (3 months ago)
- Topics: aws, eks, golang, java, kubernetes, nodejs, python
- Language: Go
- Homepage: https://academy.onufrienko.com
- Size: 91.8 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Academy
Academy - demo project.
## :gear: Built with
- AWS
- EKS
- NLB
- Kubernetes (1.18)
- NGINX Ingress Controller
- NodeJS (v14)
- Express
- Python (3.8)
- FastAPI
- Go (1.16)
- Fiber## :book: 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
## :rocket: Deploy to AWS EKS
1. Setup AWS EKS with [eksctl](https://github.com/weaveworks/eksctl)
```shell
eksctl create cluster -f kubernetes/cluster.yaml
```2. Setup AWS NLB to expose the NGINX Ingress controller
```shell
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
```shell
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
```