[RabbitMQ] RabbitMQ에 대한 이해

사내 서비스들 중 대부분 RabbitMQ를 사용하고 있지만, 과연 우리가 RabbitMQ를 100% 활용하고 있는가에 대한 의문이 들었다. 내가 알고 있는 RabbitMQ에 대한 정보는 극히 적었다. AMQP를 통해 Producer와 Consumer 사이에서 메시지를 중계해주는 “메시지 브로커”라는 것이며, 크게 Standalone과 Cluster로 구성할 수 있으며, Standalone은 흔히 아는 단독으로 1개의 노드를 띄우며, Cluster는 3개 이상의 노드로 홀 수의 노드를 띄우는 … Read more

[Jenkins] Jenkins 설치

Linux 기반의 Jenkins를 설치했던 방법을 추후에도 참고할 것 같아 작성했다. Jenkins의 설치 방법은 여러가지(Docker, Kubernetes, Linux, Windows)가 있는데, 기본적인 Linux로 설치를 하였고 Rocky Linux 기반으로 진행했다. Jenkins는 최신 Release 또는 Long Term Support 둘 중 1개를 선택할 수 있는데, 아무래도 Long Term Support가 좀 더 안정적이기에 해당 버전을 설치했다. 설치 방법 위 내용은 아래 공식 … Read more

[Docker] Docker 디렉토리 구조

어느 날, systemctl start docker 명령어를 입력했더니 hang이 걸리는 사건이 있었다. dmesg와 journalctl, messages를 전부 확인해도 문제가 되는 부분이 없었고, docker.socket 또한 기동이 되고 있었다. 삽질을 하던 중 찾아낸 원인은…. docker의 기본 디렉토리인 /var/lib/docker 가 3TB 가까이 사용중이였으며, 하필이면 할당된 디스크가 성능이 안 좋은 SATA 디스크였기에 docker가 기동되면서 /var/lib/docker의 데이터들을 읽어오는 시간이 상상초월할 정도로 길었으며, … Read more

[Maven] Maven 명령어 및 옵션 정리

여러가지 Build Toole들이 있지만 업무상 Maven 3.6.x으로 작업하는 경우가 많아서 이에 대한 옵션을 정리하고자 한다. (업무할 때에 참조하기 편하도록 정리하기로 했다.) 공식 Docs를 최대한 생활화 하자. http://maven.apache.org/ref/3.6.3/maven-embedder/cli.html(Maven 3.6.3 공식 페이지이지며, 버전은 알맞게 변경해서 확인해야한다.) Maven 명령어 종류 Maven 옵션 종류

[Jenkins] Jenkins Credentials 확인

Jenkins Credentials를 사용하고 있는데 사실 편해서 많이 사용하는 중이다. 하지만 뜻하지않게 Credentials를 까먹게 되면, Pipeline이나 별도의 Script에 영향범위를 파악하기가 어려워 섣불리 수정하기 싫었다. 그러면 과연 Credentials를 잊어버리면 어떤 방식으로 찾아야할까? Password Value를 확인한다. Password를 찾고싶은 Credentials의 업데이트 버튼을 누르고 개발자 도구(F12)를 켜서 아래 내용을 확인한다. 위에 value인 {AQAAABAA~~~tDt0=} 해당 부분을 복사한다. Jenkins -> Dashboard -> … Read more

[Grafana] Grafana 이해

Grafana는 오픈 소스 시각화 및 분석도구다. Prometheus,, InfluxDB, Elasticsearch 등 여러 데이터 소스와 통합이 가능하며, 시계열 메트릭 데이터를 표현하기에 좋다. (다른 데이터들도 가능하긴 하지만 꽤나 번거로울 수 있다.) 여기서 메트릭 데이터는 키, 값이 쌍으로 이루어진 단순한 숫자 데이터이며 CPU나 메모리등을 측정할 때 쓰이는 데이터가 주로 메트릭 데이터를 의마한다. 키 부분에는 이름과, 상태, 메소드, 타임스탬프가 찍히고 … Read more

[GCP] GCP 디스크 스냅샷 다른 프로젝트로 복사하기

GCP 콘솔의 Cloud Shell 또는 gcloud cli를 통해서 진행 가능하다. 스냅샷 자체를 복사한다기 보다는 기존 프로젝트의 디스크 스냅샷 -> 대상 프로젝트의 리전 디스크 -> 해당 디스크 스냅샷 후 보관 식으로 이루어진다고 보면 된다. (리전 디스크가 비용이 높으므로, 잘 관리해야할 것 같다.) 아래 명령어를 통해 현재 스냅샷들의 목록을 URL형식으로 보여준다. gcloud compute snapshots list –url https://www.googleapis.com/compute/v1/projects/${project_name}/global/snapshots/${snapshot_name1}https://www.googleapis.com/compute/v1/projects/${project_name}/global/snapshots/${snapshot_name2}https://www.googleapis.com/compute/v1/projects/${project_name}/global/snapshots/${snapshot_name3} … Read more

[ERROR] ArgoCD err_too_many_redirects

ArgoCD를 Helm으로 올렸지만 err_too_many_redirects 오류 발견 ArgoCD에서 제공하는 Helm을 올렸는데 err_too_many_redirects 오류가 발생했다. 아직 인증서를 적용하기 전이였기에, value.yml 에다가 tls 옵션을 전부 false한 뒤에 시도해봤지만 실패하였다. 그 이유는 되게 간단했다. ArgoCD-Server의 insecure 활성화 value.yml에 아래 내용을 수정하였다. Helm으로 올리지 않았을 경우 Argocd-server deployment.yml에 아래 내용을 추가하면 해결이 될 듯 하다. 위의 내용으로는 테스트하진 않았지만 아래 … Read more

[k8s] Kubernetes 서비스 타입 (ClusterIP, NodePort, LoadBalancer, ExternalName)

쿠버네티스의 서비스 타입을 알아보기 전에, 서비스가 무엇을 의미하는지부터 알아보겠습니다. 쿠버네티스 서비스란? 쿠버네티스에서의 서비스는 pod들을 통해 실행되고 있는 어플리케이션을 네트워크에 노출시키는 방법이라고 볼 수 있다. 예를 들어, pod가 다른 pod를 찾을 때, IP나 호스트 이름같은 경우는 pod의 일회성 특징 때문에 언제든지 사라질 수 있다. 그렇기에 변하지 않는 진입점인 서비스라는 것을 통하여 해결을 하게 된다. 서비스는 크게 … Read more

[k8s] Kubernetes 간단하고 확실한 이해

Kubernets를 뭐라고 설명해야하나.. Kubernetes, k8s 등등 많이 들었던 그 기술이지만 정확히 뭐냐고 설명하기가 참 어려웠습니다. 특히나 오케스트레이션 도구라는 단어만 들으면 머리가 복잡한… 그런 느낌… 이러한 개념을 아주 간단하게 설명드려 보겠습니다. 쉽게 이해해보자 컨테이너 앱이 구동되는 환경까지 감싸서 실행을 할 수 있도록 하는 기술 컨테이너 런타임 위의 컨테이너라는 기술을 다루는 도구 Docker 컨테이너 런타임 중에 가장 … Read more