https 인증서(certification) 구성, 검증, 분석 - Deep Dive

일반적으로 https 통신을 하기 위해서 인증서를 구매하거나 ACME(Automatic Certificate Management Environment) 중 하나인 "Let's Encrypt" 통해 많이들 갱신한다.

이때 발생하는 여러가지 인증서의 종류를 알고 이를 검증, 시스템에 적용하는 방법을 확인한다.

 

HTTPS 인증서의 종류

  - ROOT Certificate : 정식 인증기관에서 발행하는 인증서로 시스템에 저장되어 있다.

  - Intermediate Certificate : ROOT Certificate와 Site Certificate를 연결해주는 인증서로 Chain Certificate라고도 불린다. 

  - End-entify Certificate : 업체에서 구매하여 사이트에 적용하는 서버용 인증서

 

kubernetes의 metrics deep dive - kubelet의 cAdvisor

kubernetes에서 metrics-server와  prometheus는 kubernetes의 어딘가에서 발생하는 메트릭을 수집해서 보여준다.
pod의 CPU 사용량, Memory 사용량 등과 같은 메트릭이 어딘가로 부터 제공해주고, 이를 수집하는 것이다.
이에 대한 정확한 메커니즘을 확인한다.

 

kubelet의 cAdvisor 기능

cAdvisor는 여러가지 리소스를 위해서 Google에서 개발된 모듈이다.

https://github.com/google/cadvisor

해당 모듈이 kubelet에 포함되어 동작한다.

https://github.com/kubernetes/kubernetes/tree/master/pkg/kubelet/cadvisor

kubernetes custom metrics을 사용한 HorizontalPodAutoscaler 구현

Prometheus adapter로 구현한 custom metrics을 통해 HorizontalPodAutoscaler를 구현해본다.

 

prometheus adapter Rule 이해 - Deep Dive
https://blog.encicle.com/prometheus-adapter-rule-ihae-deep-dive

 

위 예제를 진행했다면, traefik의 메트릭에 대해서 아래와 같이 3개의 resource를 분리해서 커스텀 메트릭을 저장하고 있다.

prometheus adapter Rule 이해 - Deep Dive

prometheus adapter의 rule 수정을 통해 다양한 사례를 예제로 살펴보고 깊이 이해하는 섹션을 갖는다.

prometheus-adapter Rule의 Resouce 추가를 통한 API 리소스 분리 예제

traefik_service_requests_total 메트릭은 아래와 같이 code, container, ... , namespace, pod, service, ingress와 같은 라벨이 붙어 있다.

Prometheus에 수집된 메트릭 정보

kubernetes의 prometheus에서 수집된 메트릭 데이터를 prometheus-adapter를 통해서 custom metric api 구성

HorizontalPodAutoscaler에서 사용할 수 있는 메트릭에는 custom metric이 존재한다.
prometheus에서 수집된 메트릭 데이터로 custom metric을 구성하는 방법을 정리한다.

/apis/custom.metrics.k8s.io/v1beta1/

https://github.com/kubernetes-sigs/prometheus-adapter/blob/master/docs/config.md (레퍼런스)

kubernetes prometheus-operator(kube-prometheus-stack) - additionalPodMonitors 설정으로 POD 모니터링 (podmonitors.monitoring.coreos.com)

Kubernetes에 설치된 Prometheus는  additionalScrapeConfigs 기능 이외에 additionalPodMonitors 설정을 기반으로 POD를 모니터링 가능하다.

 

helm template 구성을 위한 additionalPodMonitors value 설정

kubernetes에 traefik로 Ingress를 구성하고 서비스 구성하기

위 traefik 설치를 진행했다면 아래 labelsports 기준으로 pod monitoring을 설정할 수 있다.

kubernetes prometheus-operator(kube-prometheus-stack) - Annotations된 POD 모니터링 (additionalScrapeConfigs)

kubernetes prometheus-operator(kube-prometheus-stack) 초기 모니터링 Target 현황

 

우리는 보통 POD에 아래와 같이 prometheus.io/scrapeprometheus.io/port annotations이 있다면 자동으로 Prometheus가 메트릭을 수집해줄 것이라고 믿고 있다.

prometheus.io/port: 10254
prometheus.io/scrape: true

 

kubernetes에 prometheus-operator(kube-prometheus-stack) 구성하고 모니터링하기

helm으로 template kube-prometheus-stack(구 명칭 prometheus-operator)를 구축하고 kubernetes를 모니터링하는 시스템을 구축한다.

 

kube-prometheus-stack template 생성

https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack

kube-prometheus-stack template 생성