Skip to content

Latest commit

ย 

History

History
62 lines (39 loc) ยท 4.46 KB

File metadata and controls

62 lines (39 loc) ยท 4.46 KB

๐Ÿ† Info

kubeform ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜ํ•œ k8s ๋‹ค์ด์–ด๊ทธ๋žจ๋Œ€๋กœ AWS EKS ํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•˜๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜ํ•œ docker image๋“ค์„ ์ ์šฉ์‹œํ‚ค๋Š” ์ž‘์—…์„ ์ž๋™ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค.
Flask API ์„œ๋ฒ„์—์„œ POST ์š”์ฒญ์„ ๋ฐ›์œผ๋ฉด, ์‚ฌ์šฉ์ž์˜ IAM User๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ AWS EKS ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ Terraform์„ ์ด์šฉํ•ด ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
์ƒ์„ฑํ•œ ์ดํ›„ ์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜ํ•œ docker image๋“ค์„ ์›Œ์ปค๋…ธ๋“œ์— applyํ•˜๋Š” ์ž‘์—…์„ ์ž๋™ํ™” ํ•˜๊ธฐ ์œ„ํ•ด yaml manifest ํŒŒ์ผ๋“ค์„ ์ž๋™์œผ๋กœ ํŽธ์ง‘ํ•˜๊ณ  ์ ์šฉ์‹œํ‚ค๋Š” ์ž‘์—…์„ ์™„๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ—‚ Structure

  • flask - API Server by Flask

    • Flask๋ฅผ ์ด์šฉํ•ด API ์„œ๋ฒ„ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค๊ณ , ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ์— ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • terraform - AWS EKS ์ƒ์˜ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ ํ™˜๊ฒฝ์„ ํ”„๋กœ๋น„์ €๋‹ํ•œ Terraform ๊ตฌ์„ฑ

    • ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์˜ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด AWS ์ธํ”„๋ผ๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ์›Œ์ปค๋…ธ๋“œ๋“ค์— ํ•ด๋‹น๋˜๋Š” EC2๋“ค๊ณผ ์ด EC2 ์ธ์Šคํ„ด์Šค๋“ค์„ private ์„œ๋ธŒ๋„ท์— ๋ฐฐ์น˜ํ•˜๊ณ , ์ด๋“ค์ด ์™ธ๋ถ€์™€ ํ†ต์‹ ํ•˜๊ธฐ์œ„ํ•œ NAT gateway, NLB ๋“ฑ ๋งŽ์€ AWS ์ธํ”„๋ผ๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ์ด ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๋“ค์„ Terraform์„ ์‚ฌ์šฉํ•ด ์ธํ”„๋ผ๋“ค์„ ํ”„๋กœ๋น„์ €๋‹ ํ•ด๋‘๋Š” ์ž‘์—…์„ ์™„๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค.
  • sample, k8s - kubectl ๋ช…๋ น์„ ์œ„ํ•ด ํ•„์š”ํ•œ yaml ๋งค๋‹ˆํŒจ์ŠคํŠธ ํŒŒ์ผ๋“ค

    • ์ƒ์„ฑ๋œ ํด๋ผ์šฐ๋“œ ๋ฆฌ์†Œ์Šค๋“ค์„ ๋ฐฐ๊ฒฝ์œผ๋กœ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๊ตฌ์„ฑ๊ด€๋ฆฌ ํŒŒ์ผ๋“ค์„ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
    • ๊ตฌ์„ฑ๊ด€๋ฆฌ ํŒŒ์ผ๋“ค์„ kubectl ๋ช…๋ น์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ƒ์„ฑํ•œ ๋‹ค์Œ, ์ •๋ณด๋“ค์„ ๊ฐ€์ ธ์™€ ํด๋ผ์ด์–ธํŠธ๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

๐ŸŽ‰ Features

AWS

์‚ฌ์šฉ์ž์—๊ฒŒ EKS ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํ™˜๊ฒฝ์„ ์ œ์ž‘ํ•ด์ฃผ๋Š” ์ ˆ์ฐจ๋Š” ํฌ๊ฒŒ 2๊ฐ€์ง€๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.

  1. Terraform์œผ๋กœ ์‚ฌ์šฉ์ž์˜ ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ AWS ์ธํ”„๋ผ๋ฅผ ์ƒ์„ฑ
  2. EKS์— kubectl์œผ๋กœ ์ ‘์†ํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜ํ•œ ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์กฐ๋ฅผ ๋””ํ”Œ๋กœ์ด๋จผํŠธํ™” ํ•˜์—ฌ ์ ์šฉ

