** 본 포스팅은 241110에 업데이트되었습니다 ** minikube란로컬 환경에서 학습용으로 쿠버네티스를 활용할 수 있는 경량화된 쿠버네티스 minikube 설치$ brew install minikube k8s 클러스터 로컬 구성$ minikube start --driver docker - MacOS 15.1 환경에서 minikube 1.34 버전 설치- 위 명령 수행 시 바로 쿠버네티스 클러스터가 구성된다 k8s config 파일 확인$ cat ~/.kube/config - 실제 k8s 설정 파일과 동일하게 k8s config 파일이 구성된다- current-context 환경은 minikube이다 - Mac 환경에 위와 같이 k8s config 파일 및 CA 인증서 파일이 있기 때문에 Ma..
controlplane을 구성하는 Pod IP 확인 현재 클러스터의 Pod CIDR은 10.244.0.0/16로 설정되어 있으며 호스트 CIDR은 172.31.50.113/20로 설정되어 있는 상태이다. 하지만 controlplane을 구성하는 Pod IP를 확인한 결과 kube api server를 비롯한 각종 Pod는 CNI 망에 속하지 않는 것을 볼 수 있다. cf. Pod CIDR 확인하기 k describe po -n kube-system | grep -i ip API server, kube-proxy와 같은 Master Node의 컴포넌트들은 CNI 망에 속하지 않고 호스트 네트워크 영역을 따른다.(모든 Master Node 컴포넌트가 그러한 것은 아님) 즉, 컨테이너(Pod)로 띄워지더라도 ..
Horizontal Pod Autoscaler(HPA) 및 Vertical Pod Autoscaler(VPA) [Horizontal Pod Autoscaler (HPA)] HPA는 Kubernetes에서 가장 일반적으로 사용되는 오토 스케일링 기술로 애플리케이션의 수평적인 replicas 수를 동적으로 조정하여 애플리케이션의 부하에 따라 자동으로 조정하는 기능을 제공한다. HPA는 CPU 사용률, 메모리 사용률 또는 사용자 정의 지표를 기반으로 Pod의 replicas 수를 조정한다. [Vertical Pod Autoscaler (VPA)] HPA는 Pod의 replicas 수를 조정하여 가용 자원의 사용을 최적화하지만, VPA는 개별 Pod의 resources, request을 조정하여 수직 스케일링을..
고루틴 - 고루틴은 동시성(Concurrency)을 지원한다. 즉, 코어에서 특정 작업을 수행 중에 멈추고 다른 작업을 수행할 수 있다. - 또한 여러 코어에서 동시에 여러 작업들을 수행하는 병렬성(Parallelism)도 지원한다. - Concurrency 기반으로 실행될지, Parallelism 기반으로 실행될지는 Go 및 OS 내부적으로 처리되기 때문에 개발자가 직접 관여하지 않아도 된다. - 고루틴이란 Go에서 동시에 실행되는 작업들을 의미한다. 다른 언어에서의 쓰레드와 비슷한 개념이지만 다른 언어의 쓰레드보다 메모리를 더 적게 사용하여 성능상 이점이 있다고 한다. - 고루틴은 사용하기에 쉽다. 함수 또는 메소드 호출 시 앞에 go 키워드만 붙여주면 된다. - 모든 Go 프로세스의 main 함수는..
기존 yaml 방식의 '선언적 프로그래밍' 장단점 - k8s manifest, Helm chart, kustomize 등 장점 - 사람이 읽기 쉬움 - 어디서든 사용가능 - 선언적 프로그래밍 형태 - 원하는 상태(Desired state)로 배포 가능 - static 한 파일 명세 단점 - 복잡성에 따라, 다수 환경일 경우 중복 부분 처리 필요(Helm chart, kustomize 등) - 즉, 공통부분에 대한 관리의 어려움이 있으며 별도 툴에 대한 학습 필요 개발자의 요구사항 yaml 방식의 선언적 프로그래밍 방식을 통해 쿠버네티스에 자원을 할당하고 관리하는 방식은 개발자에게 익숙하지 않았다. 즉, 개발자 친화적인 프로그래밍 언어(Go, Java, Python 등), 프레임워크, CLI 등의 형태를 ..
이전 포스팅에서는 ArgoCD와 Argo Rollout 컨트롤러를 통한 CD 환경을 구축했다. 이번 포스팅에서는 GitOps 상에서 CI 툴인 Jenkins가 Rollout Manifest 파일을 변경시킴으로써 CD 과정이 자동으로 트리거 되는 시나리오를 구축한다. 최종 GitOps 아키텍처 1) 사용자가 Git에 소스코드를 커밋/푸시 2) Jenkins가 커밋 감지 및 Jenkins Pipeline 실행 2-1) gradle 등의 빌드 툴로 빌드 2-2) 컨테이너 이미지 빌드 2-3) 컨테이너 레지스트리 푸시 (신규 태그 생성) 2-4) Git의 Manifest 레포지토리에 Rollout Manifest 수정(보통 컨테이너 이미지 tag 수정) 3) ArgoCD가 Git의 Rollout Manifest..
순서 1. Argo Rollout이란 2. Argo Rollout 플러그인 설치 1) Argo Rollout 설치 스크립트 작성 2) 실행 확인 3. Argo Rollout으로 배포 1) Rollout(Canary) 배포 설정 2) Rollout Object 배포 및 확인 3) 애플리케이션 신규 배포 및 Canary 업데이트 확인 Argo Rollout이란 Argo Rollout은 Canary, Blue-Grean와 같은 고급 배포 기능을 위한 Argo의 CRD 및 Kubernetes 컨트롤러이다. 이를 통해 Kubernetes에선 제공되지 않는 다양한 배포 기법을 적용하고 자동화할 수 있다. Canary 업데이트란 cf. Canary 배포에 대한 포스팅: https://jh-labs.tistory.co..
이번 포스팅에서는 ArgoCD 기반의 GitOps 환경 구축 과정을 정리한다. GitOps 구축 순서 1. ArgoCD 환경 구축 0) 사전준비: k8s 클러스터 외부에서 ArgoCD 접속을 위해 사용할 NodePort 포트포워딩(또는 LoadBalancer 사용) 1) ArgoCD Manifest 파일 작성 (kustomize 기반) 2) ArgoCD 설치 쉘 스크립트 파일 작성 3) ArgoCD Web UI접속 및 로그인 2. Git 연동 1) SSH Key 발급 2) GitHub에 등록 3) ArgoCD에 등록 3. k8s 클러스터에 애플리케이션 Manifest 배포 1) k8s 클러스터에 애플리케이션 배포 2) GitOps 및 Desired State 검증 ArgoCD 구성 환경 k8s 클러스터 ..
- Total
- Today
- Yesterday
- ci/cd
- RDB
- db
- Linux
- Stream
- github actions
- Java
- 우분투
- 컨트롤러
- argocd
- Controller
- CICD
- rolling update
- container
- 쿠버네티스
- 코틀린
- GitOps
- K8s
- Non-Blocking
- spring
- jvm
- Kubernetes
- LFCS
- kafka
- golang
- docker
- 카프카
- ubuntu
- go
- helm
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |