"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Kubernetes, Helm 및 Ingress를 사용하여 모니터링 스택 배포

Kubernetes, Helm 및 Ingress를 사용하여 모니터링 스택 배포

2024-11-08에 게시됨
검색:352

Deploying a Monitoring Stack with Kubernetes, Helm, and Ingress

Kubernetes 클러스터의 성능을 관찰하고 관리하는 것은 애플리케이션 상태를 유지하고 문제를 식별하며 고가용성을 보장하는 데 매우 중요합니다. kubectl 및 Helm을 사용하여 포괄적인 모니터링 솔루션을 설정하고, Grafana, Loki 및 Prometheus를 클러스터에 배포하고, 외부 액세스를 위해 Ingress를 설정하는 과정을 안내하겠습니다.

다음 주요 단계를 다루겠습니다:

  1. 모니터링을 위해 Kubernetes 네임스페이스를 적용합니다.
  2. Helm 설치 및 필요한 저장소 설정
  3. Helm을 사용하여 Loki, Prometheus, Grafana 배포
  4. 수신 규칙을 적용하여 서비스를 외부에 노출합니다.

전제조건
시작하기 전에 다음 사항을 확인하세요.

  1. kubectl이 구성된 Kubernetes 클러스터입니다.
  2. Helm이 로컬 머신에 설치되었습니다.
  3. YAML 구성을 적용하고 차트를 설치하기 위한 적절한 액세스입니다.

1단계: 모니터링 네임스페이스 생성

네임스페이스는 Kubernetes 리소스를 논리적으로 나누고 구성하는 데 도움이 됩니다. 충돌을 방지하고 모니터링 리소스를 별도로 유지하기 위해 모니터링 도구를 위한 전용 네임스페이스를 만들 예정입니다.

1. 모니터링 네임스페이스 적용: 다음 콘텐츠를 monitoring-namespace.yml 파일에 저장합니다:

api버전: v1
종류: 네임스페이스
메타데이터:
이름: 모니터링
레이블:
app.kubernetes.io/name: 모니터링
app.kubernetes.io/instance: 모니터링

2. kubectl:

를 사용하여 네임스페이스를 적용합니다.

kubectl apply -f Monitoring-namespace.yml

이 명령은 Kubernetes 클러스터에 모니터링이라는 새 네임스페이스를 생성합니다.

2단계: Helm 설치 및 Grafana 저장소 추가
Kubernetes 패키지 관리자인 Helm을 사용하면 Grafana, Loki, Prometheus와 같은 복잡한 애플리케이션을 더 쉽게 배포할 수 있습니다. Helm을 설치하고 필요한 저장소를 설정하는 방법은 다음과 같습니다.

  1. Helm 설치(아직 설치되지 않은 경우):

sudo snap install helm --classic

이 명령은 Linux용 패키지 관리 시스템인 Snap을 사용하여 Helm을 설치합니다.

  1. Grafana Helm 차트 저장소를 추가합니다.

helm 저장소에 grafana 추가 https://grafana.github.io/helm-charts

  1. Helm 저장소 업데이트:

헬름 저장소 업데이트

이렇게 하면 Helm이 Grafana 저장소의 최신 차트를 갖게 됩니다.

3단계: Helm을 사용하여 Loki, Prometheus, Grafana 배포

Helm이 설치 및 구성되었으므로 Grafana Helm 차트를 사용하여 Loki, Prometheus 및 Grafana를 배포하겠습니다.

1. Helm 설치 명령을 실행합니다:

helm 업그레이드 --install loki --namespace=grafana/loki-stack 모니터링 \
--set grafana.enabled=true,prometheus.enabled=true,prometheus.alertmanager.perciousVolume.enabled=false,prometheus.server.perciousVolume.enabled=false,loki.persistence.enabled=true,loki.persistence.storageClassName=gp2 ,loki.persistence.size=100Gi --set nodeSelector.name=node.kubernetes.io/description=all_production

