변경 배경기존 회사에서는 인프라 환경용 Application들을 모두 단일 배포로 묶어서 관리하고 있었습니다.또한 멀티 클러스터 환경임에도 불구하고 각 클러스터마다 별도의 Argo CD 인스턴스를 운영했기 때문에,환경 관리와 배포 작업이 반복되고, 변경 사항을 모든 클러스터에 동일하게 적용하는 데 많은 시간이 소요되었습니다.이러한 구조는 다음과 같은 불편함을 만들었습니다.동일한 인프라 리소스를 클러스터별로 반복 등록 및 배포공통 구성 버전 관리가 어렵고, 환경별 차이로 인한 누락 발생신규 클러스터 추가 시 배포 작업량이 기하급수적으로 증가해결 방향운영 효율성을 높이기 위해 개발자가 사용하는 Argo CD는 그대로 유지하면서,인프라 전용 Argo CD를 별도로 구축하여 모든 클러스터를 하나로 연결하는 방식..
Apache Kafka 4.0 버전부터는 클라우드 네이티브 환경 최적화를 주요 목표로 하고 있습니다. 가장 큰 변화는 ZooKeeper 의존성을 완전히 제거하고 KRaft(Kafka Raft) 모드로 전환하는 것입니다.이 글에서는 기존 ZooKeeper 기반 아키텍처와 KRaft 아키텍처의 차이점, 장점, 그리고 전환 과정에서 고려해야 할 점들을 정리해 보겠습니다.---1. 기존 ZooKeeper 기반 아키텍처의 한계Kafka는 오랫동안 클러스터 메타데이터 관리를 위해 외부 시스템인 ZooKeeper에 의존해왔습니다. #### 역할- ZooKeeper: 모든 메타데이터를 저장하고 관리하는 중앙 시스템- Kafka 브로커 중 하나가 컨트롤러로 선출되어 ZooKeeper와 통신, 메타데이터 전파#### 한..
대규모 조직이나 여러 환경(Dev/Prod)을 운영하는 경우, 각각의 Kubernetes 클러스터에 Argo CD를 설치하는 것은 관리 포인트가 많아지고 운영이 복잡해질 수 있습니다.이 글에서는 하나의 중앙 Argo CD 인스턴스로 여러 Kubernetes 클러스터를 관리하는 Multi-Cluster GitOps 환경 구성 방법을 소개합니다.목적Infra 전용 Argo CD 인스턴스를 통해 여러 환경(EKS Dev/Prod 등)의 리소스를 통합 관리Argo CD의 cluster add 기능을 활용해 멀티 클러스터로 애플리케이션 배포동일한 GitOps Workflow를 모든 클러스터에 일관성 있게 적용ArgoCD Multi-Cluster Setting1. 네트워크 연결 확인멀티 클러스터 구성을 위해서는 A..
Argocd란?ArgoCD는 Kubernetes를 위한 GitOps 기반의 CD 도구 입니다. Git 저장소를 Source 저장소로 담고, ArgoCD를 통해 Kubernetes 리소스를 클러스터에 자동으로 배포하고 동기화합니다.Keycloak + Argocd 연동ArgoCD는 기본적으로 여러 인증 방식을 지원하며, 그중 OIDC(OpenID Connect)를 통해 외부 IdP(Keycloak 포함)와 쉽게 통합할 수 있습니다. 이 글에서는 Keycloak을 ArgoCD의 인증 공급자로 연동하는 방법을 알아보고자 합니다.연동 구성 개요Keycloak에서 ArgoCD용 클라이언트(Client) 생성Keycloak Realm 설정 (scope, mapper 포함)ArgoCD에 OIDC 설정 적용 (argoc..
Clickhouse https://github.com/clickhouse/clickhouse GitHub - ClickHouse/ClickHouse: ClickHouse® is a free analytics DBMS for big data ClickHouse® is a free analytics DBMS for big data. Contribute to ClickHouse/ClickHouse development by creating an account on GitHub. github.com 아래 내용글들은 kakaoif2020 에서 소개된 내용을 정리한것입니다. https://tv.kakao.com/channel/3693125/cliplink/414129353 clickhouse란 - Distribut..
RUBY RVM 으로 버전별 설치가 가능합니다. 1. 필수 패키지 설치 yum install curl gcc gcc-c++, readline-devel, zlib-devel, libyaml-devel, libffi-devel, openssl-devel, autoconf, automake, libtool, bison 2. RVM 설치 - RVM 설치 시, RUBY 최신버전도 같이 설치됩니다. curl -L https://get.rvm.io | bash -s stable --ruby source /usr/local/rvm/scripts/rvm rvm list =* ruby-3.0.0 [ x86_64 ] # => - current # =* - current && default # * - default 참고 더..
롤링 배포(Rolling Deployment) 무중단 배포의 가장 기본적인 방식 사용 중인 인스턴스 내에서 새 버전을 점진적으로 교체하는 방식 서비스 중인 인스턴스 하나를 로드밸런서에서 제거한 뒤, 새 버전을 배포 후 다시 라우팅하도록 하는 과정을 반복하여 모든 인스턴스에 새 버전의 애플리케이션을 배포 인스턴스마다 차례로 배포를 진행하기 때문에 상황에 따라 손쉽게 롤백이 가능한 장점 새 버전을 배포할 때 로드 밸런싱에 연결된 인스턴스 수가 감소하기 때문에 서비스 처리 용량을 고려해야 함 또한 서버가 여러대일 경우 배포가 진행되는 동안 구버전과 신버전이 공존하기 때문에 호환성 문제가 발생할 수 있음 블루-그린 배포(Blue-Green Deployment) 블루를 구버전, 그린을 신버전으로 지칭 신규 서버가..
nvm을 사용하는 이유 ? 기존에 nodejs를 설치하게 되면, 구버전대가 설치가 됨. 최신버전으로 설치하기 위함도 있고, 프로젝트가 여러개일 경우, 여러개의 NODEJS를 사용하기 위함. nvm 설치 방법 wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash vi .bashrc export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_complet..
pip 버전을 업그레이드를 진행하려고 했으나, 에러메시지가 뜨면서 버전업이 진행이 되지 않았습니다. [문제 에러코드] pip install --upgrade pip Cache entry deserialization failed, entry ignored Collecting pip Downloading https://files.pythonhosted.org/packages/f8/08/7f92782ff571c7c7cb6c5eeb8ebbb1f68cb02bdb24e55c5de4dd9ce98bc3/pip-22.3.tar.gz (2.1MB) 100% |████████████████████████████████| 2.1MB 498kB/s Complete output from command python setup.py..
PYTHON으로 패키지를 설치중, 아래와 같은 에러가 발생하였습니다. File "/root/.pyenv/versions/3.5.3/lib/python3.5/zipfile.py", line 338, in __init__ raise ValueError('ZIP does not support timestamps before 1980') ValueError: ZIP does not support timestamps before 1980 현재 설치하고자 하는 패키지를 확인해보니, 파일의 시간대가 전부 1970년대로 변경이 되어있었습니다. # ls -al total 224 drwxr-xr-x 6 1001 121 4096 Oct 21 08:38 . drwxr-xr-x 9 root root 4096 Oct 21 08:..