[42seoul] ft_services : Kubernetes를 활용한 (작은) 서비스 아키텍쳐 배포

Updated:

🎶 ft_services

@42seoul : (2020.12.15 ~ 2021.01.13)

📖 About

  • Kubernetes를 활용하여 아래의 아키텍쳐를 구현하시오.
  • Docker 빌드는 Dockerhub를 사용하지 않고 직접 DOCKERFILE을 만듭니다. (OS : alpine)

ft_service_draw

🏁 Run

1.Start setup.sh

  • minikube setting
  • docker build
  • kubectl apply
  • Dashboard

setup

2. kubernetes 시연

  • Deploy : Nginx
    • redir : http://192.168.99.152 -> https://192.168.99.152
    • ssh www:kukim@192.168.99.152
  • Deploy : FTPS
    • upload : curl ftp://kukim:kukim@192.168.99.152 -T setup.sh
    • download : curl ftp://kukim:kukim@192.168.99.152/setup.sh -o test.sh
    • k exec pod/ftp -it – /bin/sh

nginx_ftps

  • Deploy : phpmyadmin, wordpress, mysql
    • redir : http://192.168.99.152/wordpress -> 192.168.99.152:5050
    • revers proxy : http://192.168.99.152/phpmyadmin -> 192.168.99.152:5000

word_php_my

  • Deploy : Grafana, influxDB, telegraf
    • 192.168.99.152:3000
    • k delete deploy:influxdb -> pv 저장공간 check
    • k apply -f influxdb -> 재연결 okay

grafana_influxdb

3. pkill App in Pods -> restart

  • kubectl exec deploy/nginx – pkill nginx
  • kubectl exec deploy/ftps – pkill vsftpd
  • kubectl exec deploy/grafana – pkill grafana
  • kubectl exec deploy/telegraf – pkill telegraf
  • kubectl exec deploy/influxdb – pkill influx
  • kubectl exec deploy/wordpress – pkill php-fpm7
  • kubectl exec deploy/mysql – pkill /usr/bin/mysqld

pkill

📖 Review

  • kubernetes, 컨테이너 오케스트레이션는 아름답다. 네트워크를 통해서 수 많은 클러스터를 하나의 서버처럼 사용하고, 각각의 쿠버네티스 Object들을 .yaml로 상태 관리하고 유연하게 서비스 확장이 가능하며 배포, 롤백 및 버전 관리에 탁월하며 다양한 볼륨 연결할 수 있다니 대단하다. 구글 크기의 회사가 쿠버네티스로 운영해도 문제가 없다고 하니 구글보다 큰 기업이지 않는 이상 쿠버네티스로 모든 해결되지 않을까 생각이 들었다. 하지만 작은 서비스에겐 오버 스펙이라고 느껴졌다.
  • kubernetes의 개념, 기본적인 Object(pod, deployment, service …), 외부 접속 설정(Cluster IP, LoadBalancer), 스케일 아웃을 맛보았다. (아! 쿠버네티스가 이런거구나?!)
  • 아쉬운 점 : 실무에서 진행한 프로젝트가 실무에선 어느정도 수준일까 궁금했고, 실제로 어떻게 구현할까 의문이 들었다. 또한 추후에 CI/CD 적용과 kubeflow 서비스도 추가해볼 생각이다.

🔗 Reference

🧑🏻‍💻 Author

kukim

Leave a comment