A: Grafana: **이렇게 하면 Helm 차트 내에서 모니터링 대시보드 도구인 Grafana가 활성화됩니다.
**B: Prometheus: **프로메테우스는 측정항목 수집을 위해 활성화되는 반면, Alertmanager 및 Prometheus 서버의 영구 볼륨은 스토리지 구성을 단순화하기 위해 비활성화됩니다.
**C: Loki:
로그 집계 도구인 Loki는 gp2 스토리지 클래스를 사용하여 100Gi의 영구 볼륨 스토리지로 활성화됩니다.

--install 플래그는 스택이 이전에 배포되지 않은 경우 설치되도록 보장합니다. --upgrade 플래그는 스택이 이미 설치된 경우 최신 버전으로 업데이트합니다.

2. 설치 확인: 성공적인 설치 후 모니터링 네임스페이스에서 실행 중인 Pod의 상태를 확인합니다:

kubectl get pods -n 모니터링

Grafana, Prometheus, Loki 및 Promtail(Loki에 로그 전달)에 대한 포드가 표시됩니다.

4단계: 외부 액세스를 위한 인그레스 설정

클러스터 외부에서 Grafana, Prometheus 또는 Loki에 액세스하려면 Ingress 리소스를 구성해야 합니다. 이를 통해 모니터링 서비스에 대한 외부 HTTP/S 액세스가 허용됩니다.

*1. Ingress 리소스 생성: 다음 예제를 monitoring-ingress.yml 파일에 저장합니다.
*

api버전:네트워킹.k8s.io/v1
종류: 수신
메타데이터:
이름: 모니터링 수신
네임스페이스: 모니터링
주석:
kubernetes.io/ingress.class: "nginx"
cert-manager.io/cluster-issuer: letsencrypt
투기:
TLS:
- 호스트:

- your-domain.com
비밀 이름: 인증서 이름
규칙:
- 호스트: your-domain.com
http:
경로:
- 길: /
pathType: 접두사
백엔드:
서비스:
이름: loki-grafana
포트:
번호: 80

이 Ingress 구성은 도메인 이름 {your-domain.com}에서 Grafana, Prometheus 및 Loki에 대한 라우팅을 설정합니다. your-domain.com을 실제 도메인으로 바꾸고 클러스터의 외부 IP를 가리키도록 DNS를 구성해야 합니다.

2. Ingress 리소스 적용:

kubectl apply -f Monitoring-ingress.yml

적용되면 Ingress 컨트롤러는 호스트 이름을 기반으로 적절한 서비스로 트래픽을 라우팅합니다.

  1. Ingress 설정 확인: Ingress 리소스 상태를 확인하여 올바르게 구성되었는지 확인하세요.

kubectl get ingress -n 모니터링

외부에서 서비스에 액세스할 수 있도록 ADDRESS 열에 외부 IP가 있는지 확인하세요.

5단계: 모니터링 대시보드에 액세스

인그레스가 올바르게 구성되고 DNS가 클러스터를 가리키면 Grafana, Prometheus 및 Loki에 액세스할 수 있습니다.

결론

몇 가지 명령만으로 Kubernetes 클러스터에서 Helm을 사용하여 완전한 모니터링 스택을 성공적으로 배포했습니다. Helm 차트를 활용하면 Grafana, Loki, Prometheus와 같은 복잡한 애플리케이션의 배포를 단순화하는 동시에 Ingress를 통합하여 쉽게 액세스할 수 있습니다. 이제 실시간으로 로그와 지표를 모니터링할 수 있는 강력한 관측 가능성 설정이 가능해 Kubernetes 애플리케이션을 보다 효과적으로 관리하고 최적화하는 데 도움이 됩니다.

이 Helm 기반 배포는 확장성을 보장하고 업그레이드 또는 구성 변경을 단순화하여 프로덕션 환경에서 관찰 가능성을 더 쉽게 관리할 수 있게 해줍니다.

릴리스 선언문 이 기사는 https://dev.to/seewhy/deploying-a-monitoring-stack-with-kubernetes-helm-and-ingress-cp5?1에서 복제됩니다. 침해가 있는 경우에는 [email protected]으로 문의하십시오. 그것을 삭제하려면
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3