본문 바로가기

devops

(14)
[Kubernetes] private 저장소의 이미지를 가져오는 법 kubernetes를 공부하기 위해서 진행하는 프로젝트에서 private 저장소의 이미지를 가져와서 배포를 해야하는 상황을 마주하게 되었다. 그 동안은 public 이미지를 통해서 배포를 구성해왔기 때문에 크게 고민하지 않고 사용했던 기능이었지만 이번 기회를 통해서 공부하게 되었다.로그인을 위한 Secret 생성하기도커 허브에 접속하기 위해서 필요한 아이디와 비밀번호 정보를 기반으로 비밀을 생성할 수 있다. 만약 도커 허브가 아니라 다른 이미지 저장소를 사용한다면 docker-server의 파라미터를 알맞게 수정해서 사용하면 된다.kubectl create secret docker-registry regcred --docker-server=https://index.docker.io/v1/ --docker..
Go template을 이용한 helm value.yaml 값 매핑하는 방법 헬름을 이용해서 배포 환경을 문서화하는 작업을 할 때, 배포하는 서비스의 구성요소 설정을 어떻게 구성하는 것이 좋은지에 대한 고민이 많이 들었다. 처음에는 nginx의 헬름차트 구성이 어떻게 되어있는지를 살펴보고 단일 차트에 대한 설정에 대해서 감을 잡고 go template을 어떻게 사용하는지에 대한 예시를 보면서 학습을 하였다. go를 사용하지 않아서 처음 보는 템플릿 표현 방식에 대해서 정리를 해보았다.Go template을 이용한 설정값 매핑하기헬름의 차트의 값들은 value.yaml에 정의된다. 정의 값은 go template을 이용해서 templates 안에 존재하는 쿠버네티스 컴포넌트에 반영된다. 프로젝트를 진행하면서 알게된 helm에서 Go template 사용법을 몇가지 소개한다.1:1 ..
Statefulset과 Deployment 차이점이란? helm을 통해서 kafka를 배포했는데 배포된 리소스의 타입이 statefulset이었다. 왜 deployment을 안쓰고 statefulset을 사용을 하는지 궁금해져서 관련된 내용을 찾아보게 되었다.StatefulSet이란?공식문서에서는 애플리케이션의 스테이트풀을 관리하는데 사용하는 워크로드 API 오프젝트라고 소개한다. 즉, 상태를 안정적으로 관리할 수 있는 리소스라는 것이다.스테이트 풀셋은 다음과 같은 요구 사항이 필요한 어플리케이션에 적합하다고 한다.안정적이고 고유한 네트워크 식별자가 필요한 경우안정적이고 지속적으로 유지가 필요한 스토리지가 필요한 경우순차적인, 정상 배포(graceful deployment)와 스케일링이 필요한 경우순차적인 자동 롤링 업데이트가 필요한 경우구체적인 사례와 연관..
4장 카프카 상세 개념 설명 들어가면서 카프카 프로듀서와 컨슈머를 똑똑하게 사용하기 위한 팁들과 매커니즘을 공부하고 정리한 글입니다. 책에서 중요하게 생각한 내용을 정리한 내용이고 자세한 내용은 도서를 참고해주세요!! 토픽 운영시 고려사항 1. 적정 파티션 개수 토픽의 파티션의 개수는 성능과 연관이 깊다. 그래서 적절한 파티션의 개수를 설정하는 것이 중요하다. 토픽 생성 시 파티션 개수 고려사항 데이터 처리량 메시지 키 사용 여부 브로커, 컨슈머 영향도 데이터 처리량을 고려한 파티션 개수 파티션의 개수를 정할 때는 데이터의 처리량이 얼마나 많은지에 따라서 결정해야한다. 파티션의 개수가 많을 수록 병렬적으로 처리할 컨슈머를 사용할 수 있기 때문이다. 프로듀서의 처리량이 컨슈머의 처리량과 파티션의 수를 곱한 것 보다 작게 해야 데이터 ..
3장 카프카 스트림즈 카프카 스트림즈는 토픽에 적재된 데이터를 상태기반 또는 비상태기반으로 변환하여 다른 토픽에 적재하는 라이브러리이다. 장점 카프카에서 공식적으로 지원하여 호환성이 매우 뛰어남 장애 허용 시스템을 가져 장애에 강함 테스크 스트림즈 애플리케이션을 실행하면 생기는 데이터 처리 최소 단위 토폴로지 2개 이상의 노드들과 선으로 이루어진 집합 프로세서 소스 프로세서 : 데이터를 처리하기 위한 노드 스트림 프로세서 : 다른 프로세서가 반환한 데이터를 처리하는 역할을 하는 노드 싱크 프로세서 : 데이터를 특정 카프카 토픽으로 저장하는 역할을 하는 노드 스트림즈 DSL KStream 레코드의 흐름을 표현한 것으로 메시지 키와 메시지 값으로 구성 KTable 유니크한 메시지 키를 기준으로 가장 최신 레코드를 사용한 스트림 ..
3장 카프카 컨슈머 컨슈머 API 카프카에서 데이터를 넣어주는 프로듀서가 있으니 당연히 데이터를 사용하는 컨슈머가 있다. 컨슈머에 대해서 알아보자. 컨슈머 중요 개념 컨슈머를 운영하는 방법은 크게 2가지가 있다. 토픽의 특정 파티션을 구독하는 컨슈머를 운영하는 방식 1개 이상의 컨슈머로 이루어진 컨슈머 그룹을 운영하는 방식 컨슈머 그룹으로 운영하는 경우를 좀 더 자세히 살펴보자. 1개 이상의 컨슈머로 이루어진 컨슈머 그룹을 운영하는 방식 컨슈머를 각 컨슈머 그룹으로부터 격리된 환경에서 안전하게 운영할 수 있게 도와주는 방식이다. 컨슈머 그룹으로 묶인 컨슈머들은 토픽의 1개 이상 파티션들에 할당되어 데이터를 가져갈 수 있다. 컨슈머 그룹으로 묶인 컨슈머가 토픽을 구독해서 데이터를 가져갈 때, 파티션은 오직 하나의 컨슈머만 사..
3장 카프카 기본 개념 설명 - 브로커, 프로듀서 카프카 브로커, 클러스터 주키퍼 데이터 복제, 싱크 장애 발생시에도 데이터를 유실하지 않고 안전하게 사용하기 위해서 데이터 복제(싱크)를 실행한다. 카프카의 데이터 복제는 파티션 단위로 이루어지며 복제된 파티션은 리터와 팔로워로 구성된다. 팔로워의 파티션은 리더 파티션으로부터 데이터를 가져와서 자신의 파티션에 저장한다. 복제 개수만큼 저장 용량이 증가한다는 단점을 가지고 있다. 리더 파티션에 장애가 발생하면 다른 팔로워 파티션이 그 기능을 위임받는다. 컨트롤러 클러스터의 다수 브로커 중 한 대가 컨트롤러의 역할을 한다. 컨트롤러는 다른 브로커들의 상태를 체크하고 브로커가 클러스터에서 빠지는 경우 해당 브로커에 존재하는 리더 파티션을 재분배한다. 데이터 삭제 카프카는 다른 메시징 플랫폼과 다르게 컨슈머가 ..
2장 카프카 빠르게 시작해보기 (카프카 커맨드 라인 ) kafka-topics.sh 토픽 생성 hello.kafka 이름의 토픽을 생성한다. ./kafka-topics.sh \ --create \ --bootstrap-server kafka:9092 \ -- topic hello.kafka 추가적인 옵션을 설정하지 않으면 기본 설정에 따라 토픽이 생성된다. 옵션을 적용하여 토픽 생성 ./kafka-topics.sh \ --create \ --bootstrap-server kafka:9092 \ --partitions 4 \ --replication-factor 1 \ --config retention.ms=172800000 -- topic hello.kafka.2 option describe partitions 파티션의 개수를 설정한다. replication..