공부 목적으로 설치해 보는 과정을 정리한 것이기 때문에 실제 운영과 다릅니다. 성능 저하 증상 발생 Windows 10에서 11로 변경하면서 rancher desktop의 설정이 모두 초기화되었고 다시 모두 재설정하였다. Swap memory가 모두 사용 중이었다. (확인하는 방법은 아래 참조) 작업관리자에서 VmmemWSL의 디스크 사용량이 지속적으로 발생하고 있었다. 계속 디스크를 사용하여서 전체적인 성능이 하락하였다. 디스크를 왜 계속 사용하는지에 대해서는 명확하게 확인되지 않았지만 다음과 같이 진행해 보았다. container를 다시 생성하면서 일부 pod가 계속 에러를 발생시켰다. 통계 정보 수집하는 pod가 이 에러난 pod의 통계 정보로 계속 디스크 쓰기 작업이 발생시킨 게 아닌가 짐작하고 ..
공부 목적으로 설치해 보는 과정을 정리한 것이기 때문에 실제 운영과 다릅니다. Loki 소개 https://github.com/grafana/loki Loki에 대한 소개를 보면 다음과 같다. "Like Prometheus, but for logs" Prometheus가 metric을 시계열 데이터로 저장하기 위해 사용된다면 Loki는 log 데이터를 저장하기 위해 사용된다. https://grafana.com/docs/loki/latest/fundamentals/overview/ Loki는 log data를 효율적으로 보관하기 위해 최적화된 데이터 저장소이다. 다른 logging system과 다르게 Loki index는 label에서 작성되며 원래 log message는 색인화되지 않는다. Prome..
공부 목적으로 설치해 보는 과정을 정리한 것이기 때문에 실제 운영과 다릅니다. OpenTelemetry 소개 application의 상태를 계측하기 위한 단계는 간략하게 계측 데이터 수집 -> 저장 -> 모니터링의 세 단계로 나누어 볼 수 있다. (이 구분이 절대적인 정의는 아니다.) 각 역할별로 제공되는 여러 라이브러리를 조합해서 사용하는데 ELK(ElasticSearch + Logstash + Kibana), EFK (ElasticSearch + Fluentd + Kibana), PLG (Promtail + Loki + Grafana) 등 다양한 조합이 있고 보통 해당 라이브러리를 만든 회사의 제품들을 묶은 제품군(stack)으로 사용하게 된다. 또한 수집하는 계측 데이터(log, metric, tr..
공부 목적으로 설치해 보는 과정을 정리한 것이기 때문에 실제 운영과 다릅니다. sonarqube 소개 sonarqube는 30개 이상의 프로그래밍 언어에서 버그, 코드 스멜, 보안 취약점을 발견할 목적으로 정적 코드 분석을 자동 리뷰 수행하기 위한 지속적인 코드 품질 검사용 오픈소스 플랫폼이다. https://www.sonarsource.com/products/sonarqube/ 개발할 때 findbug, checkstyle, pmd를 사용하여 코드상 문제를 파악하고 수정할 수 있다. sonarqube는 이런 분석 내용을 저장하고 해결된 내역을 기록하여 코드 품질을 관리할 수 있도록 도와준다. sonarqube는 java 뿐만 아니라 C#, C, C++, Go, Kotlin, PHP, Python, Ru..
공부 목적으로 설치해 보는 과정을 정리한 것이기 때문에 실제 운영과 다릅니다. Observability, Monitoring에 대하여 Observability(관측 가능성)는 시스템의 출력 변수를 사용하여 상태 변수에 대한 정보를 알아낼 수 있는지를 나타내는 용어이다. 이런 정보를 확인하기 위해서는 데이터를 수집하고 저장하여 지속적으로 관찰, 감시할 수 있는 모니터링이 필요하다. 저장할 데이터의 종류는 크게 log, metric, trace (추가로 event?)으로 나누어 볼 수 있다. log는 일반적으로 개발하면서 logger를 통해 남기는 데이터라고 생각하면 된다. metric은 현재 application의 상태에 대한 지표를 주기적으로 수집하여 시간별 상태를 확인할 수 있도록 시계열 데이터(tim..
ConfigMap https://kubernetes.io/ko/docs/concepts/configuration/configmap/ key-value 쌍으로 이루어진 데이터를 저장하는데 사용하는 API Object이다. pod는 volume에서 environment variables, command-line argument 로 configmap을 사용할 수 있다. configmap은 암호화를 제공하지 않으므로 계정/비밀번호 같은 데이터는 secret을 사용하면 된다. 기본적인 구성은 다음과 같다. 일반적인 key/value 쌍으로 이루어진 데이터 key를 파일이름으로, value를 파일의 내용으로 구성할 수도 있다. apiVersion: v1 kind: ConfigMap metadata: name: ga..
docker container는 재시작시 모든 데이터가 초기화된다. 데이터를 유지하기 위해 기존에는 Volumes의 hostPath 설정을 통해 host의 디렉토리를 참조하여 사용하였었다. mariadb를 사용하는 경우 기존 설정은 다음과 같았다 apiVersion: apps/v1 kind: Deployment metadata: name: mariadb-deployment labels: app: mariadb spec: replicas: 1 selector: matchLabels: app: mariadb template: metadata: labels: app: mariadb spec: containers: - name: mariadb image: mariadb ports: - containerPort:..
Ingress 소개 https://kubernetes.io/ko/docs/concepts/services-networking/ingress/ Ingress는 kubernetes cluster 내의 서비스에 대한 외부 접근을 관리하는 API Object이고 일반적으로 http를 관리한다. 로컬에 kubernetes를 설치하고 점점 pod가 늘어나기 시작하면서 port를 분배하여 사용하는 서비스를 호출하는 게 점점 버거워지기 시작했다. localhost:30000은 어떤 서비스인지 localhost:30120은 어떤 서비스인지 일일이 기억하기 힘들어서 매번 매칭하는 표를 찾아서 찾아갔다. 이럴 때 jenkins.bluesky.local, nexus.bluesky.local 같이 도메인 주소를 사용하면 서비스..
기존에 생성한 kubernetes pod에 curl을 사용하기 위해 설치하는 과정을 거칠 수도 있지만 간단하게 curl을 테스트하기 위한 pod를 하나 띄우고 curl을 테스트하는 방법도 있다. (이게 더 간단해서 자주 쓰는 것 같다.) kubectl run mycurlpod --image=curlimages/curl -i --tty -- sh # 해당 pod에서 테스트 하기 $curl [테스트할 주소] # 이후 해당 pod 들어가기 kubectl exec -it mycurlpod -- sh # pod 삭제하기 kubectl delete pod mycurlpod
전체 글타래 2022.12.18 - [Study/CI&CD] - 로컬 kubernetes에 Spinnaker 설치해 보기 2022.12.22 - [Study/CI&CD] - spinnaker CD 연동해 보기 - jenkins, kubernetes 연동, pipeline 사용 2022.12.26 - [Study/CI&CD] - spinnaker CD 연동해 보기 (2) - deploy manifest artifact 사용, SpEL 사용 2023.01.01 - [Study/CI&CD] - spinnaker CD 연동해 보기 (3) - jenkins parameter 사용, kubernetes livenessProbe, readinessProbe 설정 2023.01.10 - [Study/CI&CD] - s..