** 본 포스팅은 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..
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을 조정하여 수직 스케일링을..
기존 yaml 방식의 '선언적 프로그래밍' 장단점 - k8s manifest, Helm chart, kustomize 등 장점 - 사람이 읽기 쉬움 - 어디서든 사용가능 - 선언적 프로그래밍 형태 - 원하는 상태(Desired state)로 배포 가능 - static 한 파일 명세 단점 - 복잡성에 따라, 다수 환경일 경우 중복 부분 처리 필요(Helm chart, kustomize 등) - 즉, 공통부분에 대한 관리의 어려움이 있으며 별도 툴에 대한 학습 필요 개발자의 요구사항 yaml 방식의 선언적 프로그래밍 방식을 통해 쿠버네티스에 자원을 할당하고 관리하는 방식은 개발자에게 익숙하지 않았다. 즉, 개발자 친화적인 프로그래밍 언어(Go, Java, Python 등), 프레임워크, CLI 등의 형태를 ..
순서 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 클러스터 ..
Kustomize kustomize는 쿠버네티스에서 오브젝트들의 Manifest들을 사용자가 원하는 방식대로 변경해서 쿠버네티스 환경에 배포할 수 있도록 하기 위한 목적으로 사용되는 플러그인이다. 과거에는 바이너리 파일을 다운로드해서 kubectl과 연동했다고 한다. 하지만 쿠버네티스 1.13 버전부터는 kubectl 커맨드의 기본 플러그인으로 자리 잡았다. kustomize가 사용되는 대표적인 예시는 CI/CD 파이프라인 관리이다. (예를 들어, 애플리케이션의 Manifest 파일을 수정하여 GipOps 기반의 변경 사항을 발생시킬 때) 대표적인 기능 4가지 1) 리소스 집합을 구성하고 사용자 정의 - Manifest 파일들을 그룹으로 관리하고 한번에 실행, 삭제 등의 관리 기능 1) 원격에서 kust..
k8s 클러스터 상태 - worker 1, 2로 총 두 개 사용 - worker1 IP: 10.100.0.101 / worker2 IP: 10.100.0.102 - 각 워커에 nginx pod를 deployment controller로 띄운 상태 (label = app: webui) - app: webui label에 대한 NodePort Service 구동 완료 - nginx Pod의 index.html의 컨텐츠를 해당 Pod가 띄워져 있는 노드 번호로 설정한 상태 - 포트 충돌 여지를 줄이기 위해 NodePort definition(yaml)에서 nodePort 키 값 주석처리 - ClusterIP 10.100.100.200 / NodePort 32096 사용 (NodePort는 k8s에서 자동 생성..
CronJob - Deployment와 ReplicaSet의 관계처럼 CronJob에도 Job의 기능이 포함되어 있다. - Deployment가 ReplicaSet을 컨트롤하여 Rolling Update를 지원했던 것처럼 CronJob은 Job을 컨트롤해서 원하는 특정 시간에 Job이 실행될 수 있도록 작업 '예약' 기능을 지원한다. - 예를 들어, 이메일을 주기적으로 보내는 작업, 로그파일을 주기적으로 정리하는 작업, 데이터 백업 작업, 가비지 데이터를 주기적으로 삭제해주는 작업 등 특정 주기를 가지고 반복해서 실행해주는 작업에 대해 CronJob으로 정의할 수 있다. - 애플리케이션이 비정상적으로 동작하여 Pod를 재시작하거나 컨테이너를 재시작하는 것은 Job 컨트롤러 고유의 기능이며 CronJob은..
- Total
- Today
- Yesterday
- 우분투
- go
- GitOps
- Non-Blocking
- helm
- 카프카
- 컨트롤러
- db
- Kubernetes
- RDB
- ubuntu
- golang
- CICD
- kafka
- docker
- ci/cd
- Java
- LFCS
- K8s
- container
- spring
- Stream
- jvm
- 쿠버네티스
- github actions
- argocd
- Linux
- Controller
- 코틀린
- rolling update
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |