본문 바로가기

IT

쿠버네티스[EKS] Strimzi Kafka 구축 (Kafka-Exporter, Metrics, Kafka-UI) Strimzi Kafka Operator를 활용하여 설치한 카프카에 대한 기록을 남겨보려고 한다.  Strimzi Github을 참고하여  처음 설치할 때는 단발성의 (볼륨이 잡히지 않은) 카프카 클러스터를 생성하여 동작 과정을 확인하였고 바로 다음 볼륨(PVC)이 정의되고 메트릭 설정까지 정의된 예제 파일을 활용하여 클러스터를 설치하고 메트릭까지 확인하였다. Kafka pod안에서 Kafka CLI 간단한 명령어를 통해 토픽에 메시지를 보내고 컨슈머, 컨슈머 그룹을 통해 메시지를 받는 과정을 통해 상태를 확인했고 Kafka-ui를 통해 좀 더 직관적으로 토픽과 브로커에 대해 확인했다. 마지막으로 Kafka-exporter를 활용해 Consumer Lag을 포함한 정보를 프로메테우스에서 수집하고 그라파나.. 더보기
EC2 Jar CICD Pipeline (GitLab Runner, AWS CodeDeploy) EC2 on premise 환경에 Jar 파일(컨테이너X)을 배포하는 과정을 기록하려고 한다. 쿠버네티스[EKS] 환경에 CICD Pipeline은 따로 포스팅해두었으니 해당 글을 참고하면 될 듯 하다.https://sh970901.tistory.com/165 Amazon EKS CICD review (ArgoCD+GitLab Runner)쿠버네티스(Amazon EKS) 환경에서 CICD 파이프라인을 구축한 과정을 기록하려고 한다. 전체 파이프라인을 구성하는 과정에서 많은 블로그들을 참고하면서 작업했고 내 욕심에 따라 sh970901.tistory.com  본론으로 돌아와 CI 도구는 Gitlab-Runner를 사용하였다. 깃랩과 통합이 잘되었고 익숙한 도구였다. CD는 AWS의 CodeDeploy를 사.. 더보기
쿠버네티스[EKS] CICD review (ArgoCD+GitLab Runner) 쿠버네티스(Amazon EKS) 환경에서 CICD 파이프라인을 구축한 과정을 기록하려고 한다. 전체 파이프라인을 구성하는 과정에서 많은 블로그들을 참고하면서 작업했고 내 욕심에 따라 수정의 반복이였다. 뭔가 GUI가 있었으면 좋겠고 권한이 잘 관리 되었으면 좋겠고 내가 작업한 결과물에 대해서 형상 관리가 되었으면 했다. 나중엔 GitOps라는 방식을 알게 되었고 결론적으로 ArgoCD를 도입하게 되었다. 처음엔 ECS로 컨테이너 오케스트레이션 환경을 구성했고 CICD 파이프라인을 구성하다보니 aws-cli를 통해 aws codedeploy 명령어로 CD를 작업하거나 aws ecs update 명령어로 CD를 구성하였다. EKS로 넘어오면서도 처음에는 ECS에서 구축한 것과 비슷한 방식으로 rollouts.. 더보기
쿠버네티스 오브젝트 정리 다른 사람들이 물어봤을때 바로 대답이 나오지 못하는 내 자신을 보고 머릿속에 정리가 되어있지 않다고 판단하여 쿠버네티스에서 자주 사용되는 주요 오브젝트들을 간단히 정리해보려고 한다. 1. Pod(Container Group) 쿠버네티스에서 가장 작은 배포 단위로, 하나 이상의 컨테이너(+사이드카 패턴)을 포함할 수 있다. 보통 하나의 파드를 하나의 컨테이너가 이룰 수 있지만 예를 들어, 애플리케이션을 실행하는 메인 컨테이너와 로그를 수집하는 사이드카 컨테이너가 함께 포함될 수 있다. (Network Namespace & Ports) 하나의 파드에서 컨테이너들은 동일한 네트워크 공간을 공유하고 하나의 IP 주소를 사용한다. 파드의 IP 주소는 파드가 생성될 때 할당되고 파드가 삭제되면 해제된다. 파드 내의.. 더보기
쿠버네티스 아키텍쳐 & 컴포넌트 쿠버네티스의 기본 개념은 desired state(원하는 상태)라고 보면 될 것 같다. 정확히는 원하는 상태, 선언되어 있는 상태에 현재 상태와 비교하고 다르다면 맞추기 위해 계속해서 도전한다.  즉 쿠버테니스는 항상 우리가 선언해놓은, 원하는 상태로 현재 상태를 계속 유지해나가려 한다.쿠버네티스의 구조는 Master(마스터 노드)와 Node(워커노드)라는 구조로 이루어져있다. 크게보면 Master(마스터 노드)는 Controller-Manager, API Server, Scheduler, etcd로 구성되어있으며 Node(워커노드)는 Kubelet, Kube-proxy, Container Runtime, CAdvisor 정도로 구분할 수 있을 것 같다. 구성 컴포넌트를 하나씩 확인해보자.Master(m.. 더보기
쿠버네티스 Operator Pattern Operator는 Kubernetes 클러스터 내 소프트웨어에서 실행하는 공통되고 반복되는 활동을 Kubernetes의 컨셉과 API를 사용해서 구현하고 자동화하였고 이를 Kuberentes Native Application이라고 한다. Operator를 사용하면 Pods, Deployments, Services, ConfigMap 같은 primitives 타입을 쓰지 않고, 필요한 옵션만 지정하는 단일 객체로 애플리케이션을 쓸 수 있다. 정리하자면 쿠버네티스 Operator는 Kubernetes의 확장성과 자동화 기능을 극대화해주는 중요한 구성 요소이다. 운영자의 반복적인 수작업을 자동화하고 복잡한 애플리케이션을 효율적으로 관리할 수 있게 도와준다. Operator는 일반적으로 애플리케이션 라이프사이클.. 더보기
쿠버네티스 환경 JAVA heap 참고 글 정리 1. heap 공간은 컨테이너 메모리에 60~80%를 차지 하도록 설정, 반대로 컨테이너 메모리에 60~80%를 힙사이즈로 주도록 설정Metaspace Memory : -XX:MaxMetaspaceSize 로 구성 가능하고,경험적인 규칙은 메모리 보다 16배 낮은 값으로 제한 하는 것이 좋음.Java Thread, Garbage Collection, Metaspace, Native Memory, Socket buffers 를 위한 Non heap 공간이 필요2. request/limit 설정은 필수!, request / limit memory 는 동일하게 설정하는 것이 좋음(QoS Guaranteed) 3. 초기 힙 크기(-XX:InitialRAMFraction, -XX:InitialRAMPercenta.. 더보기
AWS Opensearch Datastream 및 ISM 이전에 FluentD, Flunt-bit를 활용해 EKS 환경에서 EFK 구조의 로깅 환경을 구축하였다. 인덱스를 날짜 별로 자동 생성되도록 fluentd에 설정하여 생성하였지만 비용과 운영을 효율적으로 관리하기 위해 인덱스를 Ultrawarm, Cold 스토리지에 저장할 필요가 생겼다. 시계열 데이터를 관리하는 일반적인 워크플로에는 롤오버 인덱스 별칭 생성, 쓰기 인덱스 정의, 백업 인덱스에 대한 공통 매핑 및 설정 정의와 같은 여러 단계가 포함되지만 Amazon OpenSearch Service의 데이터 스트림은 이러한 초기 설정 프로세스가 간소화되어있어 편리하게 구축할 수 있었다. Opensearch datastream documenthttps://opensearch.org/docs/latest/d.. 더보기

728x90