Infra

    k8s secret properties 파일로 volume mount 하기

    k8s secret properties 파일로 volume mount 하기apiVersion: v1kind: Secretmetadata: name: bepoz-secret labels: app: bepoz-apptype: Opaquedata: name: YmVwb3o= # 'bepoz'의 base64 인코딩apiVersion: apps/v1kind: Deploymentmetadata: name: bepoz-deploymentspec: replicas: 1 selector: matchLabels: app: bepoz-app template: metadata: labels: app: bepoz-app ..

    OpenSearch Sink Connector 등록 설정

    OpenSearch Sink Connector 등록 설정 OpenSearch Sink Connector 란 말 그대로 open search를 위한 sink connector 입니다. 카프카 토픽의 내용을 바로 open search의 index로 인덱싱하기 위해서 사용합니다. elastic search에서 fork 되어서 나온 open search 라고 elastic search sink connector를 사용하면 동작하지 않습니다. ( 관련해서 es 직원이 답변해둔 링크 ) es sink connector의 경우 confluent 사에서 공식적으로 plugin을 제공한다(ex. confluentinc/kafka-connect-elasticsearch:14.0.12). open search sink co..

    여러 파드 로그 조회 명령어 Stern

    여러 파드 로그 조회 명령어 Stern k logs {pod-name} 으로 파드를 조회할 때에 1개의 파드만 조회가능하다. 만약 replicas가 여러개라면 1개의 파드를 보는 것으로는 제대로된 로그파악이 되지 않는다. k logs -l app=bepoz 이렇게 레이블이 app=bepoz인 것 들을 한 번에 조회할 수도 있긴하지만 -f 옵션으로 지속적으로 로그변경을 확인하고 싶을 때에는 최대 5개의 파드까지만 가능하기 때문에 파드 수가 많다면 k logs -f -l app-bepoz 이렇게 사용이 어렵다. 명령어 stern은 가능하다. stern은 쿠버네티스 클러스터의 여러 파드와 여러 컨테이너를 tail 할 수 있게끔 해준다. brew install stern 으로 stern을 설치한다. 기본적으로 ..

    [ES] rollup 간략 정리

    ElasticSearch rollup에 대해 특정 정보를 es에 계속해서 쌓고있는 상황이라고 하자, 정보를 계속해서 인덱싱하다보면 용량이 점점 늘어나게 될것이고 이는 리소스 비용의 증가로 이어질 것이다. 이 정보들을 summary/압축하여 가볍게 보관하면서 이전의 데이터를 사용하기 위해 롤업을 사용한다. 예시로 사용할 인덱스와 도큐먼트 정보는 아래와 같다. PUT rollupexample-2022.01.01 { "mappings": { "properties": { "updateType": {"type": "keyword"}, "age": {"type": "long"}, "date": {"type": "date", "format": "epoch_millis"} } } } POST _bulk {"index"..

    [Redis] RedisTemplate, RedisCacheManager 설정에 대해

    RedisTemplate, RedisCacheManager 설정에 대해 레디스를 캐시서버로 이용하려고 하는 상황이다. @Configuration @RequiredArgsConstructor public class RedisConfig { // spring.data.redis yaml에 정의하고 이걸 토대로 자동으로 생성되는 RedisConnectionFactory 빈을 사용 추천 private final RedisProperties redisProperties; @Bean public RedisTemplate redisTemplate() { RedisTemplate redisTemplate = new RedisTemplate(); redisTemplate.setConnectionFactory(redisC..

    [Docker] 계속 잊어버려서 작성하는 도커 사용 간단 정리

    계속 잊어버려서 작성하는 도커 사용 간단 정리 도커에서 사용하는 이미지의 이름 형식 [저장소 이름] / [이미지 이름] : 태그 ex) alicek106/ubuntu:14.04 컨테이너 생성 docker run -i -t ubuntu:14.04 docker run 명령어는 컨테이너를 생성하고 실행하는 역할을 한다. -i -t 옵션은 컨테이너와 상호(interactive) 입출력을 가능하게 한다. ubuntu:14.04 이미지가 로컬 도커엔진에 존재하지 않는다면 도커 중앙 이미지 저장소인 도커 허브에서 자동으로 이미지를 내려 받게된다. 태그 미지정 시, latest 한 것으로 내려받음. docker images 를 입력하면 도커 엔진에 존재하는 이미지의 목록을 출력한다. 컨테이너 생성 시에는 run 이 아..

    [Kubernetes] 쿠버네티스 개념 간략 정리

    쿠버네티스 개념 간략 정리 쿠버네티스에 대해 간략히 정리해보려고 한다. 상세하게는 말고 기초적인 개념 정도로 정리해보겠다. 쿠버네티스를 언급하기 앞서 도커 컨테이너에 대해서 말을 안할 수가 없다. 컨테이너는 어떤 점이 좋을까? vm과 비교해서 빠르게 무언가를 띄울 수 있고, 이미지를 사용해서 버전관리도 용이하고 여러 환경에서 동일한 환경을 사용할 수 있다는 장점이 있을 것이다. 컨테이너에 api 서버도 올리고, mysql도 올리고, jenkins도 올리고 사용을 하게 될 것이다. 그렇지만 컨테이너의 수가 많아질수록 하나씩 관리하기가 힘들어질 것이다. api 서버를 여러대 올려놨는데 버전업을 할 때 하나씩 다 해주어야 할 것이고, 어떤 컨테이너가 문제가 생겼는지 체크를 다 해줘야 할 것이다. 컨테이너에 이..

    쿼리 튜닝 미션 적용기

    쿼리 튜닝 미션 적용기 우테코 레벨 4의 새로운 미션으로 쿼리 최적화 미션이 나왔다. 이 적용기를 써보려 한다. 허접함 주의!!!! 쿼리가 그렇게 좋지 않습니다!!! 모수 테이블이 작아야 한다는 원칙도 잘 지키지 못했다!! 그냥 과정만 봐주세요 ㅎㅎ.. 연습 쿼리로 위의 요구사항이 주어졌다. 테이블 정보는 다음과 같았다. 요구사항을 일단 되는대로 쿼리를 짜보았다. select 연봉높은사원신상.사원번호, 연봉높은사원신상.이름, 연봉높은사원신상.연봉, 사원출입기록.지역, 직급.직급명, 사원출입기록.입출입구분, 사원출입기록.입출입시간 from ( select 사원.사원번호, 사원.이름, 연봉사원정보.연봉 from 사원 inner join ( select 급여.사원번호, 급여. 연봉 from 급여 inner j..