SlideShare ist ein Scribd-Unternehmen logo
1 von 22
Amazon EKS Workshop
201904 김진웅
발표자
김진웅 @ddiiwoong
• Platform Architect @SK C&C
• Interested in Kubernetes and Serverless(FaaS), DevOps, SRE, ML/DL
• ~18년 OSS기반 FaaS 플랫폼 (https://skcloud.github.io/zaction/) 스크럼마스터, SRE
• 19년~ BaaS(BlockChain) 기반 데이터레이크 플랫폼 설계/구축
EKS
• Amazon Elastic Container Service for Kubernetes
• Fully Managed Kubernetes Services
• https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/what-is-eks.html
• 기존 서비스통합
• Registry : Amazon ECR
• LoadBalancer : Elastic Load Balancing
• Auth : 인증용 IAM
• CNI : Amazon VPC
Kubernetes 기능 OSS, 상용 AWS
Registry Dockerhub, Harbor ECR
LoadBalancer nginx, traefik ELB(ALB)
Cluster 인증 dex, keycloak aws-iam-authenticator
CNI(Network Plugin) Calico, weave, Cilium VPC
EKS
• Kops(EC2기반 Kubernetes배포)와 차이 (19년 4월 4일 기준)
구분 KOPS EKS
버전 1.14.0 1.12.7
권한관리 RBAC IAM(aws-iam-authenticator)
관리형태
Master, ETCD, DNS, Scheduler
직접관리
완전관리형 (0.2USD/hr*Cluster)
네트워킹 Flannel(CNI 대부분 지원) VPC(Calico, Cilium 등)
상태 S3 Bucket 완전관리형
API권한 모든권한 KubeAPI, Kubelet 수정불가
Taint, Labeling Instance 단위 가능 미지원
EKS Networking
• CNI (Container Network Interface)
EKS Networking
• SNAT Enabled
• Default
• CNI가 SNAT를 수행해서 Public 주소로 외부와 통신
EKS Networking
• SNAT Disabled
• VPC Peering, Transit VPC, Direct Connect의 경우
• NAT를 외부에서 처리되도록 함
(https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/external-snat.html)
EKS Networking
• 3rd Party CNI (Container Network Interface)
• Calico (L3 Layer)
• https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/calico.html
• 테넌트 별(dev,stage,prod) 네트워크 격리 및 세분화 구현
• Cilium (L7 Layer)
• http://docs.cilium.io/en/v1.4/gettingstarted/k8s-install-eks/?highlight=eks
• Kafka, Elasticsearch 보안
• EKS – Instance 간 SecurityGroup 설정
EKS Workshop
• https://eksworkshop.com/
Kubernete를 처음접하는 유저를 위한 기본 개념과 아키텍처, 그리고 VPC, ALB를 활용하여
EKS에 대한 설치, 구성, 데모앱 배포 등을 해볼수 있는 튜토리얼 사이트
• AWSKRUG에서 한글화 작업도 진행중
• https://awskrug.github.io/eks-workshop/deploy/
EKS Workshop 준비사
항
• AWS Account
• Free Tire 불가 (EKS)
• Credit 필요
• IAM
• Terraform과 다른 권한 필요
• https://github.com/ddiiwoong/eksworkshop/blob/master/iam_for_eksworkshop.
json
• kubectl, aws-iam-authenticator
• kubectl : kubernetes CLI
• aws-iam-authenticator : AWS IAM Authenticator CLI
• eksctl
• Cloudformation 사용 (15-20분 소요)
EKS Workshop 준비사
항
• IAM 설정
• EKS workshop은 기본적으로 Administrator 권한으로 진행됨
• 주요 Action : iam, eks(*), ec2, autoscaling
• User 권한은 아래 링크를 참고
• https://github.com/ddiiwoong/eksworkshop/blob/master/iam_for_eksworksh
op.json
• 추가적인 확인 필요
• Terraform eks IAM
• https://github.com/terraform-aws-modules/terraform-aws-
eks/blob/master/examples/eks_test_fixture/README.md
EKS Workshop 준비사
항
• Kubectl : Kubernetes CLI
• Linux
• Mac
• PowerShell (PATH설정 추가필요)
• 설치 확인
$ mkdir –p ~/.kube
$ sudo curl --silent --location -o /usr/local/bin/kubectl "https://amazon-eks.s3-us-west-2.amazonaws.com/1.11.5/2018-12-
06/bin/linux/amd64/kubectl" $ sudo chmod +x /usr/local/bin/kubectl
$ brew install kubernetes-cli
curl -o kubectl.exe https://amazon-eks.s3-us-west-2.amazonaws.com/1.10.3/2018-07-26/bin/windows/amd64/kubectl.exe
$ kubectl version --short --client
EKS Workshop 준비사
항
• aws-iam-authenticator
• Linux: https://amazon-eks.s3-us-west-2.amazonaws.com/1.10.3/2018-07-26/bin/linux/amd64/aws-iam-authenticator
• MacOS: https://amazon-eks.s3-us-west-2.amazonaws.com/1.10.3/2018-07-26/bin/darwin/amd64/aws-iam-
authenticator
• Windows: https://amazon-eks.s3-us-west-2.amazonaws.com/1.10.3/2018-07-26/bin/windows/amd64/aws-iam-
authenticator.exe
• MacOS/Linux 설정
• 설치 확인
$ curl -o aws-iam-authenticator https://amazon-eks.s3-us-west-2.amazonaws.com/1.10.3/2018-07-26/bin/darwin/amd64/aws-iam-
authenticator
$ chmod +x ./aws-iam-authenticator
$ cp ./aws-iam-authenticator $HOME/bin/aws-iam-authenticator && export PATH=$HOME/bin:$PATH
$ echo 'export PATH=$HOME/bin:$PATH' >> ~/.bash_profile
$ echo 'export PATH=$HOME/bin:$PATH' >> ~/.zshrc
$ aws-iam-authenticator help
EKS Workshop 준비사
항
• Eksctl : simple CLI tool for creating EKS Cluster (
• Linux
• Mac (homebrew)
• Powershell
$ curl --silent --location "https://github.com/weaveworks/eksctl/releases/download/latest_release/eksctl_$(uname -s)_amd64.tar.gz"
| tar xz -C /tmp
$ sudo mv -v /tmp/eksctl /usr/local/bin
$ brew tap weaveworks/tap
$ brew install weaveworks/tap/eksctl
$ chocolatey install eksctl
EKS Workshop 준비사
항
• CLI 자격증명 구성
• ~/.aws/credentials
• ~/.aws/config
[default]
aws_access_key_id={EXAMPLE}
aws_secret_access_key={EXAMPLEKEY}
[default]
region=ap-northeast-2
output=json
EKS 배포 (eksctl)
• Eksctl 배포
(ap-northeast-2 기준 약 15-20분이 소요)
• 클러스터명은 자동생성, –name 옵션으로 지정가능 (eksworkshop-eksctl)
• CloudFormation : eksctl-{$Cluster_Name}-cluster
• m5.large * 2 instances (EKS Instance Type NodeInstanceType.AllowedValues 참고)
• Default AMI : AWS EKS AMI (custom EKS AMI 가능 - Packer활용 가능)
• Default Region : us-west-2
• dedicated VPC : 192.168.0.0/16
• kubernetes version : 1.11.x (EKS Version 참고)
• StorageClass : gp2 (AWS EBS 참고)
• CNI : Amazon VPC
• Node Autoscaler : –node-min, –node-max Auto Scaling 설정
• nodegroup : worker가 포함되는 group
• kubeconfig : ~/.kube/config 로 통합됨
$ eksctl create cluster --name=eksworkshop-eksctl --nodes=3 --node-ami=auto
EKS 배포 (eksctl
config)
• Config File 사용
https://github.com/weaveworks/eksctl/tree/master/examples
• VPC subnet정보 및 AutoScaling, AZ(availabilityZones)설정,
nodegroup 관리, node Instance에 preBootstrapCommand 등 사전활용 가능
$ eksctl create cluster -f example.yaml
Deploy K8s
Dashboard
• Kubernetes 대시보드 배포
• Expose (백그라운드, 모든 인터페이스 접속가능)
• aws-iam-authenticator를 통해 해당 클러스터 token 확인
• 대시보드 접속
http://localhost:8080/api/v1/namespaces/kube-system/services/https:kubernetes-
dashboard:/proxy/#!/login
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-
dashboard.yaml
$ kubectl proxy --port=8080 --address='0.0.0.0' --disable-filter=true &
$ aws-iam-authenticator token -i eksworkshop-eksctl --token-only
Deploy Microservices
• Git Clone (Sock Shop)
• LoadBalancer 수정
• Namespace 생성 및 sock-shop 배포
• front-end EXTERNAL-IP 접속
• DNS 배포시간으로 약 5분후 접속
$ git clone https://github.com/microservices-demo/microservices-demo.git sockshop
$ cd sockshop/deploy/kubernetes
$ sed -i 's/NodePort/LoadBalancer/g' complete-demo.yaml
$ kubectl create namespace sock-shop
$ kubectl apply -f complete-demo.yaml
$ kubectl get svc –n sock-shop
EKS 클러스터 및 삭제
• EXTERNAL-IP값과 연결된 모든 서비스를 삭제
• ALB삭제
• EC2 - Load Balancer
• EKS 클러스터 삭제
$ eksctl delete cluster --name=eksworkshop-eksctl
$ kubectl get svc –n sock-shop
$ kubectl delete svc front-end
정리
• eksctl 활용 단순, 명령 한줄로 배포
• 기본 VPC, KUBECONFIG 자동생성, aws-auth 자동설정(ConfigMap)
• Terraform 동시 활용 방안 (고민)
• aws-auth관리 – eksctl
• VPC, IAM관리 – terraform
• 서비스 제한 사항
• 계정, 리전당 최대 EKS Cluster 수 : 50
• 클러스터당 Control plane 최대 Security그룹 수 : 5
• 다른 Managed Kubernetes와의 비교
• https://docs.google.com/spreadsheets/d/1U0x4-NQegEPGM7eVTKJemhkPy18LWuHW5vX8uZzqzYo/edit#gid=0
• 추가 Resources
• Spot Instances 활용 (https://eksworkshop.com/spotworkers/)
• VPC확장 (https://eksworkshop.com/advanced-networking/)
• Cilium으로 micro-segmentation security 구현 – Kafka, ELK Stack 등
(http://docs.cilium.io/en/stable/gettingstarted/k8s-install-eks/)
문의
• 페이스북, 트위터 : @ddiiwoong
• 블로그 : ddii.dev
• 이메일 : ddiiwoong@gmail.com

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

Fargate 를 이용한 ECS with VPC 1부
Fargate 를 이용한 ECS with VPC 1부Fargate 를 이용한 ECS with VPC 1부
Fargate 를 이용한 ECS with VPC 1부
 
Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
 
Amazon CloudWatch Tutorial | AWS Certification | Cloud Monitoring Tools | AWS...
Amazon CloudWatch Tutorial | AWS Certification | Cloud Monitoring Tools | AWS...Amazon CloudWatch Tutorial | AWS Certification | Cloud Monitoring Tools | AWS...
Amazon CloudWatch Tutorial | AWS Certification | Cloud Monitoring Tools | AWS...
 
AWS Fargate와 Amazon ECS를 사용한 CI/CD 베스트 프랙티스 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Build...
AWS Fargate와 Amazon ECS를 사용한 CI/CD 베스트 프랙티스 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Build...AWS Fargate와 Amazon ECS를 사용한 CI/CD 베스트 프랙티스 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Build...
AWS Fargate와 Amazon ECS를 사용한 CI/CD 베스트 프랙티스 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Build...
 
Using HashiCorp’s Terraform to build your infrastructure on AWS - Pop-up Loft...
Using HashiCorp’s Terraform to build your infrastructure on AWS - Pop-up Loft...Using HashiCorp’s Terraform to build your infrastructure on AWS - Pop-up Loft...
Using HashiCorp’s Terraform to build your infrastructure on AWS - Pop-up Loft...
 
AWS 기반 클라우드 아키텍처 모범사례 - 삼성전자 개발자 포털/개발자 워크스페이스 - 정영준 솔루션즈 아키텍트, AWS / 유현성 수석,...
AWS 기반 클라우드 아키텍처 모범사례 - 삼성전자 개발자 포털/개발자 워크스페이스 - 정영준 솔루션즈 아키텍트, AWS / 유현성 수석,...AWS 기반 클라우드 아키텍처 모범사례 - 삼성전자 개발자 포털/개발자 워크스페이스 - 정영준 솔루션즈 아키텍트, AWS / 유현성 수석,...
AWS 기반 클라우드 아키텍처 모범사례 - 삼성전자 개발자 포털/개발자 워크스페이스 - 정영준 솔루션즈 아키텍트, AWS / 유현성 수석,...
 
Introduction to Amazon EKS
Introduction to Amazon EKSIntroduction to Amazon EKS
Introduction to Amazon EKS
 
AWS Builders - Industry Edition: DevSecOps on AWS - 시작은 IAM 부터
AWS Builders - Industry Edition: DevSecOps on AWS - 시작은 IAM 부터AWS Builders - Industry Edition: DevSecOps on AWS - 시작은 IAM 부터
AWS Builders - Industry Edition: DevSecOps on AWS - 시작은 IAM 부터
 
AWS ELB
AWS ELBAWS ELB
AWS ELB
 
쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호(넥슨코리아) :: AWS Community Day 2020
쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호(넥슨코리아) :: AWS Community Day 2020쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호(넥슨코리아) :: AWS Community Day 2020
쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호(넥슨코리아) :: AWS Community Day 2020
 
Comprehensive Terraform Training
Comprehensive Terraform TrainingComprehensive Terraform Training
Comprehensive Terraform Training
 
더욱 진화하는 AWS 네트워크 보안 - 신은수 AWS 시큐리티 스페셜리스트 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
더욱 진화하는 AWS 네트워크 보안 - 신은수 AWS 시큐리티 스페셜리스트 솔루션즈 아키텍트 :: AWS Summit Seoul 2021더욱 진화하는 AWS 네트워크 보안 - 신은수 AWS 시큐리티 스페셜리스트 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
더욱 진화하는 AWS 네트워크 보안 - 신은수 AWS 시큐리티 스페셜리스트 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
 
오토스케일링 제대로 활용하기 (김일호) - AWS 웨비나 시리즈 2015
오토스케일링 제대로 활용하기 (김일호) - AWS 웨비나 시리즈 2015오토스케일링 제대로 활용하기 (김일호) - AWS 웨비나 시리즈 2015
오토스케일링 제대로 활용하기 (김일호) - AWS 웨비나 시리즈 2015
 
AWS의 다양한 Compute 서비스(EC2, Lambda, ECS, Batch, Elastic Beanstalk)의 특징 이해하기 - 김...
AWS의 다양한 Compute 서비스(EC2, Lambda, ECS, Batch, Elastic Beanstalk)의 특징 이해하기 - 김...AWS의 다양한 Compute 서비스(EC2, Lambda, ECS, Batch, Elastic Beanstalk)의 특징 이해하기 - 김...
AWS의 다양한 Compute 서비스(EC2, Lambda, ECS, Batch, Elastic Beanstalk)의 특징 이해하기 - 김...
 
Amazon Simple Workflow Service (SWF)
Amazon Simple Workflow Service (SWF)Amazon Simple Workflow Service (SWF)
Amazon Simple Workflow Service (SWF)
 
Deep Dive Amazon EC2
Deep Dive Amazon EC2Deep Dive Amazon EC2
Deep Dive Amazon EC2
 
금융 회사를 위한 클라우드 이용 가이드 – 신은수 AWS 솔루션즈 아키텍트, 김호영 AWS 정책협력 담당:: AWS Cloud Week ...
금융 회사를 위한 클라우드 이용 가이드 –  신은수 AWS 솔루션즈 아키텍트, 김호영 AWS 정책협력 담당:: AWS Cloud Week ...금융 회사를 위한 클라우드 이용 가이드 –  신은수 AWS 솔루션즈 아키텍트, 김호영 AWS 정책협력 담당:: AWS Cloud Week ...
금융 회사를 위한 클라우드 이용 가이드 – 신은수 AWS 솔루션즈 아키텍트, 김호영 AWS 정책협력 담당:: AWS Cloud Week ...
 
AWS Summit Seoul 2023 | Amazon EKS, 중요한 건 꺾이지 않는 안정성
AWS Summit Seoul 2023 | Amazon EKS, 중요한 건 꺾이지 않는 안정성AWS Summit Seoul 2023 | Amazon EKS, 중요한 건 꺾이지 않는 안정성
AWS Summit Seoul 2023 | Amazon EKS, 중요한 건 꺾이지 않는 안정성
 
AWS IAM과 친해지기 – 조이정, AWS 솔루션즈 아키텍트:: AWS Builders Online Series
AWS IAM과 친해지기 – 조이정, AWS 솔루션즈 아키텍트:: AWS Builders Online Series AWS IAM과 친해지기 – 조이정, AWS 솔루션즈 아키텍트:: AWS Builders Online Series
AWS IAM과 친해지기 – 조이정, AWS 솔루션즈 아키텍트:: AWS Builders Online Series
 
(Draft) Kubernetes - A Comprehensive Overview
(Draft) Kubernetes - A Comprehensive Overview(Draft) Kubernetes - A Comprehensive Overview
(Draft) Kubernetes - A Comprehensive Overview
 

Ähnlich wie EKS workshop 살펴보기

Amazon EKS로 웹 애플리케이션 구축하기-awskrug.pdf
Amazon EKS로 웹 애플리케이션 구축하기-awskrug.pdfAmazon EKS로 웹 애플리케이션 구축하기-awskrug.pdf
Amazon EKS로 웹 애플리케이션 구축하기-awskrug.pdf
Byungho Lee
 
Amazon ECS를 통한 도커 기반 콘테이너 서비스 구축하기 - AWS Summit Seoul 2017
Amazon ECS를 통한 도커 기반 콘테이너 서비스 구축하기 - AWS Summit Seoul 2017Amazon ECS를 통한 도커 기반 콘테이너 서비스 구축하기 - AWS Summit Seoul 2017
Amazon ECS를 통한 도커 기반 콘테이너 서비스 구축하기 - AWS Summit Seoul 2017
Amazon Web Services Korea
 
쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호
쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호
쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호
용호 최
 
AWS CLOUD 2018- 관리형 Kubernetes 지원과 새로운 컨테이너 서비스 Amazon Fargate 소개 (정영준 솔루션즈 아...
AWS CLOUD 2018- 관리형 Kubernetes 지원과 새로운 컨테이너 서비스 Amazon Fargate 소개 (정영준 솔루션즈 아...AWS CLOUD 2018- 관리형 Kubernetes 지원과 새로운 컨테이너 서비스 Amazon Fargate 소개 (정영준 솔루션즈 아...
AWS CLOUD 2018- 관리형 Kubernetes 지원과 새로운 컨테이너 서비스 Amazon Fargate 소개 (정영준 솔루션즈 아...
Amazon Web Services Korea
 

Ähnlich wie EKS workshop 살펴보기 (20)

ECS+Locust로 부하 테스트 진행하기
ECS+Locust로 부하 테스트 진행하기ECS+Locust로 부하 테스트 진행하기
ECS+Locust로 부하 테스트 진행하기
 
[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...
[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...
[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...
 
Amazon EKS로 웹 애플리케이션 구축하기-awskrug.pdf
Amazon EKS로 웹 애플리케이션 구축하기-awskrug.pdfAmazon EKS로 웹 애플리케이션 구축하기-awskrug.pdf
Amazon EKS로 웹 애플리케이션 구축하기-awskrug.pdf
 
Cloud Native Days Korea 2019 - kakao's k8s_as_a_service
Cloud Native Days Korea 2019 - kakao's k8s_as_a_serviceCloud Native Days Korea 2019 - kakao's k8s_as_a_service
Cloud Native Days Korea 2019 - kakao's k8s_as_a_service
 
[온라인교육시리즈] NKS에서 Cluster & Pods Autoscaling 적용
[온라인교육시리즈] NKS에서 Cluster & Pods Autoscaling 적용[온라인교육시리즈] NKS에서 Cluster & Pods Autoscaling 적용
[온라인교육시리즈] NKS에서 Cluster & Pods Autoscaling 적용
 
도커 초보의 Elastic Container Service 실습
도커 초보의 Elastic Container Service 실습도커 초보의 Elastic Container Service 실습
도커 초보의 Elastic Container Service 실습
 
Amazon ECS를 통한 도커 기반 콘테이너 서비스 구축하기 - AWS Summit Seoul 2017
Amazon ECS를 통한 도커 기반 콘테이너 서비스 구축하기 - AWS Summit Seoul 2017Amazon ECS를 통한 도커 기반 콘테이너 서비스 구축하기 - AWS Summit Seoul 2017
Amazon ECS를 통한 도커 기반 콘테이너 서비스 구축하기 - AWS Summit Seoul 2017
 
세션3_데보션테크데이_gitopsinfra_v1.1.pdf
세션3_데보션테크데이_gitopsinfra_v1.1.pdf세션3_데보션테크데이_gitopsinfra_v1.1.pdf
세션3_데보션테크데이_gitopsinfra_v1.1.pdf
 
[제3회 스포카콘] Kubernetes in Spoqa
[제3회 스포카콘] Kubernetes in Spoqa[제3회 스포카콘] Kubernetes in Spoqa
[제3회 스포카콘] Kubernetes in Spoqa
 
AWS Kubernetes 서비스 자세히 살펴보기 (정영준 & 이창수, AWS 솔루션즈 아키텍트) :: AWS DevDay2018
AWS Kubernetes 서비스 자세히 살펴보기 (정영준 & 이창수, AWS 솔루션즈 아키텍트) :: AWS DevDay2018AWS Kubernetes 서비스 자세히 살펴보기 (정영준 & 이창수, AWS 솔루션즈 아키텍트) :: AWS DevDay2018
AWS Kubernetes 서비스 자세히 살펴보기 (정영준 & 이창수, AWS 솔루션즈 아키텍트) :: AWS DevDay2018
 
Amazon EKS를 위한 AWS CDK와 CDK8s 활용법 - 염지원, 김광영 AWS 솔루션즈 아키텍트 :: AWS Summit Seou...
Amazon EKS를 위한 AWS CDK와 CDK8s 활용법 - 염지원, 김광영 AWS 솔루션즈 아키텍트 :: AWS Summit Seou...Amazon EKS를 위한 AWS CDK와 CDK8s 활용법 - 염지원, 김광영 AWS 솔루션즈 아키텍트 :: AWS Summit Seou...
Amazon EKS를 위한 AWS CDK와 CDK8s 활용법 - 염지원, 김광영 AWS 솔루션즈 아키텍트 :: AWS Summit Seou...
 
Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트)
Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트)Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트)
Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트)
 
쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호
쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호
쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호
 
AWS DevDay 실습 가이드 - 콘테이너
AWS DevDay 실습 가이드 - 콘테이너AWS DevDay 실습 가이드 - 콘테이너
AWS DevDay 실습 가이드 - 콘테이너
 
Kubernetes on Premise Practical Guide
Kubernetes on Premise Practical GuideKubernetes on Premise Practical Guide
Kubernetes on Premise Practical Guide
 
AWS CLOUD 2018- 관리형 Kubernetes 지원과 새로운 컨테이너 서비스 Amazon Fargate 소개 (정영준 솔루션즈 아...
AWS CLOUD 2018- 관리형 Kubernetes 지원과 새로운 컨테이너 서비스 Amazon Fargate 소개 (정영준 솔루션즈 아...AWS CLOUD 2018- 관리형 Kubernetes 지원과 새로운 컨테이너 서비스 Amazon Fargate 소개 (정영준 솔루션즈 아...
AWS CLOUD 2018- 관리형 Kubernetes 지원과 새로운 컨테이너 서비스 Amazon Fargate 소개 (정영준 솔루션즈 아...
 
Amazon ECS/ECR을 활용하여 마이크로서비스 구성하기 - 김기완 (AWS 솔루션즈아키텍트)
Amazon ECS/ECR을 활용하여 마이크로서비스 구성하기 - 김기완 (AWS 솔루션즈아키텍트)Amazon ECS/ECR을 활용하여 마이크로서비스 구성하기 - 김기완 (AWS 솔루션즈아키텍트)
Amazon ECS/ECR을 활용하여 마이크로서비스 구성하기 - 김기완 (AWS 솔루션즈아키텍트)
 
AWS 관리형 서비스를 활용하여 Kubernetes 를 위한 Devops 환경 구축하기 - 김광영, AWS솔루션즈 아키텍트:: AWS S...
AWS 관리형 서비스를 활용하여 Kubernetes 를 위한 Devops 환경 구축하기 - 김광영, AWS솔루션즈 아키텍트::  AWS S...AWS 관리형 서비스를 활용하여 Kubernetes 를 위한 Devops 환경 구축하기 - 김광영, AWS솔루션즈 아키텍트::  AWS S...
AWS 관리형 서비스를 활용하여 Kubernetes 를 위한 Devops 환경 구축하기 - 김광영, AWS솔루션즈 아키텍트:: AWS S...
 
AWS DevOps와 ECR을 통한 Elastic Beanstalk 배포 환경 구축 및 타 환경과의 비교
AWS DevOps와 ECR을 통한 Elastic Beanstalk 배포 환경 구축 및 타 환경과의 비교AWS DevOps와 ECR을 통한 Elastic Beanstalk 배포 환경 구축 및 타 환경과의 비교
AWS DevOps와 ECR을 통한 Elastic Beanstalk 배포 환경 구축 및 타 환경과의 비교
 
쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개
쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개
쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개
 

Mehr von Jinwoong Kim

Mehr von Jinwoong Kim (11)

Prometheus Project Journey
Prometheus Project JourneyPrometheus Project Journey
Prometheus Project Journey
 
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
 
Data(?)Ops with CircleCI
Data(?)Ops with CircleCIData(?)Ops with CircleCI
Data(?)Ops with CircleCI
 
OpenCensus with Prometheus and Kubernetes
OpenCensus with Prometheus and KubernetesOpenCensus with Prometheus and Kubernetes
OpenCensus with Prometheus and Kubernetes
 
Knative로 서버리스 워크로드 구현
Knative로 서버리스 워크로드 구현Knative로 서버리스 워크로드 구현
Knative로 서버리스 워크로드 구현
 
Opencensus with prometheus and kubernetes
Opencensus with prometheus and kubernetesOpencensus with prometheus and kubernetes
Opencensus with prometheus and kubernetes
 
Cloud Native 오픈소스 서비스 소개 및 Serverless로 실제 게임 개발하기
Cloud Native 오픈소스 서비스 소개 및 Serverless로 실제 게임 개발하기Cloud Native 오픈소스 서비스 소개 및 Serverless로 실제 게임 개발하기
Cloud Native 오픈소스 서비스 소개 및 Serverless로 실제 게임 개발하기
 
Spinnaker on Kubernetes
Spinnaker on KubernetesSpinnaker on Kubernetes
Spinnaker on Kubernetes
 
Cloud Z 의 오픈소스 서비스 소개 및 Serverless로 게임 개발하기
Cloud Z 의 오픈소스 서비스 소개 및 Serverless로 게임 개발하기Cloud Z 의 오픈소스 서비스 소개 및 Serverless로 게임 개발하기
Cloud Z 의 오픈소스 서비스 소개 및 Serverless로 게임 개발하기
 
Continuous Delivery with Spinnaker on K8s(kubernetes) Cluster
Continuous Delivery with Spinnaker on K8s(kubernetes) Cluster Continuous Delivery with Spinnaker on K8s(kubernetes) Cluster
Continuous Delivery with Spinnaker on K8s(kubernetes) Cluster
 
Provisioning Dedicated Game Server on Kubernetes Cluster
Provisioning Dedicated Game Server on Kubernetes ClusterProvisioning Dedicated Game Server on Kubernetes Cluster
Provisioning Dedicated Game Server on Kubernetes Cluster
 

EKS workshop 살펴보기

  • 2. 발표자 김진웅 @ddiiwoong • Platform Architect @SK C&C • Interested in Kubernetes and Serverless(FaaS), DevOps, SRE, ML/DL • ~18년 OSS기반 FaaS 플랫폼 (https://skcloud.github.io/zaction/) 스크럼마스터, SRE • 19년~ BaaS(BlockChain) 기반 데이터레이크 플랫폼 설계/구축
  • 3. EKS • Amazon Elastic Container Service for Kubernetes • Fully Managed Kubernetes Services • https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/what-is-eks.html • 기존 서비스통합 • Registry : Amazon ECR • LoadBalancer : Elastic Load Balancing • Auth : 인증용 IAM • CNI : Amazon VPC Kubernetes 기능 OSS, 상용 AWS Registry Dockerhub, Harbor ECR LoadBalancer nginx, traefik ELB(ALB) Cluster 인증 dex, keycloak aws-iam-authenticator CNI(Network Plugin) Calico, weave, Cilium VPC
  • 4. EKS • Kops(EC2기반 Kubernetes배포)와 차이 (19년 4월 4일 기준) 구분 KOPS EKS 버전 1.14.0 1.12.7 권한관리 RBAC IAM(aws-iam-authenticator) 관리형태 Master, ETCD, DNS, Scheduler 직접관리 완전관리형 (0.2USD/hr*Cluster) 네트워킹 Flannel(CNI 대부분 지원) VPC(Calico, Cilium 등) 상태 S3 Bucket 완전관리형 API권한 모든권한 KubeAPI, Kubelet 수정불가 Taint, Labeling Instance 단위 가능 미지원
  • 5. EKS Networking • CNI (Container Network Interface)
  • 6. EKS Networking • SNAT Enabled • Default • CNI가 SNAT를 수행해서 Public 주소로 외부와 통신
  • 7. EKS Networking • SNAT Disabled • VPC Peering, Transit VPC, Direct Connect의 경우 • NAT를 외부에서 처리되도록 함 (https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/external-snat.html)
  • 8. EKS Networking • 3rd Party CNI (Container Network Interface) • Calico (L3 Layer) • https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/calico.html • 테넌트 별(dev,stage,prod) 네트워크 격리 및 세분화 구현 • Cilium (L7 Layer) • http://docs.cilium.io/en/v1.4/gettingstarted/k8s-install-eks/?highlight=eks • Kafka, Elasticsearch 보안 • EKS – Instance 간 SecurityGroup 설정
  • 9. EKS Workshop • https://eksworkshop.com/ Kubernete를 처음접하는 유저를 위한 기본 개념과 아키텍처, 그리고 VPC, ALB를 활용하여 EKS에 대한 설치, 구성, 데모앱 배포 등을 해볼수 있는 튜토리얼 사이트 • AWSKRUG에서 한글화 작업도 진행중 • https://awskrug.github.io/eks-workshop/deploy/
  • 10. EKS Workshop 준비사 항 • AWS Account • Free Tire 불가 (EKS) • Credit 필요 • IAM • Terraform과 다른 권한 필요 • https://github.com/ddiiwoong/eksworkshop/blob/master/iam_for_eksworkshop. json • kubectl, aws-iam-authenticator • kubectl : kubernetes CLI • aws-iam-authenticator : AWS IAM Authenticator CLI • eksctl • Cloudformation 사용 (15-20분 소요)
  • 11. EKS Workshop 준비사 항 • IAM 설정 • EKS workshop은 기본적으로 Administrator 권한으로 진행됨 • 주요 Action : iam, eks(*), ec2, autoscaling • User 권한은 아래 링크를 참고 • https://github.com/ddiiwoong/eksworkshop/blob/master/iam_for_eksworksh op.json • 추가적인 확인 필요 • Terraform eks IAM • https://github.com/terraform-aws-modules/terraform-aws- eks/blob/master/examples/eks_test_fixture/README.md
  • 12. EKS Workshop 준비사 항 • Kubectl : Kubernetes CLI • Linux • Mac • PowerShell (PATH설정 추가필요) • 설치 확인 $ mkdir –p ~/.kube $ sudo curl --silent --location -o /usr/local/bin/kubectl "https://amazon-eks.s3-us-west-2.amazonaws.com/1.11.5/2018-12- 06/bin/linux/amd64/kubectl" $ sudo chmod +x /usr/local/bin/kubectl $ brew install kubernetes-cli curl -o kubectl.exe https://amazon-eks.s3-us-west-2.amazonaws.com/1.10.3/2018-07-26/bin/windows/amd64/kubectl.exe $ kubectl version --short --client
  • 13. EKS Workshop 준비사 항 • aws-iam-authenticator • Linux: https://amazon-eks.s3-us-west-2.amazonaws.com/1.10.3/2018-07-26/bin/linux/amd64/aws-iam-authenticator • MacOS: https://amazon-eks.s3-us-west-2.amazonaws.com/1.10.3/2018-07-26/bin/darwin/amd64/aws-iam- authenticator • Windows: https://amazon-eks.s3-us-west-2.amazonaws.com/1.10.3/2018-07-26/bin/windows/amd64/aws-iam- authenticator.exe • MacOS/Linux 설정 • 설치 확인 $ curl -o aws-iam-authenticator https://amazon-eks.s3-us-west-2.amazonaws.com/1.10.3/2018-07-26/bin/darwin/amd64/aws-iam- authenticator $ chmod +x ./aws-iam-authenticator $ cp ./aws-iam-authenticator $HOME/bin/aws-iam-authenticator && export PATH=$HOME/bin:$PATH $ echo 'export PATH=$HOME/bin:$PATH' >> ~/.bash_profile $ echo 'export PATH=$HOME/bin:$PATH' >> ~/.zshrc $ aws-iam-authenticator help
  • 14. EKS Workshop 준비사 항 • Eksctl : simple CLI tool for creating EKS Cluster ( • Linux • Mac (homebrew) • Powershell $ curl --silent --location "https://github.com/weaveworks/eksctl/releases/download/latest_release/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp $ sudo mv -v /tmp/eksctl /usr/local/bin $ brew tap weaveworks/tap $ brew install weaveworks/tap/eksctl $ chocolatey install eksctl
  • 15. EKS Workshop 준비사 항 • CLI 자격증명 구성 • ~/.aws/credentials • ~/.aws/config [default] aws_access_key_id={EXAMPLE} aws_secret_access_key={EXAMPLEKEY} [default] region=ap-northeast-2 output=json
  • 16. EKS 배포 (eksctl) • Eksctl 배포 (ap-northeast-2 기준 약 15-20분이 소요) • 클러스터명은 자동생성, –name 옵션으로 지정가능 (eksworkshop-eksctl) • CloudFormation : eksctl-{$Cluster_Name}-cluster • m5.large * 2 instances (EKS Instance Type NodeInstanceType.AllowedValues 참고) • Default AMI : AWS EKS AMI (custom EKS AMI 가능 - Packer활용 가능) • Default Region : us-west-2 • dedicated VPC : 192.168.0.0/16 • kubernetes version : 1.11.x (EKS Version 참고) • StorageClass : gp2 (AWS EBS 참고) • CNI : Amazon VPC • Node Autoscaler : –node-min, –node-max Auto Scaling 설정 • nodegroup : worker가 포함되는 group • kubeconfig : ~/.kube/config 로 통합됨 $ eksctl create cluster --name=eksworkshop-eksctl --nodes=3 --node-ami=auto
  • 17. EKS 배포 (eksctl config) • Config File 사용 https://github.com/weaveworks/eksctl/tree/master/examples • VPC subnet정보 및 AutoScaling, AZ(availabilityZones)설정, nodegroup 관리, node Instance에 preBootstrapCommand 등 사전활용 가능 $ eksctl create cluster -f example.yaml
  • 18. Deploy K8s Dashboard • Kubernetes 대시보드 배포 • Expose (백그라운드, 모든 인터페이스 접속가능) • aws-iam-authenticator를 통해 해당 클러스터 token 확인 • 대시보드 접속 http://localhost:8080/api/v1/namespaces/kube-system/services/https:kubernetes- dashboard:/proxy/#!/login $ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes- dashboard.yaml $ kubectl proxy --port=8080 --address='0.0.0.0' --disable-filter=true & $ aws-iam-authenticator token -i eksworkshop-eksctl --token-only
  • 19. Deploy Microservices • Git Clone (Sock Shop) • LoadBalancer 수정 • Namespace 생성 및 sock-shop 배포 • front-end EXTERNAL-IP 접속 • DNS 배포시간으로 약 5분후 접속 $ git clone https://github.com/microservices-demo/microservices-demo.git sockshop $ cd sockshop/deploy/kubernetes $ sed -i 's/NodePort/LoadBalancer/g' complete-demo.yaml $ kubectl create namespace sock-shop $ kubectl apply -f complete-demo.yaml $ kubectl get svc –n sock-shop
  • 20. EKS 클러스터 및 삭제 • EXTERNAL-IP값과 연결된 모든 서비스를 삭제 • ALB삭제 • EC2 - Load Balancer • EKS 클러스터 삭제 $ eksctl delete cluster --name=eksworkshop-eksctl $ kubectl get svc –n sock-shop $ kubectl delete svc front-end
  • 21. 정리 • eksctl 활용 단순, 명령 한줄로 배포 • 기본 VPC, KUBECONFIG 자동생성, aws-auth 자동설정(ConfigMap) • Terraform 동시 활용 방안 (고민) • aws-auth관리 – eksctl • VPC, IAM관리 – terraform • 서비스 제한 사항 • 계정, 리전당 최대 EKS Cluster 수 : 50 • 클러스터당 Control plane 최대 Security그룹 수 : 5 • 다른 Managed Kubernetes와의 비교 • https://docs.google.com/spreadsheets/d/1U0x4-NQegEPGM7eVTKJemhkPy18LWuHW5vX8uZzqzYo/edit#gid=0 • 추가 Resources • Spot Instances 활용 (https://eksworkshop.com/spotworkers/) • VPC확장 (https://eksworkshop.com/advanced-networking/) • Cilium으로 micro-segmentation security 구현 – Kafka, ELK Stack 등 (http://docs.cilium.io/en/stable/gettingstarted/k8s-install-eks/)
  • 22. 문의 • 페이스북, 트위터 : @ddiiwoong • 블로그 : ddii.dev • 이메일 : ddiiwoong@gmail.com