[Terraform์œผ๋กœ ์‚ฌ์šฉ์ž์˜ ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ AWS ์ธํ”„๋ผ๋ฅผ ์ƒ์„ฑ]

ํด๋ผ์šฐ๋“œ ์ƒ์˜ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํ™˜๊ฒฝ์„ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹จ์ˆœํžˆ EKS ์„œ๋น„์Šค๋งŒ ์ƒ์„ฑํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค. EKS๋Š” ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ์˜ ์—ญํ• ์„ ํ•˜๋Š” ๋‘๋‡Œ์ผ๋ฟ, ์›Œ์ปค๋…ธ๋“œ๋“ค์— ํ•ด๋‹น๋˜๋Š” EC2๋“ค๊ณผ ์ด EC2 ์ธ์Šคํ„ด์Šค๋“ค์„ private ์„œ๋ธŒ๋„ท์— ๋ฐฐ์น˜ํ•˜๊ณ , ์ด๋“ค์ด ์™ธ๋ถ€์™€ ํ†ต์‹ ํ•˜๊ธฐ์œ„ํ•œ NAT gateway, NLB ๋“ฑ ๋งŽ์€ AWS ์ธํ”„๋ผ๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๋“ค์„ Terraform์„ ์‚ฌ์šฉํ•ด ์ธํ”„๋ผ๋“ค์„ ํ”„๋กœ๋น„์ €๋‹ ํ•ด๋‘๋Š” ์ž‘์—…์„ ์™„๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜ํ•œ ์›Œ์ปค๋…ธ๋“œ ๊ฐœ์ˆ˜,์ธ์Šคํ„ด์Šค ์œ ํ˜• ๋“ฑ๋“ค์„ ๋ณ€์ˆ˜๋กœ ๋ฐ›์•„ Terraform apply์ž‘์—…์„ ์™„๋ฃŒํ•˜๋ฉด 10๋ถ„~12๋ถ„ ์‚ฌ์ด์— ๋ชจ๋“  ์ธํ”„๋ผ ๊ตฌ์„ฑ์ด ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

[EKS์— kubectl์œผ๋กœ ์ ‘์†ํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜ํ•œ ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์กฐ๋ฅผ ๋””ํ”Œ๋กœ์ด๋จผํŠธํ™” ํ•˜์—ฌ ์ ์šฉ]

AWS์ƒ์˜ ์ธํ”„๋ผ ์ƒ์„ฑ์ด ์™„๋ฃŒ๋˜๋ฉด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ ์šฉ์‹œํ‚ฌ ์ฐจ๋ก€์ž…๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ์—์„œ ๋ฐ›์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜ํ•œ ํด๋Ÿฌ์Šคํ„ฐ ์ •๋ณด๋ฅผ JSON ํ˜•ํƒœ๋กœ ์ œ๊ณต๋ฐ›์•„ ์ด ์š”์†Œ๋“ค์„ deployment.yaml, service.yaml, namespace.yaml ๋“ฑ์˜ ๊ตฌ์„ฑ๊ด€๋ฆฌ ํŒŒ์ผ๋กœ ์ž๋™์œผ๋กœ ์ž‘์„ฑํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ Flask ์„œ๋ฒ„๋กœ ์ž์ฒด ์„ค๊ณ„, ๊ฐœ๋ฐœํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๊ตฌ์„ฑ๊ด€๋ฆฌ ํŒŒ์ผ์ด ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜๋ฉด, ์ด ํŒŒ์ผ๋“ค์„ EKS์— ์ ์šฉ์‹œํ‚ค๋Š” ๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐ‘๋‹ˆ๋‹ค. kubectl์„ ํ†ตํ•ด ๋ชจ๋“  ์„œ๋น„์Šค๋“ค์„ ์ ์šฉ์‹œํ‚ค๊ณ ๋‚˜๋ฉด ๊ฐ๊ฐ์˜ ์„œ๋น„์Šค๋กœ ์—ฐ๊ฒฐ๋˜๋Š” ์ธ๊ทธ๋ ˆ์Šค ์ปจํŠธ๋กค๋Ÿฌ ์ง„์ž…์ ๋“ค์„ ์•Œ ์ˆ˜ ์žˆ๊ณ , ์ด ์ •๋ณด๋“ค์„ ๋ชจ์•„ ์‚ฌ์šฉ์ž๋“ค์ด ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ํด๋ผ์ด์–ธํŠธ๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ˜€ Author

๐ŸŒ‹ Contributing

  • I will not be accepting PR's on this repository. Feel free to fork and maintain your own version.

๐Ÿ“„ License

  • This project is open source and available under the MIT License.