일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 개발
- 동적계획법
- cos pro
- cos
- DFS와BFS
- android
- Vue
- Python
- Flutter
- 안드로이드
- 안드로이드스튜디오
- DFS
- issue
- Algorithm
- 백준
- codingtest
- 동적계획법과최단거리역추적
- vuejs
- cos pro 1급
- django
- C++
- 코드품앗이
- 파이썬
- BAEKJOON
- AndroidStudio
- 코테
- 알고리즘
- 코딩테스트
- DART
- 분할정복
- Today
- Total
Development Artist
[Helm으로 쉽게] 로깅 시스템 구축하기 (Grafana, Promtail, Loki) #1 본문
개요
오랜만에 글을 적어본다.
이직을 하고 적응하느라 정신없이 지낸다고 글쓰는 것을 소홀히 하다보니 자연스레 손이 안갔었다.
각설하고 오늘 포스트에서는 최근 만들어본 로깅 시스템에 대해 포스팅 하도록 하겠다.
- Helm
- Grafana, Prometheus, Loki 설치
- NFS 설치
우선은 이 글은 쿠버네티스가 설치가 되어 있는 것을 전제로 한다.
사용할 환경은 온프렘 서버 3대를 가지고 Microkube를 설치하고 컨트롤 플레인 없이, 워커 노드 3대로 진행할 것이다.
다만, 자세한 설치 과정은 이글에서는 생략하고 Microkube가 아니여도 상관없다.
들어가기에 앞서 간단한 명령어를 통해 클러스터가 준비되었고, 접근 가능함을 확인해보자.
# 클러스터 준비되었는지 확인하기
kubectl version
kubectl get nodes
Helm
Helm은 패키지 관리자이다. 우리가 Ubuntu OS에서는 apt을 쓰고, CentOS에서는 yum을 쓰는 것과 같이 쿠버네티스 애플리케이션을 관리하기 위한 패키지 관리자라고 생각하면 이해가 쉽다. Helm을 사용하면 쿠버네티스 리소스를 손쉽게 정의하고 설치하고 관리할 수 있다.
그리고 Helm은 Helm Charts를 사용한다. 이것은 템플릿으로 보면 된다. 오픈소스 깃헙 Repository를 클론 받아 사용하는 것처럼, 잘 짜여진 Helm Charts를 만들어서 저장해둔 저장소도 존재하며 이를 활용하여 Helm 배포를 바로 진행할 수 있다.
- https://charts.bitnami.com/bitnami
Artifact Hub
Find, install and publish Cloud Native packages
artifacthub.io
# 예시
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
helm install grafana grafana/grafana --namespace grafana
이런식으로 헬름 레포를 추가하고 바로 설치함으로써 쿠버네티스에 배포를 할 수 있게 된다.
다만, 이런식으로 바로 만들어진 템플릿을 배포하는 것은 실무에서는 사용하기 어렵다. 왜냐하면, 템플릿을 사내 환경에 맞게 수정을 해야하기 때문이다. 가령, 사용하고 있는 Storage를 붙여야 한다거나 특정 알람을 발생시켜야 한다거나 하는 등의 커스텀한 경우가 발생하고 대부분 그렇다.
그렇다면, 어떻게 할까?
다양한 방법들이 있겠지만, 필자의 경우, Github Repository를 파서 요구사항에 맞게 헬름 차트를 커스터마이징 하고 ArgoCD를 붙여서 자동적으로 배포되게끔 하고 있다.
마찬가지 방법으로, 이번 포스팅에서 진행해보려고 한다.
설치하기
우선 Helm을 설치해보자.
현재 Helm의 최신 버전은 3.16.4 이다. (https://github.com/helm/helm/releases)
마찬가지로 최신 버전으로 사용한다. 참고로 Helm v2와 v3는 차이가 심하니(Tiller 유무 등) v2를 사용한다면, 이번 포스팅의 결과를 보장하기 어려울 수도 있는 점 알아두길 바란다.
# 공식 스크립트로 설치
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
또는 Mac 환경이라면
# Mac 환경의 Homebrew 사용
brew install helm
Ubuntu OS 라면
# Ubuntu/Debian
curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
sudo apt-get install apt-transport-https --yes
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm
잘 설치됐는지 확인 해보자.
# Helm 설치 확인하기
which helm
helm version
기본적인 사용법
그리고 기본적인 Helm 명령은 숙지하고 다음 장으로 넘어가보자.
레포지토리 추가
# Helm 레포 추가 예시
helm repo add stable https://charts.helm.sh/stable
helm repo update
설치
# Helm으로 배포하기 예시
helm install test-release bitnami/nginx
helm list
helm uninstall test-release
롤백
# 롤백 예시 (버저닝이 된다)
helm rollback <RELEASE_NAME> <REVISION_NUMBER>
설치 시 값 주입
# --set 을 사용하여 값 주입하기 예시
$ helm install my-release bitnami/nginx --set service.type=NodePort --set replicaCount=3
# -f 를 사용하여 파일로 값 주입하기 예시
$ helm install my-release bitnami/nginx -f custom-values.yaml
다음 포스팅에서는 Helm을 사용해서 차트를 내려받고 실제로 차트 내용을 수정해보겠다.
바로 고고싱
'Project_Personal' 카테고리의 다른 글
[Nextjs, Typescript, TailwindCSS, Mac] 프로젝트 초기 셋업 구축하기 (0) | 2023.08.17 |
---|---|
[Spring Boot, Mac] 프로젝트 초기 셋업 구축하기 (0) | 2023.08.16 |
[웹 서비스 A-Z][Deployment] #21 ALB (0) | 2023.03.30 |
[웹 서비스 A-Z][Deployment] #20 Docker (0) | 2023.03.29 |
[웹 서비스 A-Z][Deployment] #19 Database (0) | 2023.03.28 |