티스토리 뷰
약 한 달에 걸쳐 진행한 챌린지가 끝났다.
쿠버네티스에 대한 지식이 거의 없었기 때문에 시작이 조금 지지부진했지만 호스트님의 가이드 PPT와 팀원들과의 위클리 스크럼 진행 덕분에 마무리할 수 있었다. 짧은 회고로 마무리 해보자.
진행 과정
Kubernetes를 사용하여 컨테이너화된 앱들을 운영하고, 앱들의 로그를 수집하여 모니터링 시스템을 구축하는 프로젝트를 진행했다.
쿠버네티스 클러스터는 private subnet에 두어 외부에서 접근이 불가능하기 때문에 LoadBalancer 타입의 Service object를 추가하여 앱 서비스에 접근하도록 했다.
앱 배포는 ArgoCD에서 App of Apps 패턴을 적용하여 관리하였다. App of Apps 패턴은 앱 별로 Application CRD를 생성하고 앱들을 관리할 또 하나의 마스터 앱을 띄우는 방식으로, 규모가 크고 복잡한 시스템에서 논리적으로 앱들을 분리하여 관리할 수도 있고 마스터 앱 단위로 다른 클러스터에 배포할 수 있다는 장점이 있다. 또한 코드로 인프라 배포를 자동화하는 gitOps 방식을 사용함으로써 kubectl 명령어가 아닌 git push를 통해 간편하게 배포 및 업데이트를 할 수 있었다.
로그 수집은 ELK Stack을 사용하였다. Filbeats와 LogStash, ElasticSearch의 연동 방식을 이해하고 Kibana를 사용해 ES 인덱스를 생성하고 인덱스에 쌓인 로그 수집 이력을 확인할 수 있었다. 대용량의 데이터를 수집하고 분석할 때 유용한 서비스인 만큼 데이터의 수명주기가 중요하겠다는 생각이 들었다.
Prometheus로는 클러스터 리소스에 대한 모니터링 시스템으로 사용해보았다. Grafana로 데이터를 시각화하여 대시보드를 확인해볼 수 있었다.
한걸음 더
Part1
1. 로드밸런서 줄이기
외부 접근을 위해 LoadBalancer 타입의 서비스들을 만들면, 서비스 개수만큼 로드밸런서가 생긴다. 더 적은 개수의 로드밸런서를 사용하려면 어떻게 해야할까?
-> NodePort 타입의 서비스를 만들어 포트를 달리해 접근하는 방법을 사용할 수 있겠다.
2. 네트워크 접근 통제
외부로 노출한 서비스에 특정 대상을 제한을 하기 위해서는 어떻게 해야 될까?
-> Ingress에 대한 ipBlock으로 IP 대역을 제한할 수 있겠다.
Part2
3. Multi Cluster
환경 별로 클러스터를 나누어 운영할 때 git 저장소를 어떻게 관리하는 게 좋을까?
-> 환경 별 apps를 만들고 argocd에서 app을 생성할 때 apps 경로를 달리해 볼 수 있겠다.
Part3
5. Retention
ES의 로그 삭제 주기는 어떻게 관리할 수 있을까?
-> ES에서 제공하는 hot-warm-cold 아키텍처를 사용해서 관리할 수 있다. cold 단계로 이동하고 기준치가 지난 데이터들에 대해 삭제를 진행한다.
Part4
6. Persistence
파드를 재시작하면 삭제되는 로그들을 계속 보관하고 싶을 때 어떻게 할까?
-> k8s의 PV/PVC volume을 따로 두어 pod의 재시작과 무관하게 데이터가 유지되도록 하거나 외부 스토리지를 따로두는 방법이 있다.
결과물
Part1
1.Bastion 서버 띄우기
2. kubectl CLI 사용하기
3. private cluster에서 outbound test
4. 컨테이너 실행하기
part2
1. argoCD 설치
2. Applications 추가
part 3
1. kibana 설치
2. ES index 추가
3. 로그 수집 확인
part4
1. grafana 설치
2. 수집된 데이터 대시보드 확인
3. node 대시보드 확인
4. custom dashboard 생성해보기
후기
공부할게 많아서 지식이 몰아친다는 느낌을 받았다. ㅋㅋㅋ @_@/~
실무에서 사용하려면 좀 더 공부가 필요하겠지만 잘 몰랐던 분야에 대해 공부하고 구현해보는 기회가 생겨 좋았다.!
무사히 완주할 수 있어서 뿌듯하다. :)
'개발계발 > Project' 카테고리의 다른 글
FastAPI 용 factory_boy 만들기 (0) | 2024.03.20 |
---|---|
OAuth2.0 인증과 JWT로 로그인 구현하기 (0) | 2024.03.19 |
[kubernetes로 모니터링시스템 구축하기] 0. 프로젝트 시작 (0) | 2023.05.03 |
[kubernetes로 모니터링시스템 구축하기] 5. Prometheus와 Grafana 사용해보기 (0) | 2023.05.02 |
[kubernetes로 모니터링시스템 구축하기] 4. ELK Stack으로 로그 모니터링 시스템 구축하기 (0) | 2023.05.02 |
- Total
- Today
- Yesterday
- miniproject
- kubernetes
- coroutine
- fastapi
- factory_boy
- logstash
- NCP
- kibana
- Pydantic
- ArgoCD
- await
- Project
- JWT
- GitOps
- sns로그인
- grafana
- pytest
- async
- elk
- numble
- gradle
- bugfix
- promethus
- kubectl
- Supervisor
- DevOps
- jwt로그인
- supervisord
- elasticsearch
- OAuth
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |