๐Ÿ’ป Kubernetes Project

LEE EUI JOOยท2023๋…„ 1์›” 30์ผ
0

Project

๋ชฉ๋ก ๋ณด๊ธฐ
3/3
post-thumbnail

๐Ÿ“ Contents



๐Ÿ‘ฅ 1. Introduce Our Team


๐Ÿ‘จโ€๐Ÿ’ป Teammate A

  • shell script ์ž‘์„ฑ
    • openstack install
    • terraform provisioning
  • openstack, kubernetes network ์„ค๊ณ„ ๋ฐ ๊ตฌ์ถ•
  • terraform์— ๋“ค์–ด๊ฐ€๋Š” shell script ๊ฐœ์„ 
  • openstack cloud provider๋ฅผ ์‚ฌ์šฉํ•ด openstack ์œ„์— kubernetes ๊ตฌ์ถ•

๐Ÿ‘จโ€๐Ÿ’ป Teammate B

  • terraform ์ž‘์„ฑ
    • openstack network, security group, vm ๋“ฑ์„ provisioningํ•˜๋Š” ์ฝ”๋“œ ์ž‘์„ฑ
    • shell script
      • kubernetes cluster ๊ตฌ์ถ•
      • cni, metallb, github actions(self-hosted), monitoring ๋ฆฌ์†Œ์Šค ๋ฐฐํฌ
  • github actions
    • actions-runner-controller๋ฅผ ์‚ฌ์šฉํ•ด github actions(self-hosted) script๊ฐ€ kubernetes pod์œผ๋กœ ์‹คํ–‰๋˜๊ฒŒ๋” ๊ตฌ์„ฑ

๐Ÿ‘จโ€๐Ÿ’ป Teammate C

  • Monitoring ๊ตฌ์ถ•
    • prometheus & Grafana ์˜ ์ˆœ์ฐจ์  ์„ค์น˜๋ฅผ ์œ„ํ•œ Git-repo ์ƒ์„ฑ
    • Prometheus , Grafana ๋ฅผ service ํ•˜๋Š” Step By Step install_monitoring.sh ์ž‘์„ฑ
  • PPT ์ž‘์„ฑ ๋ฐ ๋ฐœํ‘œ

2. ๐Ÿ–ฅ๏ธ Introduce Our Project


  • Infrastructure ๊ตฌ์„ฑ์„ ์œ„ํ•œ Oneclick Installation Environment ์ œ๊ณต
    • ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด ์ œ์ž‘ํ•œ Shell Script๋ฅผ ์‹คํ–‰ํ•˜์—ฌ Terraform๋ฅผ ์ด์šฉํ•œ On-Premise ํ™˜๊ฒฝ์˜ Openstack Private Cloud ์ž๋™ ๊ตฌ์ถ•
    • ์‚ฌ์šฉ์ž ์š”์ฒญ ์ˆ˜๋Ÿ‰ ๋งŒํผ์˜ Compute Instances ์ƒ์„ฑ, Kubernetes Clustering ์ˆ˜ํ–‰
    • Clustering๋œ Kubernetes๋Š” Monitoring์„ ์œ„ํ•œ Prometheus & Grafana, CI / CD ์ˆ˜ํ–‰์„ ์œ„ํ•œ Github Actions Hosted Machine์„ ํฌํ•จ
    • CI / CD๋ฅผ ํ†ตํ•ด ๋ฐฐํฌ๋˜๋Š” Service๋Š” Openstack & Kubernetes Load Balancing์„ ํ†ตํ•ด External Environment ๋…ธ์ถœ
  • ์œ„์™€ ๊ฐ™์€ ์ž๋™์œผ๋กœ ๊ตฌ์ถ• ๋ฐ ์ œ๊ณต๋˜๋Š” Infrastructure๋ฅผ ํ†ตํ•ด ์„œ๋น„์Šค ๊ตฌ์ถ• ๋ฐ ์šด์˜์˜ ๋„์›€์„ ์ฃผ๊ณ ์ž ํ•จ
    • Openstack์„ ์ด์šฉํ•œ Resources ๊ด€๋ฆฌ
      • Scale out & in, Private Environment ๋“ฑ
        • Future Support: Scale out & in
    • Kubernetes๋ฅผ ์ด์šฉํ•œ Distributed System ๊ด€๋ฆฌ
      • Fault Tolerance, Service Discovery, High Availability ๋“ฑ
  • ์šด์˜๊ด€๋ฆฌ ๋‹จ์ˆœํ™”๋ฅผ ํ†ตํ•ด Service Implementation์— ์ง‘์ค‘ ๊ฐ€๋Šฅํ•œ ํ™˜๊ฒฝ ์ œ๊ณต

