본문 바로가기

Container/Kubernetes

[K8S] Secret ✔️ ConfigMap: 컨테이너 구성 정보를 한 곳에 모아서 관리 ✔️ Secret: 컨테이너가 사용하는 민감한 데이터(ex: password, auth token, ssh key)와 같은 중요한 정보를 안전하게 저장하기 위한 리소스. 애플리케이션 코드와 민감한 데이터를 분리하고, base64로 인코딩하여 보안을 강화할 수 있다. Secrets의 주요 특징보안 데이터 저장: 비밀번호, API 토큰, SSH 키와 같은 민감한 데이터를 저장하고 관리즉, 민감하지 않은 일반 설정파일은 configMap을 사용하고, 민감한 데이터는 secret을 사용한다. 민감한 데이터를 저장할 때 Encryption at Rest를 활성화 권장 Base64 인코딩: 데이터는 Base64로 인코딩되어 저장된다. ( base6.. 더보기
[K8S] Canary Deployment 파드 배포하는 방법 블루 그린 업데이트 카나리 업데이트 롤링 업데이트 : 서비스 중단 없이 하나씩 업데이트 Canary 배포 기존 버전을 유지한 채로 일부 버전만 신규 버전으로 올려서 신규 버전에 버그나 이상이 없는 지 확인. 레이블을 이용한 카나리 배포 # 블루 생성 [master ~]$cat mainui-stable.yaml apiVersion: apps/v1 kind: Deployment metadata: name: mainui-stable spec: replicas: 2 selector: matchLabels: app: mainui version: stable template: metadata: labels: app: mainui version: stable spec: containers: - n.. 더보기
[K8S] Annotation # Annotation Label과 동일하게 key-value를 통해 리소스의 특성 기록 kubernetes에게 특정 정보 전달할 용도로 사용 예를 들어 Deployment의 Rolling update 정보 기록 관리를 위해 필요한 정보를 기록할 용도로 사용 릴리즈, 로깅, 모니터링에 필요한 정보들을 기록 [master ~]$cat annotation.yaml apiVersion: v1 kind: Pod metadata: name: pod-annotation annotations: # name과 같은 라인 builder: "Soyun Yoon (soyun3963@gmail.com)" buildDate: "20240320" imageRegistry: https://hub.docker.com/ spec: c.. 더보기
[K8S] Node Label & Selector Label & SelectorKubernetes에서 리소스를 그룹화하고 필터링하는 데 사용되는 주요 메커니즘Label은 리소스에 부여된 정보이며, Selector는 특정 Label을 가진 리소스를 선택한다.특정 리소스에 대해 원하는 작업(트래픽 전달, 로깅, 모니터링 등)을 효율적으로 수행 LabelKubernetes 리소스에 추가할 수 있는 키-값 쌍으로, 리소스에 대한 메타데이터를 제공각 리소스에 여러 개의 라벨을 지정 가능노드를 선택해서 파드를 배치할 수 있다. 👉nodeSelector 사용$ kubectl label nodes =$ kubectl label nodes node01 size=Large # node01이 가진 label 확인하기$ kubectl describe node node01.. 더보기
[K8S] 쿠버네티스 레이블 https://kubernetes.io/ko/docs/concepts/overview/working-with-objects/labels/ 레이블과 셀렉터 레이블 은 파드와 같은 오브젝트에 첨부된 키와 값의 쌍이다. 레이블은 오브젝트의 특성을 식별하는 데 사용되어 사용자에게 중요하지만, 코어 시스템에 직접적인 의미는 없다. 레이블로 오브 kubernetes.io Label Node를 포함하여 Pod, deployment 등 모든 리소스에 할당 리소스의 특성을 분류하고, Selector를 이용해서 선택 오브젝트에 첨부된 key-value 한 쌍으로 적용 오브젝트의 특성을 식별하는 데 사용 레이블로 오브젝트의 하위 집합을 선택하고, 구성하는데 사용 레이블은 오브젝트를 생성할 때에 붙이거나 생성 이후에 붙이거나.. 더보기
[K8S] Ingress 및 Ingress Controller IngressIngress는 클러스터 외부에서 내부 서비스로 들어오는 HTTP/HTTPS 트래픽을 관리하는 리소스이다.단순히 외부 요청을 내부 서비스로 전달하는 것 뿐 아니라, 도메인(URL) 기반 라우팅, SSL, 리버스 프록시 기능 등을 제공한다.👉 서비스들에 대한 단일 진입점을 만들어 내부의 서비스를 외부에서 접속 가능하도록 해준다.L7 스위치 역할을 논리적으로 수행 (Application LB, ALB)클러스터로 접근하는 URL 별로 다른 서비스에 트래픽을 분산Ingress 기능Service에 외부 URL 제공트래픽을 로드밸런싱SSL 인증서 처리Virtual Hosting 지 Ingress를 사용하면,LoadBalancer를 공유하여 비용 절감이 가능하며, TLS(SSL) 인증서 관리,  트래픽.. 더보기
[K8S] Service Kubernetes의 Service는 클러스터 내에서 실행 중인 Pod 간의 네트워크 통신을 안정적으로 관리하고, 외부 클라이언트가 파드에 접근할 수 있도록 하는 추상화된 네트워크 리소스이다.Service는 파드의 동적인 IP 주소 문제를 해결하고, 여러 Pod에 트래픽을 분산(로드 밸런싱)시키는 역할을 한다. Service는 클러스터 전체에 걸쳐서 동작하기 때문에  클러스터 내의 모든 Pod에 access할 수 있도록 해준다.   Service의 주요 역할파드 간 통신 안정화: Service는 고정된 이름과 IP 주소를 제공하여 파드의 네트워크 위치 변화를 추상화한다.파드의 IP 주소는 재시작 시 변경될 수 있다.로드 밸런싱: 여러 복제본(replica) 파드에 트래픽을 균등하게 분산한다.외부 트래픽 .. 더보기
[K8S] Cronjob Controller Cronjob Controller ? 사용자가 원하는 시간에 Job 실행 예약 지원 Cronjob 안에 Job 컨트롤 기능 포함되어 있다. job controller로 실행할 Application pod를 주기적으로 반복해서 실행 Linux의 Cronjob의 스케줄링 기능을 Job Contoller에 추가한 API. 다음과 같은 반복해서 실행해야하는 Job을 운영할 때 사용 Data Backup Send email Cleaning tasks Cronjob Schedule: "0 3 1 * *" Minutes Hours Day of the month Month Day of the week (0 ~ 6) -> JobTemplate 안의 Spec은 완전히 동일한 것 알 수 있음 [master ~]$ cat >.. 더보기