전체 글

전체 글

    k8s secret properties 파일로 volume mount 하기

    k8s secret properties 파일로 volume mount 하기 apiVersion: v1 kind: Secret metadata: name: bepoz-secret labels: app: bepoz-app type: Opaque data: name: YmVwb3o= # 'bepoz'의 base64 인코딩 apiVersion: apps/v1 kind: Deployment metadata: name: bepoz-deployment spec: replicas: 1 selector: matchLabels: app: bepoz-app template: metadata: labels: app: bepoz-app spec: containers: - name: busybox image: bu..

    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..

    [JPA] JPA Auditing에서 OffsetDateTime 사용하기

    JPA Auditing에서 OffsetDateTime 사용하기 @EnableJpaAuditing을 사용한 jpa의 auditing에서 @CreateDate 과 같은 Date 관련 기능은 기본적으로 LocalDateTime 타입이 할당된다. /** * Default {@link DateTimeProvider} simply creating new {@link LocalDateTime} instances for each method call. * * @author Oliver Gierke * @author Christoph Strobl * @since 1.5 */ public enum CurrentDateTimeProvider implements DateTimeProvider { INSTANCE; /* * (..

    MongoDB 특정 필드만 가져오게끔 하는 projection

    MongoDB 특정 필드만 가져오게끔 하는 projection 개요 몽고 DB에서 document를 조회할 때 매치되는 doc의 모든 필드를 가져오지만 projection을 이용해 특정 필드만 가져올 수가 있다. 필드 수가 많은 collection에서 내가 원하는 데이터의 특정 필드값만 조회하고 싶은데, 전체 필드를 가져오는 것은 굉장히 비효율 적일 것이다. 그럴 때에 사용할 수 있다. public class Person { @Id private String id; private Name name; //Name 클래스는 firstName과 lastName 이렇게 2개의 필드가 존재 @Positive private int age; @CreatedDate private LocalDateTime created..

    [Spring] Filter와 server.compression 설정을 통한 api 압축

    Filter와 server.compression 설정을 통한 api 압축 API를 압축해서 return 하려고 한다. 먼저 가장 대표적인 server.compression 설정을 알아보고 사용해보고 이후 Filter를 이용하여 조금 더 응용해보려고 한다. server.compression 설정을 통한 api 압축 설정 종류 server: compression: enabled: min-response-size: mime-types: excluded-user-agents: server.compression 설정에는 위의 4개 항목이 있다. 단순히 yaml 파일에 기입을 해두면 동작한다. enabled: 압축 여부 default: false min-response-size: 압축을 수행할 최소 용량 defau..

    여러 파드 로그 조회 명령어 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을 설치한다. 기본적으로 ..

    쿠버네티스 인 액션

    쿠버네티스 소개 쿠버네티스 클러스터 이해 마스터 노드는 전체 쿠버네티스 시스템을 제어하고 관리하는 쿠버네티스 컨트롤 플레인을 실행한다 워커 노드는 실제 배포되는 컨테이너 어플리케이션을 실행한다 컨트롤 플레인 컨트롤 플레인은 클러스터를 제어하고 작동시킨다. 하나의 마스터 노드에서 실행되거나 여러 노드로 분할되고 복제돼 고가용성을 보장할 수 있는 여러 구성 요소로 구성된다. 쿠버네티스 API 서버는 사용자, 컨트롤 플레인 구성 요소와 통신한다. 스케줄러는 애플리케이션의 배포를 담당한다.(애플리케이션의 배포 가능한 각 구성 요소를 워크 노드에 할당) 컨트롤러 매니저는 구성 요소 복제본, 워커 노드 추적, 노드 장애 처리 등과 같은 크러스터단의 기능을 수행한다. Etcd는 클러스터 구성을 지속적으로 저장하는 신..

    [Kotlin] 기본 생성자가 없고, 필드가 1개여도 코틀린은 역직렬화가 된다

    기본 생성자가 없고, 필드가 1개여도 코틀린은 역직렬화가 된다 class BepozDTOTest { @Test fun convertTest() { val mapper = jacksonObjectMapper() val mapper2 = ObjectMapper() val json = "{\"name\": \"kang\"}" val result: BepozDTO = mapper.readValue(json) val result2: BepozDTO = mapper2.readValue(json) } } data class BepozDTO( val name: String ) 자바의 경우 jackson 2.13버전 부터 추가된 jackson-module-parameter-names 모듈에 의해 기본 생성자가 없어도 다..