반응형

Container Orchestration/Kubernetes 43

Kubernetes Gateway API 완전 정복

OverviewKubernetes는 기본적으로 Ingress 리소스를 통해 L7(HTTP/HTTPS) 트래픽을 처리하지만, 이 방식은 Layer 4(L4) 수준의 트래픽 제어나 멀티 프로토콜, 복잡한 인증 처리 등에서 한계를 가진다.  이를 해결하기 위해 등장한 Kubernetes Gateway API는 L4~L7까지 유연하게 다룰 수 있는 새로운 네트워크 모델이다. Ingress를 단순히 확장한 것이 아닌, 현대 클라우드 네트워크를 위한 진화된 표준이며, 서비스 메시, API Gateway, 로드밸런서 등을 하나의 공통 구조로 통합 관리할 수 있게 해준다.      📅 관련 글2022.08.08 - [Container Orchestration/Kubernetes] - Kubernetes Ingress..

Kubernetes에 static-file-server 생성하기

OverviewKubernetes에 간단하게 static-file-server 생성하는 방법에 대해서 알아본다.         Static File Server 설치static-file-server Github  해당 Github 주소에 들어가서 내용을 읽어보면 Configuration에 Environment Variables, YAML Configuration File,그리고 Deployment 부분에 Without Docker, With Docker 방법이 작성되어 있다. Docker Image가 존재한다면, Kubernetes Pod로 실행하는 것은 크게 어렵지 않다.    Helm Value 작성template은 필수 입니다. template 작성이 어려우시다면 아래의 글을 확인하면 된다.2025..

Kubernetes IPVS vs iptables

OverviewKubernetes Kube-prxoy Component의 주요 개념인 IPVS vs iptables 에 대해서 알아본다.      IPVS 및 iptables의 개념 1️⃣ iptables (IP 테이블 규칙)iptables는 Linux 커널에 내장된 패킷 필터링 및 NAT(네트워크 주소 변환) 프레임워크이다.패킷이 통과해야 하는 체인의 규칙을 정의하고 네트워크 트래픽을 허용, 거부, 전달 또는 수정할지 결정하는 방식으로 작동한다. Kubernetes에서 작동하는 방식Kubernetes는 iptables 를 사용하여 서비스와 Pod 간에 트래픽을 라우팅한다.백엔드 Pod를 순차적으로 선택하여 라운드 로빈 로드 밸런싱을 구현한다.  iptables의 장점안정성: Linux 시스템에서 성숙하..

Helm Base App Chart 생성(With ArgoCD)

Overview이번 글에서는 Helm Chart를 활용해 Base App Chart를 설계하고, 이를 기반으로 다양한 애플리케이션을 ArgoCD를 통해 자동 배포하는 방법을 정리한다. 단일한 Helm Chart 템플릿(Base Template)을 기반으로, 환경(dev1, dev2 등)과 서비스(admin, auth 등)에 따라 개별 values.yaml 파일만 다르게 구성해 애플리케이션을 배포할 수 있는 구조를 설계한다. 이를 통해 공통된 차트 구조를 유지하면서도 확장성과 유지보수성을 높일 수 있으며, ArgoCD ApplicationSet과의 연동을 통해 GitOps 방식으로 다중 환경 및 클러스터에 손쉽게 배포가 가능하다.  글에서는 아래 항목을 실습 중심으로 설명한다.Helm Base App Ch..

Helm Chart 생성 및 패키징 (gh-pages)

Overview이번 글에서는 직접 개발한 Kubernetes Operator(예: helios-lb)를 Helm Chart로 패키징하고, GitHub Pages 기능을 활용해 Helm Chart Repository를 구축 및 배포하는 전 과정을 다룬다. helm create 명령어를 통해 Helm Chart의 기본 구조를 생성하고, CRD, 컨트롤러, RBAC, 서비스 등 필요한 리소스를 templates/에 정의한다. 이후 Helm의 `package, repo index` 명령을 통해 `.tgz` 패키지와 `index.yaml` 을 생성한 후, GitHub의 `gh-pages` 브랜치에 업로드함으로써 Helm Chart를 외부에 서비스할 수 있는 레포지토리를 구축한다. 이 과정을 통해 Helm Char..

Kubernetes Operator(CRD, CR) 생성(With kubebuilder)