3. โšก๏ธ Critical Stack


โ˜‘๏ธ Terraform

  • IaaC
    • Infrastructure ์ž๋™ํ™” ํˆด
      • ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด Infrastructure๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ
    • ์ธํ”„๋ผ์— ๋Œ€ํ•œ ๋ฒ„์ „ํ™”์™€ ํ˜‘์—…์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ์˜คํ”ˆ์†Œ์Šค ๋„๊ตฌ

โ˜‘๏ธ OpenStack

  • Cloud Infrastructure ๊ตฌ์ถ• ๋ฐ ๊ด€๋ฆฌ๋ฅผ ๋„์™€์ฃผ๋Š” ์˜คํ”ˆ์†Œ์Šค ์†Œํ”„ํŠธ์›จ์–ด
  • Storage, Networking, Computing Resources ๋“ฑ ๋Œ€๊ทœ๋ชจ ๊ฐ€์ƒ ์„œ๋ฒ„ ๊ทธ๋ฃน์„ ๋งŒ๋“ค๊ณ , ๊ด€๋ฆฌํ•˜๋Š” ํˆด

โ˜‘๏ธ Kubernetes

  • Containerized Application ๊ด€๋ฆฌ ํˆด
  • Distributed System ๊ด€๋ฆฌ๊ฐ€ ์šฉ์ด
  • Distributed System Clustering๋ถ€ํ„ฐ Application ๋ฐ Services ๋ฐฐํฌ, ํ™•์žฅ, ๊ด€๋ฆฌ๋ฅผ ์ž๋™ํ™”๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ์˜คํ”ˆ์†Œ์Šค Container Orchestration System

โ˜‘๏ธ GitHub Actions

  • Github ๊ธฐ๋ฐ˜์˜ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ Workflow๋ฅผ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ๋Š” CI / CD ํ”Œ๋žซํผ
  • ๊ธฐ๋ณธ์ ์œผ๋กœ Serverless ์„œ๋น„์Šค๋กœ, Workflow๋งŒ ์ž˜ ์ •์˜ํ•˜๋ฉด Github ๋„๊ตฌ์˜ ์ง‘ํ•ฉ์— ๋”ฐ๋ผ CI ~ CD๊นŒ์ง€ ์ˆ˜์›”ํ•˜๊ฒŒ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Œ
    • * ๋„๊ตฌ: Github Repository - Actions Trigger ๋“ฑ

โ˜‘๏ธ Prometheus & Grafana

  • Kubernetes์˜ ์ž์› ์‚ฌ์šฉ๋Ÿ‰ ์ •๋ณด๋ฅผ ์‹œ๊ณ„์—ด ๊ธฐ๋ฐ˜์˜ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘์„ ์ˆ˜ํ–‰ํ•˜๋Š” Prometheus
  • ๊ทธ๋ฆฌ๊ณ  ์ด๋ ‡๊ฒŒ ์ˆ˜์ง‘ํ•œ Prometheus์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ์‹œ๊ฐํ™”๋กœ ์ œ๊ณตํ•˜๋Š” Grafana
  • ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋Š” Kubernetes Cluster ๋‚ด์—์„œ ์ž์› ์‚ฌ์šฉ๋Ÿ‰์„ ์ถ”์  ๋ฐ Event๋ฅผ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๊ณ , ์ด์— ๋”ฐ๋ผ ์„œ๋น„์Šค ๊ด€๋ฆฌ์ž & ๊ฐœ๋ฐœ์ž & ์šด์˜์ž๋Š” ๋ณด๋‹ค ํŽธ๋ฆฌํ•˜๊ฒŒ ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌ ๋ฐ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ

4. โš ๏ธ Trouble Shooting


