본문 바로가기
반응형

분류 전체보기296

Gradle 멀티모듈에서 특정(one) 모듈(subproject)만 빌드 Gradle에서 멀티모듈 환경으로 개발을 하는 경우 기본적으로 빌드 시 매번 전체 모듈이 빌드가 된다. 하지만 상황에 따라서 특정 모듈(subproject)만 빌드를 수행하고 싶을 때가 있다. 이럴때 매번 전체 모듈을 빌드하더라도 원하는 결과물은 생성되겠지만 불필요하게 빌드시간이 증가하게 된다. 아래와 같이 간단한 Gradle 명령으로 특정 모듈만 빌드가 가능하다. Parent(Root) - A모듈 - B모듈 - C모듈 위와 같이 Parent에 A, B, C 프로젝트가 자식 모듈(subproject)로 구성된 멀티 모듈 환경이 있다고 가정하자. 먼저 일반적인 Gradle 명령은 다음과 같다. Parent(Root) 기준으로 전체 모듈이 빌드가 된다. gradle build 특정 모듈만 빌드를 하고 싶은 .. 2023. 5. 27.
helm upgrade configmap, secret 변경 시 pod 자동 재시작 쿠버네티스에서 Helm을 사용하여 배포를 관리할 경우 configmap이나 secret을 변경하고 helm upgrade 했을 때 기본적으로 관련 pod들은 재시작하지 않는다. 그래서 실제적으로 configmap, secret의 변경 내용이 pod에 반영이 안된다. 예를 들면 아래와 같은 케이스이다. # configmap, secret 변경 vi app-configmap.yaml # helm upgrade로 반영 helm upgrade app -f values.yaml . # pod 재시작 여부 확인 => (재시작 안됨 = 변경 내용 어플리케이션에 반영 안됨) kubectl get po configmap, secret 변경 시 pod 자동 재시작을 위해서 deployment나 pod yaml에 아래 설정.. 2023. 3. 20.
Distroless 이미지로 안전하고 최적화된 이미지 생성 Docker 빌드를 할 때 베이스 이미지로 이미지 경량화를 위해 Alpine이미지를 많아 사용해왔다. 초경량을 위해서는 scratch도 있긴 하지만 이는 너무 row레벨이고 언어별로 사용하는데 제약이 많다. Distroless 이미지를 사용하면 Alpine보다 좀 더 경량화된 이미지를 생성할 수 있고 보안적으로도 좀 더 안전한 이미지를 생성할 수 있다. Distroless 이미지는 Google에서 제공하는 이미지로써 작성한 어플리케이션과 런타임 종석성만을 포함하고 있다. 그리고 표준 Linux 배포판에서 볼 수 있는 yum과 같은 Package Manager, Shell, 기타 프로그램들이 포함되어 있지 않아서 이미지를 경량화 할 수 있고, 불필요한 프로그램들이 없어서 이미지 보안적으로 장점을 가질 수 .. 2023. 3. 13.
Kafka 구성 및 SpringBoot 연동 SpringBoot에 kafka 연동을 적용해보면서 kafka에 대한 기본 개념과 springboot와 연동 방법을 알아본다 Kafka 개요 매우 높은 처리량과 낮은 지연시간(latency) 높은 확장성 고가용성: 클러스터 내 Replication 각 메세지들을 여러 개로 복제해서 카프카 클러스터 내 브로커들에 분산시키는 동작 ex. 토픽 생성시 --replication-factor 3 으로 지정하면 원본을 포함하여 총 3개의 replication 생성 Topic 자체를 복제하는 것이 아닌 Topic의 파티션을 복제를 하는 방식 내구성: acks 옵션, 메시지 디스크 저장 개발 편의성: Producer와 Consumer의 분리 다양한 기능과 3rd Party 를 통해 관리 편의성 kafka 구성 주키퍼(.. 2023. 3. 13.
Kubernetes AWS ECR 이미지 pull 받기 Kubernetes에서 ECR의 이미지를 pull 받을 경우 secret을 생성하고, deployment나 pod yaml 작성 시 imagePullSecrets을 설정해줘야 한다. 아무 설정을 하지 않은 상태에서는 아래와 같은 Unauthorized 에러가 발생한다. rpc error: code = Unknown desc = failed to pull and unpack image 사실 ECR 뿐만 아니라 Private Image 리파지토리를 사용하게 되면 secret 및 imagePullSecrets 설정이 필요하다. 여기서는 ECR을 기준으로 방법을 알아본다. 먼저 secret 생성을 위한 환변변수들을 설정해준다. ACCOUNT=xxxxxxx # AWS ECR 이미지 URL 맨 앞 숫자 REGION.. 2023. 3. 11.
EKS error: exec plugin: invalid apiVersion "client.authentication.k8s.io/v1alpha1" 에러(kubectl, helm) EKS에서 kubectl과 helm 사용하는데 아래와 같은 에러가 발생 했다. EKS버전은 현재 1.24.10을 사용 중이다. error: exec plugin: invalid apiVersion "client.authentication.k8s.io/v1alpha1" kubectl 최신 kubectl 버전이 EKS 버전과 문제가 있는 상황이고, kubectl v1.23.6으로 재설치하면 해결이 된다. # kubectl v1.23.6 설치 curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.23.6/bin/linux/amd64/kubectl 재설치 후 버전 정보를 확인해보면 아래와 같고, kubectl 명령어도 잘 동작한다. # ku.. 2023. 3. 11.
MAC tree 명령어 사용 tree명령은 디렉토리 및 파일 구조를 확인할 때 자주 사용하는 명령이고, 한 눈에 디렉토리와 파일 을 트리형태로 파악할 수 있어서 편리하다. 그러나 mac에서는 기본적으로 tree명령을 사용하지 못한다. mac에서 tree명령을 치면 command not found가 뜬다. mac에서 tree명령을 사용하기 위해서는 Homebrew를 통해서 직접 설치를 해줘야 한다. 단순히 터미널을 실행하고 아래 명령을 실행하면 된다. $ brew install tree 설치가 완료되면 tree를 사용해 이제 디렉토리 및 파일을 트리형태로 확인이 가능하다. tree에 대한 자세한 사용법은 구글링을 해보면 많이 나온다. 2023. 3. 11.
웰싱킹 - 켈리 최 성공적이고 행복한 삶을 살기 위해서는 생각의 뿌리(웰싱킹)를 튼튼히 하고, 시각화를 통해 잠재의식에 긍정적인 에너지, 믿음, 신념, 확신을 가지고 꾸준히 노력한다. 당신의 인생을 제한하는 벽은 세상에 대한 믿음, 타인데 대한 믿음, 나 자신에 대한 믿음에서 생기는 고정관념이다. 부자들은 이 세가지 벽을 부순 멘탈의 소유자들이다. 당신도 이 세가지 벽을 부수고 인생을 풍요롭게 만들어야 한다. “내가 아무리 망했다 한들 다시 일어서서 한 발 내딛는 걸 못 할까!” 무순한 실패를 반복해야 한다. 성공할때보다 실패할 때가 더 많아야 강해진다. 그러므로 실패 자체를 두려워하지 않았으면 좋겠다. 오히려 실패가 두려워 시도조차 하지 않는 삶의 태도를 경계해야 한다. 무엇보다 그 무수한 실패가 쌓여야 언젠가 성공의 기.. 2023. 3. 4.
반응형