Overview이번 글에서는 Kubebuilder를 활용하여 Kubernetes Operator를 개발하는 전반적인 과정을 살펴본다.Kubebuilder는 Kubernetes의 표준 API 패턴을 따르며, CRD 생성부터 컨트롤러 구현, 테스트, 빌드, 배포까지 효율적인 워크플로우를 제공한다.직접 Operator를 만들고 Docker 이미지로 빌드하여 배포하는 방법까지 다루므로, 실제 프로젝트에 적용하기 위한 기반을 마련할 수 있다. k8s-namespace-sync, helios-lb 등 실 사례를 통해 Operator 구조를 이해하고, 마커 기반의 CRD 정의, Makefile을 통한 테스트 및 빌드 자동화 등 실무에 꼭 필요한 요소들도 함께 다뤘다.     📅 관련 글2024.04.15 - [Co..

Kubernetes Operator 및 Custom Resource Definitions(CRDs) 이해하기

OverviewKubernetes Operator와  Custom Resource Definitions (CRDs) 대해서 알아본다.   Kubernetes Operator Kubernetes 생태계에서 Operator는 Kubernetes 애플리케이션을 패키징, 배포, 관리하는 방법이다. Kubernetes 애플리케이션은 Kubernetes에 배포되고 Kubernetes API 및 kubectl 도구를 사용하여 관리된다. Operator는 클러스터 상태를 감시한 다음 필요한 경우 변경을 수행하거나 요청하는 루프인 컨트롤러의 Kubernetes 원칙을 따른다. Operator는 Kubernetes를 확장하여 특정 애플리케이션의 전체 수명주기 관리를 자동화한다. ​ 왜 Operator를 사용해야 할까?Ku..

Kubernetes Headless Service란?

OverviewKubernetes에서 일반적인 Service는 클러스터 내의 파드들 사이에 로드 밸런싱과 가상 IP(ClusterIP)를 제공하는 방식으로 작동한다. 하지만, 데이터베이스나 Stateful 애플리케이션처럼 각 파드에 직접적인 네트워크 접근이 필요한 경우에는 이 방식이 적합하지 않다. 이런 상황에서 사용하는 것이 바로 Headless Service이다. `Headless Service는 clusterIP: None` 으로 설정되어 있으며, DNS를 통해 각 파드의 개별 IP를 직접 노출시켜준다.  이로 인해 클라이언트는 파드 하나하나에 직접 접근할 수 있게 되고, 이는 클러스터링 기반 DB 시스템(Cassandra, MongoDB 등)이나 StatefulSet 환경에서 매우 유용하게 활용된..

Kubernetes Deployment Strategy

OverviewKubernetes Deployment Strategy는 새로운 버전의 애플리케이션을 서비스 중단 없이 안정적으로 배포하기 위한 핵심 메커니즘이다.  기본적으로 Kubernetes는 RollingUpdate 전략을 사용하여 점진적으로 Pod를 교체하지만, 사용자의 요구사항에 따라 다양한 방식의 전략을 선택하거나 커스터마이징할 수 있다.  대표적인 전략은 다음과 같다.RollingUpdate: 기존 Pod를 하나씩 교체하며 가용성을 유지 (기본값)Recreate: 모든 기존 Pod를 제거한 후 새 버전을 일괄 생성 (다운타임 발생)Blue/Green: 별도 환경을 구성하여 스위칭 기반 배포 (빠른 롤백 가능)Canary: 일부 사용자 대상으로 점진적 배포 후 트래픽 확장 (실사용 기반 검증)..

Helm Chart Template 문법

OverviewHelm은 Kubernetes 애플리케이션을 정의하고 배포하는 데 사용되는 패키지 매니저로, Helm Chart를 통해 복잡한 Kubernetes 리소스를 템플릿화할 수 있다. 특히 Helm의 템플릿 문법은 Go 템플릿을 기반으로 하며, 유연한 구성과 재사용성을 제공한다.  이 글에서는 Helm Chart의 템플릿 문법을 중심으로 .`Values, include, define, range, 조건문, toYaml, indent` 등 실무에서 자주 사용하는 문법들을 예시와 함께 정리한다.또한, 실제 배포 환경에서 사용할 수 있는 `Deployment, imagePullSecret, _helpers.tpl` 등도 함께 소개하여, Helm Chart의 효율적인 작성법을 실전과 연결해 학습할 수 있..

반응형