1. 계획(Dev)
- 일정, 이슈 및 협업
- Jira, Notion, Redmine, Slack 통한 일정 및 이슈를 문서화하여 협업 진행
- Slack을 통해 Github, Jenkins, ArgoCD, Prometheus와 같은 파이프라인의 중요 부분의 알림을 받을 수 있음
2. 개발(Dev)
- 언어, 툴, 프레임워크, 테스트 코드, 코드 분석 및 협업
- IntelliJ IDEA 개발 툴을 이용해 개발 진행
- 개발 언어로는 Java를 사용하고, 프레임워크로는 Spring Boot를 사용해 애플리케이션 제작
- Junit을 통한 테스트 코드 작성 -> 자신의 작성한 코드라도 일정 시간이 지나면 이해하기 어려워지기 때문에 테스트 코드로 코드가 잘 작성된 것인지 파악할 수 있어야 함
- FindBugs 와 PMD를 통해 잘못된 로직을 짜지 않았는지 확인을 도와줌 -> 개발을 Support 해주는 다양한 툴
- GitHub는 프로그램의 소스 코드 버전을 관리하는 형상 관리 도구로 팀원들과의 협업을 도와줌
3. 빌드(CI)
- 소스, 컨테이너
- 소스 빌드로는 Maven 보다는 Gradle을 사용하는 추세임
- Private 하게 이용하고 싶다면 Nexus Repository 사용
- 컨테이너 빌드로는 주로 Docker를 사용
4. 테스트(CI)
- 개발과정에서 테스트를 진행했더라도 코드들이 병합되고 나서 또 다른 문제가 생길 수 있으니 테스트가 필요함
- JUnit을 실행시켜서 자동으로 테스트를 한 번 더 돌려봄 -> 이 테스트는 빌드에 연결이 돼서 테스트가 한번에 진행이 됨
- 테스트 이후 JACOCO라는 툴을 돌리면 테스트를 돌렸을 때 사용된 로직들이 앱 전체에 어느 정도 범위를 테스트를 했는지 알려줌
- JMeter를 통한 성능 테스트 -> 개발환경 컨테이너에서 수동으로 진행
5. 릴리스(CD)
- 배포 가능한 패키지를 만드는 과정
- Docker 빌드를 하기 위해 Dockerfile 스크립트 작성
- Kubernetes 배포를 위해 yaml 파일 작성
6. 배포(CD)
- 배포를 하기 위한 툴로 대표적으로 Kustomize, HELM, ArgoCD
Kustomize
- 쿠버네티스 리소스(yaml파일)를 변경하지 않고 필드를 재정의하여 새로운 쿠버네티스 리소스를 생성하는 도구
- Kustomize를 사용하면 기본 구성을 변경하지 않은 채 환경별 오버레이를 적용하여 다양한 환경(개발, 스테이징, 프로덕션)에 대한 구성을 관리할 수 있음
HELM
- Kubernetes 클러스터에서 복잡한 애플리케이션을 배포, 관리 및 업그레이드하는 프로세스를 단순화하는 Kubernetes 애플리케이션용 패키지 관리자
- 사용자는 Kubernetes 리소스에 대한 템플릿을 정의하고 이를 차트로 패키징하고 저장소를 통해 공유할 수 있음
- 차트에 대한 종속성 관리 및 버전 관리 기능을 제공하므로 쉽게 배포하고 재사용할 수 있음
Argo CD
- Kubernetes 애플리케이션을 위한 선언적 GitOps 지속적 전달 도구
- Git 리포지토리에 저장된 정의를 기반으로 Kubernetes 클러스터에서 애플리케이션 배포 및 동기화를 자동화함
- 리포지토리를 지속적으로 모니터링하고 변경 사항을 감지하여 대상 Kubernetes 클러스터에 자동으로 적용
- 애플리케이션 배포 시각화, 동기화 상태 추적 및 애플리케이션 기록 검토를 위한 웹 기반 사용자 인터페이스를 제공
7. 운영(Ops)
- 런타임, 네트워크 및 데이터베이스
- 컨테이너 런타임 도구로는 containerd를 사용
- NGINX, Istio 는 네트워크 트래픽 관리에 대한 도구
- etcd를 사용해 구성 데이터, 서비스 검색 정보 및 분산 시스템 간의 조정을 저장하고 관리함
- Project Calico를 통해서 분산 환경 전반에서 컨테이너와 가상 머신을 연결하고 보호함
8. 모니터링(Ops)
- 자원 사용량, 앱로그 및 트래픽 흐름을 확인
- Grafana, Grafana loki, Prometheus 는 사용량이랑 앱 로그를 보기 위한 툴
- JAEGER, ZIPKIN은 트래픽 흐름을 보기위한 도구 -> 마이크로 서비스 환경이 많아졌기 때문에 서비스들 간의 트래픽이 어떻게 흘러가 추적을 하는 게 중요
- 이 앱들은 다 Kubernetes 클러스터 위에서 pod로 띄워짐
☀️다양한 Ops에 관하여
출처
[인프런] 쿠버네티스 어나더 클래스 (지상편) - Sprint 1, 2 / 일프로
'k8s' 카테고리의 다른 글
[1-5] Application 기능으로 이해하기 - probe (1) | 2024.04.13 |
---|---|
[1-4] Object 기본적인 이해 (1) | 2024.04.12 |
[1-3] 쿠버네티스가 정말 편한 이유 (0) | 2024.04.10 |
[1-2] 깊이있는 쿠버네티스 설치 (0) | 2024.04.01 |
[1-1] 컨테이너 한방정리 (0) | 2024.03.25 |