์ด๋ฒ ํฌ์คํธ์์๋ AWS์์ EKS (AWS Managed Kubernetes Service) ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ๋ค๋ฃน๋๋ค.
ย
1. EKS (AWS Managed Kubernetes Service)
ย
![](http://k.kakaocdn.net/dn/xcKZL/btqtWilr8PX/z9Cps9SE4YvcDL9fo4S6T0/img.png)
ย
๊ตฌ๊ธ ํด๋ผ์ฐ๋ ํ๋ซํผ์์๋ ๊ฝค ์์ ๋ถํฐ GKE๋ผ๋ ์ด๋ฆ์ผ๋ก ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ ๊ณตํ๊ณ ์์์ง๋ง, AWS๋ ์๋ ์ AWS Managed Kubernetes ์๋น์ค๋ฅผ EKS๋ผ๋ ์ด๋ฆ์ผ๋ก ์ถ์ํ์ต๋๋ค.ย GKE์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ์ ๊ด๋ฆฌ๋ฅผ AWS๊ฐ ๋ด๋นํด์ฃผ๋ ๋ฐฉ์์ ๋๋ค.ย ์๋น์ค๊ฐ ์ถ์๋ ์ง ์ผ๋ง ๋์ง ์์์์ธ์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง, ์๋ฌด๋ฆฌ ๊ตฌ๊ธ๋ง์ ํด๋ ๊ธฐ์ด์ ์ธ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ์ฝ๊ฒ ์๋ ค์ฃผ๋ ๊ณณ์ด ์์ด ์ง์ ํฌ์คํธ๋ฅผ ์์ฑํ๊ฒ ๋์์ต๋๋ค.
ย
AWS ๊ณต์ ๋ฌธ์์์๋ EKS์ Quickstart์ ๋ํด์ ์ค๋ช ํ๊ณ ์์ผ๋, ์ค๋ช ์ด ๋ถ์กฑํ ๋ถ๋ถ์ด ์์ด ๋ฐ๋ผํ๊ธฐ ํ๋ค๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
ย
2. EKS์์ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ ์์ฑํ๊ธฐ
[AWS Web UI] ์ [AWS CLI] ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ ๋ ๊ฐ์ง๋ฅผ ๊ฐ๊ฐ ์ค๋ช ํฉ๋๋ค. AWS CLI๊ฐ ๋ ์ต์ํ๋ค๋ฉด CLI๋ฅผ ์ฌ์ฉํด๋ ๋ฌด๊ดํฉ๋๋ค.
ย
ย
2.1 ์ฌ์ ์ค๋น
ย
๋ณธ ํฌ์คํธ๋ (1) AWS CLI์ (2) AWS ์น ์ฌ์ดํธ๋ฅผ ํตํด EKS๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ ๋ ๊ฐ์ง๋ฅผ ๋ชจ๋๋ฅผ ์ค๋ช ํ์ง๋ง, ์ด ๊ธ์ ํ๋ฐ๋ถ์์๋ aws CLI์ kubectl์ ํ์์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์, ๊ฐ๋ฅํ๋ค๋ฉด aws CLI๋ฅผ ์ค์นํ ๋ค ์งํํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
ย
์ด ๊ธ์์๋ AWS CLI๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ์ ๊ฐ ์ด์ ์ ๋ง๋ค์ด๋์๋ CLI ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ ๊ฒ์ ๋๋ค.ย Dockerfile์ ์ ์ Github์์ ํ์ธํ ์ ์์ผ๋ฏ๋ก, ์ง์ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํด ์ฌ์ฉํด๋ ๋ฉ๋๋ค. ์ต๋ช ๊ฐ๋ฐ์์ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ๋ค ์ฐ๋ ๊ฒ์ ์ข์ ์ต๊ด์ด ์๋๋ผ๋ ๊ฒ์ ๊ธฐ์ตํ์ จ์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค.
ย
ย
AWS ๊ณ์ ์ ์ ๊ทผํ๊ธฐ ์ํ ์ ๊ทผ ํค ๋ฐ ๋น๋ฐ ํค๋ฅผ AWS ์น ํ์ด์ง์์ ๋ฐ๊ธ๋ฐ์ ๋ค, ํ๊ฒฝ ๋ณ์๋ก ๋ด๋ณด๋ ๋๋ค.
ย
ย
ย
2.2 IAM Role ์์ฑ
ย
[AWS Web UI]
ย
๊ฐ์ฅ ๋จผ์ , EKS๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ IAM ์ญํ (Role) ์ ์์ฑํด์ผ ํฉ๋๋ค.ย IAM ์ญํ ์์ฑ ํ์ด์ง์ ๋ค์ด๊ฐ '์ญํ ๋ง๋ค๊ธฐ' ๋ฅผ ํด๋ฆญํฉ๋๋ค.
ย
![](http://k.kakaocdn.net/dn/E1rTq/btqtXBR9BHM/Yrn02Pq0wRYTbVwg78Bdk1/img.png)
ย
![](http://k.kakaocdn.net/dn/GkNTo/btqtWg84yEb/UmxYZKUkP6l6qSz7kBllC0/img.png)
AWS ์๋น์ค ์ค, ํ๋จ์ EKS๋ฅผ ํด๋ฆญํ ๋ค, ๊ณ์ํด์ ๋ค์ ํ์ด์ง๋ก ๋์ด๊ฐ๋๋ค. ์ ์ ํ ์ด๋ฆ์ ์ ๋ ฅํด ์ญํ ์ ์์ฑํ๋ฉด ๋ฉ๋๋ค.
ย
![](http://k.kakaocdn.net/dn/9k4iH/btqtWhmB7AJ/LfikLuxfNDk1UGoKPt1tXK/img.png)
ย
[AWS CLI]
ย
๋๋, aws CLI๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด ์๋์ ๊ฐ์ด ๊ฐํธํ๊ฒ ์์ฑํ ์๋ ์์ต๋๋ค. ์๋ ๋ด์ฉ์ผ๋ก trust-policy.json ํ์ผ์ ์์ฑํฉ๋๋ค.
ย
ย
ย
2.3 ์ฌ์ฉํ ์ฟ ๋ฒ๋คํฐ์ค ๋ฐ ์ธํ๋ผ ๋ฒ์ ์ ํ
ย
ํ์ฌ EKS๋ ๋ค์ํ ๋ฒ์ ์ ์ฟ ๋ฒ๋คํฐ์ค ๋ฒ์ ๋ฐ ๊ทธ์ ์์ํ๋ ์ธํ๋ผ ๋ฒ์ (AMI)์ ํ ํ๋ฆฟ์ผ๋ก์ ์ ๊ณตํ๊ณ ์์ต๋๋ค. EKS๋ฅผ ์ํ AMI ๋ฒ์ ์ ์ ํํด ์ฌ์ฉํ ์ ์๋๋ฐ, ์ฌ์ฉ ๊ฐ๋ฅํ AMI ๋ฒ์ ์ย aws-eks-ami Github์์ ํ์ธํ ์ ์์ต๋๋ค. ์ฐธ๊ณ ๋ก, EKS AMI๋ ํ์์ฝํ์ ํจ์ปค(Packer)๋ฅผ ์ฌ์ฉํด ๋น๋๋๋ ๋ฏ ์ถ์ต๋๋ค.
ย
![](http://k.kakaocdn.net/dn/SScJX/btqtXWaH1kt/DqWkR1UoPMFBkTmJopTsNk/img.png)
Github์ README.md์์๋ ์ฌ์ฉ ๊ฐ๋ฅํ AMI ๋ฒ์ ์ ์ ํ์ ๊ฐ์ด ๋ช ์ํ๊ณ ์์ผ๋, ์ค์ ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ํ ํ๋ฆฟ์ EKS์์ ์ ๊ณตํ๊ณ ์๋ s3 ํ์ผ๋ค์์๋ ํ์ธํ ์ ์์ต๋๋ค.
ย
ย
2018๋ ์ ์ถ์๋ ํ ํ๋ฆฟ์ ์์ธ ๋ฆฌ์ ์ AZ๋ฅผ ๊ณ ๋ คํด ์์ฑ๋ ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์ ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋ฐ๋ผ์ 2019๋ ๋ฒ์ ์ ์ฌ์ฉํด์ผ ํ๋ฉฐ, ๋ณธ ํฌ์คํธ์์๋ย 2019๋ 2์ 11์ ๋ฒ์ , 1.11 version (2019-02-11)ย ์ ํ ํ๋ฆฟ์ ์ฌ์ฉํ๊ธฐ๋ก ํ์ต๋๋ค. ๋ค๋ฅธ ๋ฒ์ ์ ์ฌ์ฉํ๋๋ผ๋ ์ผ๊ด๋ ๋ฒ์ ์ ์ฌ์ฉํ๊ธฐ๋ง ํ๋ฉด ํฌ๊ฒ ๋ฌธ์ ๋ ์์ต๋๋ค.
ย
ย
ย
2.4 Cloudformation์ผ๋ก EKS๋ฅผ ์ํ VPC ๋ฐ Subnet ์์ฑ
ย
GKE์ ๋ฌ๋ฆฌ, EKS๋ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ์ ์ฌ์ฉ๋๋ ๊ฐ์ข ๋ฆฌ์์ค (๋ด๋ถ ๋คํธ์ํฌ) ๋ฅผ ์๋์ผ๋ก ์์ฑํด์ฃผ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ฐ๋์ VPC์ Subnet ๋ฑ์ ๋ฏธ๋ฆฌ ์์ฑํด ๋์์ผ ํ๋ ์ฝ๊ฐ์ ๋ฒ๊ฑฐ๋ก์์ด ์์ต๋๋ค. VPC์ Subnet์ ํ ๋ผํผ, ๋๋ AWS ์ฌ์ดํธ์์ ์ง์ ์์ฑํ ์๋ ์์ง๋ง, AWS ๊ณต์ ๋ฌธ์์์๋ Cloudformation์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ฐ์ด๋ํ๊ณ ์๊ธฐ์ ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๊ธฐ๋ก ํ์ต๋๋ค.
ย
[AWS Web UI]
ย
Cloudformation ํ์ด์ง์ ๋ค์ด๊ฐ ์คํ ์์ฑ ๋ฒํผ์ ๋๋ฅด๋ฉด ์๋์ ๊ฐ์ ํ๋ฉด์ ๋ณผ ์ ์์ต๋๋ค
ย
![](http://k.kakaocdn.net/dn/TxIpT/btqtYJ2XLJa/SHokMk0ilaDmocd2SL3181/img.png)
Amazon S3 URL์ ์๋์ ๋งํฌ๋ฅผ ์ ๋ ฅํฉ๋๋ค. ์์์ ์ธ๊ธํ๋๊ฒ์ฒ๋ผ, 2019-02-11 ๋ฒ์ ์ ํ์ผ์ ์ฌ์ฉํฉ๋๋ค.
ย
๊ทธ ๋ค, ์ ์ ํ ์ด๋ฆ์ ์ ๋ ฅํด ์คํ์ ์์ฑํฉ๋๋ค. (์ด๋ฆ ์์ :ย eks-vpc-stack)
ย
ย
[AWS CLI]
ย
์๋์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด Cloudformation ์คํ์ ์์ฑํฉ๋๋ค. ๋ณ๋์ VPC, Subnet ์ต์ ๋ณ๊ฒฝ ์์ด ๊ธฐ๋ณธ ์ธํ ๊ฐ์ ์ฌ์ฉํฉ๋๋ค.
ย
ย
ย
ย
2.5 kubectl ์ค์น
ย
EKS์ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ์ ์ดํ๊ธฐ ์ํ CLI์ธ kubectl์ ๋ด๋ ค๋ฐ์ต๋๋ค. ํฌ๊ฒ ์ด๋ ค์ด ๋ถ๋ถ์ ์์ต๋๋ค.
ย
ย
ย
2.6 EKS ํด๋ฌ์คํฐ ์์ฑ
ย
[AWS Web UI]
ย
EKS ํด๋ฌ์คํฐ ์์ฑ์ ์ํดย EKS ํ์ด์ง๋ก ๋ค์ด๊ฐ ์ ์ ํ ํด๋ฌ์คํฐ ์ด๋ฆ์ ์ ๋ ฅํ ๋ค '๋ค์ ๋จ๊ณ' ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
ย
![](http://k.kakaocdn.net/dn/7zRxV/btqtWIEtCf9/CX5lUyBYkMxYpZqycoKxF0/img.png)
์์์ ์์ฑํ๋ IAM ์ญํ , VPC ๋ฐ Subnet์ ์ ํํฉ๋๋ค. ์ด๋ฆ์ eks stack์ด ๋ค์ด๊ฐ ์๋ ๊ฒ์ ์ ํํ๋ฉด ๋ฉ๋๋ค. ์ฌ๊ธฐ์ ํ ๊ฐ์ง ๋์ฌ๊ฒจ ๋ณผ ๊ฒ์, ์์์ Cloudformation์ผ๋ก ์์ฑํ๋ VPC์ Subnet์ด 2๊ฐ์ AZ๋ก ๋ถ๋ฆฌ๋์ด์๋ค๋ ์ ์ ๋๋ค. ์ด์ ๋ํด์๋ ๊ธ์ ๋ง์ง๋ง์์ ๋ค์ ๊ทธ๋ฆผ์ผ๋ก ๊ทธ๋ ค ๋ณผ ์์ ์ ๋๋ค.ย
ย
์ฟ ๋ฒ๋คํฐ์ค ๋ฒ์ ๋ ์ ํํ ์ ์์ผ๋ฉฐ, 2019๋ 3์ ๊ธฐ์ค์ผ๋ก 1.10, 1.11, 1.12 ๋ฒ์ ์ ์ ๊ณตํ๊ณ ์์ต๋๋ค. 1.11 ๋ฒ์ ์ด default๋ก ์ค์ ๋์ด ์์ผ๋ฉฐ, ์ฌ์ฉํ๋ Cloudformation ๋ฒ์ ๋ 1.11 ์ด๊ธฐ ๋๋ฌธ์, 1.11 ๋ฒ์ ์ ์ฌ์ฉํ๊ฒ ์ต๋๋ค. (Cloudformation์ ํ ํ๋ฆฟ ๋ฒ์ :1.11์ด ์ฟ ๋ฒ๋คํฐ์ค ๋ฒ์ ์ ๋ํ๋ด๋ ๊ฒ์ธ์ง๋ ํ์คํ์ง ์์ต๋๋ค)
ย
![](http://k.kakaocdn.net/dn/bpdhHy/btqtWH6AR3W/erDenyzaoOBksQSDYeV18k/img.png)
๊ทธ ๋ค ์์ฑ์ ํด๋ฆญํด ํด๋ฌ์คํฐ ์์ฑ์ ์๋ฃํฉ๋๋ค. ์์ฑ ์๋ฃ๊น์ง ์ฝ 10~20๋ถ์ด ์์๋ฉ๋๋ค. ์ปคํผ๋ฅผ ํ์ ๋ง์๋ ๊ฒ๋ ๊ด์ฐฎ์ ๊ฒ ๊ฐ์ต๋๋ค.
ย
ย
[AWS CLI]
ย
์๋์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด EKS ํด๋ฌ์คํฐ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ๋จ, eks create-cluster ๋ช ๋ น์ด์์ Subnet๊ณผ ๋ณด์ ๊ทธ๋ฃน์ ID๋ฅผ ํ์๋ก ํ๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ๋จผ์ ํ๊ฒฝ ๋ณ์๋ก ๋ด๋ณด๋ธ ๋ค ์งํํฉ๋๋ค.
ย
ย
ํด๋ฌ์คํฐ์ ์์ฑ ์ํ๋ฅผ ํ์ธํ๋ ค๋ฉด ์๋์ ๊ฐ์ด ์ ๋ ฅํฉ๋๋ค. ์์ง ์์ฑ์ค์ด๋ผ๋ฉด CREATING ์ด๋ผ๋ ๋ฌธ์์ด์ด ์ถ๋ ฅ๋ฉ๋๋ค.
ย
ย
ย
ย