โ˜‘๏ธ Openstack

  • ~/.ssh/id_rsa private key๋กœ ๋ชจ๋“  Openstack VM์— SSH ์ ‘์† ๊ฐ€๋Šฅ
    • ์›น ui๋ฅผ ํ™œ์šฉํ•ด์„œ ์‚ฌ์šฉ์ž๊ฐ€ ํ‚ค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ œ๊ณตํ•˜๊ณ , ํ…Œ๋ผํผ์—์„œ ํ•ด๋‹น key๋ฅผ ์‚ฌ์šฉ

โ˜‘๏ธ Terraform

  • Terraform Resource๊ฐ€ ๋งŽ์•„์ง€๋ฉด ์ฝ”๋“œ๊ฐ€ ๊ธธ์–ด์ง€๊ณ  ๋ณต์žกํ•ด์ง
    • ๊ณตํ†ต ์ธํ”„๋ผ๋“ค์„ ๋ฌถ๊ณ , Terraform Module์„ ๋งŒ๋“ค์–ด ๊ฐ™์€ ์ธํ”„๋ผ๋ฅผ ์ฐ์–ด๋‚ผ ๋•Œ ํ™œ์šฉ`

โ˜‘๏ธ Kubernetes

  • Kubernetes Node join์„ ์œ„ํ•œ token
    • Terraform์•ˆ์˜ shell script์—์„œ token ๊ฐ’์„ ์ •์ ์œผ๋กœ ๋ถ€์—ฌํ•ด์„œ joinํ•จ
    • ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” openstack cloud provider๋ฅผ ์‚ฌ์šฉํ•ด kubernetes ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Œ
  • Kubernetes ๊ณ ๊ฐ€์šฉ์„ฑ Cluster
    • ์„œ๋น„์Šค์—์„œ Control Plane 1๋Œ€๋งŒ ๊ธฐ๋ณธ์œผ๋กœ ์ƒ์„ฑ๋˜๋Š”๋ฐ Terraform ์•ˆ์˜ Shell script๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ํž˜๋“ฌ
    • openstack cloud provider๋ฅผ ์‚ฌ์šฉํ•ด์„œ Kubernetes Cluster ๊ตฌ์ถ•

โ˜‘๏ธ Prometheus & Grafana

  • Helm Chart๋กœ prometheus & Grafana ๋ฅผ ํŒจํ‚ค์ง• ํ•˜๋Š” ๊ณผ์ œ
    • monitoring ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฐ yaml ํŒŒ์ผ๋“ค์ด ์˜์กด์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ์Œ
    • Prometheus ์„ค์น˜๋ฅผ ์œ„ํ•œ bundle.yaml ํŒŒ์ผ์€ kubectl apply๋กœ๋Š” ์„œ๋น„์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†์—ˆ๊ณ  create ๋กœ๋งŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ํ•œ๊ณ„
    • helm chart๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋Œ€์‹ ์— Git repo๋ฅผ ์ƒ์„ฑํ•˜์—ฌ step by step ์œผ๋กœ yaml ์„ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ์‰˜์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ๋ฌธ์ œ ํ•ด๊ฒฐ

5. ๐Ÿ”ฅ Project Critical Architecture


  • Shell script๋กœ Openstack์„ ์„ค์น˜ํ•˜๊ณ , Terraform์œผ๋กœ Openstack ์ธํ”„๋ผ, Kubernetes๋ฅผ Provisioning
  • Kubernetes Cluster์•ˆ์—๋Š” ๋ชจ๋‹ˆํ„ฐ๋ง(Prometheus & Grafana), GitHub Actions(Self-Hosted) ์„œ๋น„์Šค๊ฐ€ ๊ธฐ๋ณธ ๊ตฌ์„ฑ
  • ๊ฐœ๋ฐœ์ž๋Š” ์ฒ˜์Œ Shell script ์‹คํ–‰ ์‹œ์— Worker Node์˜ ๊ฐฏ์ˆ˜์™€ GitHub PAT๋ฅผ ์ž…๋ ฅ ๋ฐ›์Œ
  • ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๋Š” GitHub Repository์˜ GitHub Actions Workflows๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ํ•ด๋‹น ์„œ๋น„์Šค์˜ Kubernetes Pod์•ˆ์—์„œ CI/CD Pipeline์ด ๋Œ์•„๊ฐ€๊ณ , Service๋ฅผ Kubernetes์— ๋ฐฐํฌ
  • ๊ฐœ๋ฐœ์ž๋“ค์€ Grafana Dashboard๋ฅผ ํ†ตํ•ด์„œ ๋ฐฐํฌ๋œ ์„œ๋น„์Šค๋“ค์„ ํ™•์ธ, VM, Kubernetes ์ˆ˜์ค€์˜ ์ธํ”„๋ผ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•  ์ˆ˜ ์žˆ์Œ

6.Feelings


๐Ÿ‘จโ€๐Ÿ’ป Teammate A

  • ์˜คํ”ˆ์Šคํƒ์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ตฌ์„ฑํ•ด ๋ณด๋Š” ๊ฒƒ์ด ์ฒ˜์Œ์ด์—ˆ๊ณ , ์žฌ๋ฏธ์žˆ๋Š” ํ”„๋กœ์ ํŠธ์˜€๋‹ค.
  • ํ•จ๊ป˜ ํ•ด์„œ ๋” ํšจ์œจ์ ์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.
  • ํ˜ผ์ž๋ผ๋ฉด ์บ์น˜ํ•˜์ง€ ๋ชปํ–ˆ์„ ๋ถ€๋ถ„๋“ค์„ TeammateB ๋‹˜๊ณผ TeammateC ๋‹˜์ด ์บ์น˜ํ•ด ์ฃผ์…จ๊ณ , ๋•๋ถ„์— ๋งŽ์ด ๋ฐฐ์šธ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๐Ÿ‘จโ€๐Ÿ’ป Teammate B

  • ์ฒ˜์Œ์— Teammate A๋‹˜์ด ์ฃผ์ œ๋ฅผ ๊ตฌ์ƒํ•ด ์˜ค์…”์„œ ๋น ๋ฅด๊ฒŒ ์„ค๊ณ„ํ•˜๊ณ  ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์•˜์Šต๋‹ˆ๋‹ค.
  • ์ œ๊ฐ€ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์—ˆ๋˜ ๊ธฐ์ˆ ๋“ค์„ ์ ์šฉํ•ด ๋ณผ ์ˆ˜์žˆ๋Š” ํ”„๋กœ์ ํŠธ์˜€์Šต๋‹ˆ๋‹ค.
  • ์ œ๊ฐ€ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•˜๋Š” ๋ถ€๋ถ„๋“ค์„ TeammateA ๋‹˜๊ณผ TeammateC ๋‹˜์ด ๋„์™€์ฃผ์…”์„œ ๋งŽ์ด ๋ฐฐ์šธ ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๐Ÿ‘จโ€๐Ÿ’ป Teammate C

  • ๋›ฐ์–ด๋‚œ ํŒ€์›๋“ค๊ณผ ํ•จ๊ป˜ ํ˜‘์—…ํ•  ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์•˜์Šต๋‹ˆ๋‹ค.
  • ์ˆ˜์ค€ ๋†’์€ ํŒ€์›๋“ค๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋ผ ๊ฑฑ์ • ๋ฐ˜ ์„ค๋ ˜ ๋ฐ˜ ์˜ ๋งˆ์Œ๊ฐ€์ง ์ด์˜€์œผ๋‚˜, ๋ฌด๊ฑฐ์šด ๊ฐœ๋… ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š๊ณ  ์ƒˆ๋กœ์šด ๊ธฐ์ˆ  ์Šคํƒ๋“ค์„ ์ ‘ํ•˜๊ณ  ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๋ผ๊ณ  ์ƒ๊ฐํ•˜์—ฌ ์ ‘๊ทผํ•˜๋‹ˆ ํŒ€์› ๋ถ„๋“ค์—๊ฒŒ ๋งŽ์€ ๊ฒƒ์„ ๋ฐฐ์›Œ์„œ ์ข‹์•˜์Šต๋‹ˆ๋‹ค.

7. Reference

PPT ์ž๋ฃŒ

Terraform ์†Œ์Šค ์ฝ”๋“œ

๋ฐ๋ชจ ๋™์˜์ƒ

profile
๋ฌด๋Ÿญ๋ฌด๋Ÿญ ์ž๋ผ๋ณผ๊นŒ

0๊ฐœ์˜ ๋Œ“๊ธ€