공부
-
[Helm] 토픽 - Label과 Annotation공부/쿠버네티스&헬름 2025. 3. 4. 00:55
다음 조건에 해당하는 메타데이터는 label로 설정해야 합니다.쿠버네티스에서 리소스를 식별하는 데 사용되는 경우시스템을 쿼리할 목적으로 운영자에게 노출하는 것이 유용한 경우예를 들어, helm.sh/chart: NAME-VERSION label을 사용하여 운영자가 특정 차트의 모든 인스턴스를 편리하게 찾을 수 있도록 하는 것이 좋음쿼리에 사용되지 않는 메타데이터는 어노테이션으로 설정해야 합니다. Helm hooks는 항상 어노테이션으로 설정됩니다.label을 사용하여 리소스를 식별하고 쿼리할 수 있도록 하고 쿼리에 사용되지 않는 메타데이터는 어노테이션으로 설정하여 불필요한 label 남용을 방지합니다. 또한 Helm hooks는 어노테이션으로 관리하여 다른 메타데이터와 구분합니다.standard labe..
-
[Helm] 토픽 - 템플릿과 Values.yaml공부/쿠버네티스&헬름 2025. 3. 4. 00:48
Helm Chart 템플릿은 Go 템플릿 언어로 작성되며 Sprig 라이브러리의 다양한 템플릿 함수와 특수 함수들이 추가적으로 제공됩니다.모든 템플릿 파일은 차트의 templates/ 폴더에 저장됩니다. Helm은 차트를 렌더링할 때 이 폴더의 모든 파일을 템플릿 엔진을 통해 처리합니다.템플릿 values 제공 방식은 두가지 방법으로 제공합니다.values.yaml 파일차트 개발자는 values.yaml 파일을 통해 기본값을 제공할 수 있습니다.사용자 정의 values 파일차트 사용자는 사용자 정의 값을 담은 YAML 파일을 제공할 수 있습니다.이 파일은 helm install 명령어를 통해 전달됩니다.사용자 정의 값은 values.yaml 파일의 기본값을 재정의합니다.템플릿 파일템플릿 파일은 Go 템플..
-
[Helm] 토픽 - Chart.yaml공부/쿠버네티스&헬름 2025. 3. 3. 23:56
차트 파일 구조Helm 차트는 특정 구조를 가진 디렉토리 내 파일들의 집합으로 구성됩니다. 이 디렉토리 구조는 Helm이 차트를 올바르게 인식하고 처리하는 데 필수적입니다. 다음은 Helm 차트 디렉토리 구조에 대한 설명입니다.디렉토리 이름은 차트의 이름과 동일해야 합니다. 예를 들어, WordPress 차트는 wordpress/ 디렉토리에 위치합니다. 버전 정보는 디렉토리 이름에 포함되지 않습니다.wordpress/ Chart.yaml # A YAML file containing information about the chart LICENSE # OPTIONAL: A plain text file containing the license for the chart ..
-
[Helm] Helm 설치공부/쿠버네티스&헬름 2025. 3. 3. 23:11
Helm 설치Helm(이하 헬름)을 성공적으로 설치하려면 다음과 같은 전제 조건이 필요합니다.쿠버네티스 클러스터설치를 위해 어떤 보안 구성을 사용할 것인지 결정하기(필요시)헬름 설치 및 구성맥OS 기준으로 설치는 homebrew를 사용하면 간단합니다.$ brew install helmHelm 사용하기주요 개념 3가지Helm은 쿠버네티스 애플리케이션의 패키지 관리 도구로 다음 세 가지 핵심 개념을 중심으로 작동합니다.차트 (Chart)쿠버네티스 애플리케이션을 구성하는 모든 리소스 정의(YAML 파일)를 담고 있는 패키지쿠버네티스에서의 Homebrew 포뮬러, Apt dpkg, YUM RPM 파일과 유사하게 애플리케이션 배포에 필요한 모든 요소를 묶어 제공저장소 (Repository)Helm 차트를 모아두고..
-
[Helm] Helm이란공부/쿠버네티스&헬름 2025. 3. 3. 22:42
Helm이란Helm은 쿠버네티스(Kubernetes) 애플리케이션의 패키지 관리 도구입니다. 복잡한 쿠버네티스 애플리케이션을 쉽게 설치, 업그레이드, 관리할 수 있도록 도와주며, 쿠버네티스 환경에서의 소프트웨어 배포를 간소화합니다.왜 Helm을 써야될까Helm은 쿠버네티스 애플리케이션의 배포와 관리를 단순화하고 효율적으로 만들어주는 강력한 도구이기 때문입니다.Helm을 사용하지 않고도 쿠버네티스의 배포나 관리가 가능하지만 다음과 같이 번거로움이 있습니다.구체적으로는 다음과 같습니다.복잡한 쿠버네티스 애플리케이션 관리 단순화쿠버네티스 애플리케이션은 다양한 리소스(Pod, Service, Deployment 등)로 구성되며, 이들을 개별적으로 관리하는 것은 매우 복잡한데 Helm은 이러한 리소스들을 차트(C..
-
[Kubernetes] 확장 - CustomResourceDefinitions (CRD)공부/쿠버네티스&헬름 2025. 2. 24. 13:15
CustomResourceDefinitions (CRD)CRD는 쿠버네티스 API를 확장하여 사용자 정의 리소스를 정의하는 메커니즘입니다. CRD를 사용하면 사용자는 원하는 종류의 리소스를 정의하고 해당 리소스에 대한 CRUD (Create, Read, Update, Delete) 작업을 수행할 수 있습니다. CRD는 쿠버네티스 API 서버에 등록되어 관리되며 kubectl과 같은 명령행 도구를 사용하여 상호 작용할 수 있습니다.CRD를 사용하는 이유확장성: CRD를 사용하면 쿠버네티스에 필요한 기능을 추가하여 확장할 수 있습니다. 쿠버네티스 자체에는 없는 기능을 CRD를 통해 정의하고 사용할 수 있습니다.유연성: CRD는 사용자가 원하는 종류의 리소스를 자유롭게 정의할 수 있도록 지원합니다. 애플리케이..
-
[Kubernetes] 보안 - Service Account, RBAC공부/쿠버네티스&헬름 2025. 2. 22. 18:15
RBAC쿠버네티스 RBAC(Role-Based Access Control)는 클러스터 내의 리소스에 대한 접근 권한을 관리하는 메커니즘입니다. RBAC를 사용하면 사용자, 그룹 또는 서비스 계정(Service Account)에 특정 역할(Role)을 부여하여 클러스터 리소스에 대한 접근 권한을 제한할 수 있습니다.역할 (Role), 클러스터 역할 (ClusterRole)역할은 특정 네임스페이스 내에서 리소스에 대한 접근 권한을 정의합니다. 예를 들어 특정 네임스페이스의 파드를 읽기 권한을 가진 역할을 정의할 수 있습니다.클러스터 역할은 클러스터 전체 범위의 리소스에 대한 접근 권한을 정의합니다. 예를 들어 모든 네임스페이스의 파드를 읽기 권한을 가진 클러스터 역할을 정의할 수 있습니다.rules 필드를 ..
-
[Kubernetes] 서비스, 로드 밸런스, 네트워킹 - Network Policies공부/쿠버네티스&헬름 2025. 2. 22. 17:06
Kubernetes NetworkPolicy는 클러스터 내 파드 간 또는 파드과 외부 세계 간의 트래픽 흐름을 IP 주소 또는 포트 레벨(OSI 3/4 계층)에서 제어하기 위한 규칙을 정의합니다. NetworkPolicy를 사용하려면 클러스터가 NetworkPolicy 시행을 지원하는 네트워크 플러그인을 사용해야 합니다.핵심은 TCP, UDP, SCTP 프로토콜에 대해 IP 주소 또는 포트 레벨에서 트래픽 흐름을 제어하려면 Kubernetes NetworkPolicy를 고려할 수 있습니다. NetworkPolicy는 애플리케이션 중심의 구조로 파드가 네트워크 "엔터티"(일반적인 "엔드포인트" 및 "서비스"와 같은 Kubernetes 용어의 과용을 피하기 위해 "엔터티"라는 단어를 사용)와 어떻게 통신할 ..
-
[Kubernetes] Pod - 라이프사이클과 컨테이너 프로브공부/쿠버네티스&헬름 2025. 2. 9. 20:08
파드는 정의된 생명주기를 따르며 Pending 단계에서 시작하여 하나 이상의 기본 컨테이너가 정상적으로 시작되면 Running 단계를 거쳐 파드 내의 컨테이너 중 하나라도 실패로 종료되면 Succeeded 또는 Failed 단계 중 하나를 거칩니다.개별 애플리케이션 컨테이너와 마찬가지로 파드는 비교적 일시적인(내구성이 없는) 엔터티로 간주됩니다. 파드는 생성되고 고유 ID(UID)가 할당되며 종료(재시작 정책에 따름) 또는 삭제될 때까지 노드에서 실행되도록 예약됩니다. 만약 노드가 죽으면 해당 노드에서 실행 중이거나 실행 예정인 파드는 삭제 대상으로 표시됩니다. 컨트롤 플레인은 시간 초과 후 파드를 제거 대상으로 표시합니다.파드 수명파드는 수명 주기 동안 단 한 번만 스케줄링됩니다. 특정 노드에 파드를 ..
-
[Kubernetes] 구성 - 노드 구성 및 리소스 관리공부/쿠버네티스&헬름 2025. 2. 6. 00:20
Cordon쿠버네티스에서 Cordon은 특정 노드에 새로운 파드가 스케줄되지 않도록 하는 기능입니다. 노드를 유지보수하거나 문제를 해결하기 전에 해당 노드에서 실행 중인 파드들을 다른 노드로 안전하게 이동시키기 위해 사용됩니다.작동 방식Cordon 명령을 실행하면 해당 노드의 스케줄링 기능이 비활성화됩니다. 즉, 쿠버네티스 스케줄러는 Cordon된 노드에 새로운 파드를 할당하지 않습니다. 또한 Cordon은 이미 실행 중인 파드에는 영향을 주지 않습니다. 파드들은 계속해서 실행되지만 새로운 파드는 해당 노드에 생성되지 않습니다.사용 시나리오노드 유지보수: 하드웨어 업그레이드, OS 패치, 커널 업데이트 등 노드 유지보수를 수행하기 전에 Cordon을 사용하여 새로운 파드가 해당 노드에 배포되는 것을 방지..