분류 전체보기 719

jenkins job종료 후 discord 알림 설정

1. 개요 CI/C 시스템에서는 Task가 끝나면 사용자에게 알림을 주는 기능이 필요합니다. jenkins에서는 job이 종료되면 post stage에서 성공/실패에 따라 알림기능을 전송할 수 있습니다. 공식문서에도 친절히 예제를 설명하고 있습니다. 참고자료: https://www.jenkins.io/doc/pipeline/tour/post/ 이 글에서는 discord에 알림을 전송하는 예제를 다룹니다. 2. 원리 discord에서 제공하는 webhook기능을 이용하여 알림을 전송합니다. 3. 준비 3.1 jenkins 플러그인 설치 다행히 jenkins에서 discord 알림 플러그인이 있습니다. 플러그인 이름은 Discord Notifier입니다. 3.2 discord webbhook주소 생성 jen..

SRE프로젝트 일기 - 프로젝트 REST API 개발 기능

1. 프로젝트란? 게시판을 쓰려면 카테고리를 만드는 것처럼, 만들려고하는 플랫폼에서 최상단 관리 그룹을 프로젝트라는 이름으로 정했습니다. GCP 프로젝트 개념을 벤치마킹했습니다. 2. 사용자와 플랫폼 관점에서 살펴보는 프로젝트 개념 사용자 입장에서 프로젝트는 최상단 그룹에 해당하지만, 플랫폼에서는 쿠버네티스 namespace입니다. 결국, 사용자가 프로젝트를 생성하면 쿠버네티스 namespace가 생성됩니다. 그리고 추가 개발을 위해 데이터베이스에 프로젝트 정보를 저장했습니다. 3. restapi 소스코드: https://github.com/srmproject/Backend-python/blob/d5c679cb0f288a6b0a0401c3c833878b42e7328b/app/api/project.py#L..

알고리즘 공부 6일차

오늘은 “주식을 사고팔기 가장 좋은 시점” 문제를 공부했습니다. 문제링크: https://leetcode.com/problems/best-time-to-buy-and-sell-stock/ 노가다 방법으로 풀어서 timeout이 발생하여 결과적으로 못풀었습니다. ㅜ.ㅜ 해답을 보니 for문을 한번 돌면서 최솟값, 최대값을 갱신하는 방법으로 풀더라구요. 결국 문제에서 원하는 목표는 일정구간의 최솟값과 최대값 차이를 구하는 것이므로, for문 한번으로 해결하는 방향이었습니다. 그리고, 파이썬에서 지원하는 최대값, 최소값을 얻을 수 있는 방법을 배웠습니다. max = sys.maxsize min = -sys.maxsize

쿠버네티스 오퍼레이터 스터디 3주차 - strimzi operator를 이용한 카프카 토픽 읽기/쓰기 작업

안녕하세요. 이번 글은 strimzi operator을 이용하여 카프카 클러스터에 읽기/쓰기 작업과정을 다룹니다. 이 글을 실습하기 위해서는 strimzi operator와 카프카 클러스터가 설치되어 있어야 합니다. 1. 준비 카프카 클라이언트와 엔드포인트를 설정합니다. 1.1 카프카 클라이언트 생성 카프카 클라이언트를 pod로 생성합니다. 쓰기작업을 요청하는 producer pod와 읽기 작업을 요청하는 consumer pod를 생성합니다. # producer apiVersion: v1 kind: Pod metadata: name: myclient2 labels: app: myclient spec: nodeName: k8s-m containers: - name: myclient2 image: bitna..

연재 시리즈 2022.06.12

쿠버네티스 오퍼레이터 스터디 3주차 - strimzi operator를 이용한 카프카 토픽 생성

저번 시간에는 strimzi operator를 이용하여 쿠버네티스에 카프카 클러스터를 구축했습니다. 이번 시간에는 strimzi operator에서 제공하는 crd를 이용하여 토픽을 관리하는 방법을 다룹니다. 1. 토픽 개념 kafkaTopic CRD를 이용하여 쉽게 토픽을 생성할 수 있지만, 카프카 토픽 설정에 대해 알고 있어야 crd를 사용할 수 있습니다. 토픽은 카프카 데이터를 관리하기 위한 단위입니다. 클라이언트가 카프카에 데이터를 쓰거나 가져올 때 토픽이름을 설정하게 되어 있습니다. 토픽은 데이터를 저장할 때 파티션 단위로 나누어 저장합니다. 클라이언트가 A이름을 갖는 토픽에 데이터를 저장하면, 실제로 데이터 저장은 A토픽 안에 있는 파티션이라는 공간에 저장됩니다. 파티션 갯수는 사용자가 직접 ..

연재 시리즈 2022.06.12

docker-compose 컨테이너간 통신 오류 해결

6.11 광주에서 서울로 잠깐 방문한 동생이 docker-compose 문제를 물어봤었습니다. 통신이 안된다는 문제였는데.. 금방 해결하겠지라고 생각했지만, 약 3시간 이상 시간을 투자해서 문제를 해결했습니다. 1. 문제 마주쳤던 문제는 일방향 컨테이너 통신만 가능했습니다. 큰 아키텍처는 애플리케이션(app), mariadb를 docker-compose 아래 그림처럼 구성되어 있었습니다.자세한 설정은 보안상 생략했습니다. 애플리케이션→mariadb로 ping이 안되었지만, mariadb→app으로 ping은 되었습니다. 디버깅을 위한 busybox는 양방향 통신이 가능했습니다. 2. 문제 원인 찾는 과정 2.1 docker service discovery 먼저, app→mariadb에서 ping이 안된 ..

회고모음 2022.06.12