Distributed Node #12
EKS

And take your prize!
Join https://kahoot.it




Amazon Elastic Kubernetes Service (Amazon EKS) - a managed service that you can use to run Kubernetes on AWS without needing to install, operate, and maintain your own Kubernetes control plane or nodes.


AWS EKS Setup
Amazon Virtual Private Cloud (Amazon VPC) is a service that lets you launch AWS resources in a logically isolated virtual network that you define.

VS


Setup


Test aws cli

Don't forget to add AmazonEC2FullAccess , EksAllAccess , IamLimitedAccess , and AWSCloudFormationFullAccess to your EKS user
User EKS permissions
Setup eksctl
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: basic-cluster
region: eu-north-1
nodeGroups:
- name: ng-1
instanceType: m5.large
desiredCapacity: 10
volumeSize: 80
ssh:
allow: true # will use ~/.ssh/id_rsa.pub as the default ssh key
- name: ng-2
instanceType: m5.xlarge
desiredCapacity: 2
volumeSize: 100
ssh:
publicKeyPath: ~/.ssh/ec2_id_rsa.pub
Cluster example configuration
eksctl create cluster -f file.yaml
Now lets create a cluster
Execute it and wait ~20 minutes





Deploy chat

#!/bin/bash
# Create namespace for kafka
kubectl create ns kafka
# Setup helm to be able to use bitnami charts
helm repo add bitnami https://charts.bitnami.com/bitnami
#Basic mongo
helm install my-mongo bitnami/mongodb
# Redis with 0 slaves to save resources
helm install my-redis --set cluster.slaveCount=0 bitnami/redis
#Kafka
helm install my-kafka --namespace kafka -f 07-kafka-config.yaml bitnami/kafka
# Chat + Users API + Client
kubectl apply -f 01-user-service.yaml
kubectl apply -f 02-chat-service.yaml
kubectl apply -f 03-chat-app.yaml
# Traefik
kubectl apply -f 04-traefik-rbac.yaml
kubectl apply -f 05-traefik-deployment.yaml
kubectl apply -f 06-traefik-ingress-routes.yaml
# Facebook oauth servcie
kubectl apply -f 08-auth-middleware.yaml
Execute following script

Check chat-service logs

Find Traefik svc LoadBalancer DNS name

Check all routes are helthy

Configure DNS to map your domain to a Traefik LB

Finally it works in the cloud

$ Pricing

Service
1d (24h)
1m
EKS control plane
$2.4
1x EC2 t2.large (2Cores, 8GB RAM)
$2.4
10x EC2 t2.micro (1Core, 1GB RAM)
$2.4
24 GB EBS Volumes GP2
$2.4
1x DNS Hosted zone (Route 53)
$0.5
Total
$0.08
$0.015
$7.3
$72
$72
$72
$219
Content
Nest.js quick start
Databases
Docker
CI / CD
Caching
Nest.js + WebSocket
Kubernetes
Load balancing & Ingress
Messaging queues
Authentication & authorization
AWS
Deploy app to EKS

Course contributors

Inna Ivashchuk
Senior Software Engineer

Dmytro Bielik
Senior Software Engineer
Trainers
Guests
Vladyslav Matus
Solution Architect

Oleksandr Fedirko
Solution Architect

Denys Vasyliev
Lead Software Engineer
Volodymyr Vyshko
Lead Software Engineer

Organizers
Ivan Andreiev
Technology Manager
Tatiana Gusar
Lead Specialist

Kateryna Marunyak
Specialist
Oleksandra Kovalchuk
Junior Specialist






Thank You!

Distributed Node #12
By Vladimir Vyshko
Distributed Node #12
EKS
- 685