38

[CKS] Kubernetes에서의 Public Key Infrastructure 구조 (PKI) 이해하기

IntroductionPublic Key 기반 구조(PKI)는 쿠버네티스에서 중요한 역할을 하며, 클러스터 내 다양한 구성 요소 간의 안전한 통신을 보장한다.  PKI의 핵심에는 인증 기관(CA)이 있으며, 이는 인증서를 발급하고 검증하는 기관이다. 이러한 인증서는 쿠버네티스 구성 요소가 서로를 인증하고 검증할 수 있도록 하여 클러스터 전반에 걸쳐 안전한 상호 작용을 보장하게 한다. CA (Certificate Authority) 의 역할인증서 발급: CA는 클러스터 내 다양한 구성 요소(APIServer, kubelet, 스케줄러 등)에게 인증서를 발급한다. 인증서 서명: CA는 모든 인증서에 서명하여, 통신 당사자의 신뢰성을 보장하는 신뢰 체인을 형성한다. 검증: 쿠버네티스 구성 요소는 CA를 사용하..

DevOps/k8s 2024.06.26

[CKS] Google Cloud로 Master Node와 Worker Node 구성하는 방법

Introduction Google Cloud Platform(GCP)에서 Kubernetes 클러스터를 구성하는 방법에 대해 알아보겠다.두 개의 가상 머신(VM)을 사용하여 하나의 Master Node와 하나의 Worker Node를 구성할 것이다.   Kubernetes Cluster 사양클러스터는 두 개의 가상 클러스터로만 구성된다.첫 번째 VM: cks-master (Master Node)OS: Ubuntu 20.04 LTSDISK: 50GBCPU: 2RAM: 4GB두 번째 VM: cks-worker (Worker Node)OS: Ubuntu 20.04 LTSDISK: 50GBCPU: 2RAM: 4GB클러스터 실행 스크립트install_master.sh는 마스터 노드에서 실행install_work..

DevOps/k8s 2024.06.25

[CKS] 이론편 : Kubernete Security 기본 개념

CKS 를 따는 이유 8월/9월 중으로 CKS 자격증을 취득하는 것을 목표로 하고 있다. 현재 CKA(Certified Kubernetes Administrator) 자격증은 보유하고 있지만, CKA를 준비하면서 보안과 네트워크 관련 지식이 부족하다고 느꼈다. 현업에서 관리형 쿠버네티스 서비스(EKS, GKE, AKS 등등.. 쿠버모니터링 개발팀에 있었기 때문...하하) 를 많이 다뤄봤지만, On-Premise 환경의 쿠버네티스 실무 경험과 배경 지식이 매우 부족한 상태입니다. 특히, Control Plane 관련 공부가 시급하다고 느껴 CKS를 취득하는 동시에 보안과 네트워크를 함께 공부하려고 한다. 준비 순서는 이론 -> 실습 -> 실제 기출 문제 풀이 순으로 진행하려고 한다.  강의는 아래 유튜브 ..

DevOps/k8s 2024.06.19

[K8s] 쿠버네티스에서의 헬스체크 LivenessProbe, ReadnessProbe

Introduction 시스템은 관리하기 어려울 수 있다. 가장 큰 이유는 시스템이 작동하려면 모두 작동해야하는 움직이는 부품이 많기 때문이다. 작은 부품이 파손되면 시스템은 이를 감지하고 우회하여 수리해야한다. 그리고 이 모든 작업이 자동으로 수행되어야합니다. 이 글에서는 쿠버네티스에서의 헬스체크 기능인 Readness와 Liveness를 설정하는 방법에 대해서 알아보겠다.  헬스체크는 인스턴스가 작동하는지 여부를 시스템에 알리는 간단한 방법이다. 인스턴스가 작동하지않으면 다른 서비스에서 해당 인스턴스에 엑세스하거나 요청을 보내면 안된다. 대신 나중에 준비되거나 다시 시도되는 앱의 다른 인스턴스로 요청을 보내야한다.  또한 시스템은 앱을 정상 상태로 되돌려야한다. 기본적으로 쿠버네티스는 Pod내의 모든..

DevOps/k8s 2024.06.18

[K8s] AWS Karpenter를 통해 EKS 클러스터 효율적으로 관리하기 2편_워크로드 배포

5단계 : 워크로드 배포  AWS Karpenter로 최적화된 Kubernetes 클러스터에 애플리케이션 워크로드를 배포하려면 리소스를 효율적으로 활용할 수 있도록 세심한 계획이 필요합니다. 이 섹션에서는 Karpenter의 동적 프로비저닝 기능을 최대한 활용하기 위한 워크로드 배포 전략에 대해 설명합니다.워크로드 요구사항 이해하기애플리케이션을 배포하기 전에 리소스 요구사항을 평가하십시오. 이를 통해 Karpenter가 리소스를 보다 효과적으로 프로비저닝할 수 있습니다.   - CPU / Memory Request: Deployment yaml 파일에 적절한 CPU / Memory  Request(요청 값)을 정의하여 Karpenter가 아래와 같은 요구사항을  충족할 수 있는 Node로 Provisio..

DevOps/k8s 2024.06.14

[K8s] AWS Karpenter를 통해 EKS 클러스터 효율적으로 관리하기 1편_기본 구성

Introduction AWS Karpenter는 resource 할당을 최적화하고 비용을 절감할 수 있는 방법을 제공하는 매우 유연하고 확장 가능한 Auto Scaling 솔루션으로, 쿠버네티스 기본 기능인 Auto Scaler 와 비교해 뛰어난 장점을 지니고 있습니다. 오늘은 AWS Karpenter를 소개하고, 쿠버네티스 기본 기능인 Auto Scaler와 비교한 장점들을 설명하고, Kubernetes 클러스터 내에서 실제 설정 과정을 알아보겠습니다.  What is AWS Karpenter ?AWS Karpenter는 현재의 워크로드를 기반으로 클러스터 내 컴퓨팅 자원의 수량과 종류를 자동으로 조정하도록 설계되었습니다. 단순한 Node Scaling을 넘어, 필요에 따라  Application에 ..

DevOps/k8s 2024.06.14

[docker] Docker Swarm을 활용한 NFS Volume 생성과 서비스 배포

IntroductionDocker Swarm을 활용하여 NFS(Network File System) Volume을 생성하고 서비스를 배포하는 방법에 대해 알아보겠습니다. 이를 통해 여러 Docker 노드 간에 데이터를 공유하고 분산된 서비스를 운영할 수 있습니다.NFS란?NFS(Network File System)은 리눅스와 유닉스 계열 운영체제에서 사용되는 분산 파일 시스템입니다.파일 및 디렉토리를 네트워크를 통해 다른 컴퓨터에 공유할 수 있게 해주는 프로토콜입니다.Docker Swarm 이란?Docker Swarm은 Docker 컨테이너 오케스트레이션 도구 중 하나로,여러 Docker 호스트를 하나의 가상화된 호스트로 관리하는 기능을 제공합니다.Swarm을 통해 여러 노드에 걸쳐 컨테이너를 분산 배치..

DevOps/docker 2024.02.01

Kubernetes 환경에 Prometheus와 Grafana를 설치하고 통합하기

Introduction 안녕하세요. 오늘은 Kubernetes 환경에 Prometheus 및 Grafana를 설치하고 통합하는 단계를 자세히 안내하겠습니다. 이를 통해 클러스터의 모니터링 및 시각화를 손쉽게 구성할 수 있습니다. Prometheus 설치 Prometheus를 설치하기 위해 Helm 차트를 사용합니다. #Helm Repo 추가 helm repo add prometheus-community #Helm을 사용하여 프로메테우스 설치 helm install prometheus prometheus-community/prometheus Pod 확인 설치가 완료되면 다음 명령어를 사용하여 프로메테우스 관련 Pod가 정상적으로 배포되었는지 확인합니다. kubectl get pods Prometheus 서..

DevOps/k8s 2024.01.24

[K8s] JSONPATH 활용하여 원하는 데이터 확인하기

JSONPath란? JSONPath는 JSON 데이터 구조 내에서 원하는 데이터를 식별하기 위한 경로 표현 방법입니다. 주로 Kubernetes나 다양한 API 응답에서 원하는 데이터를 추출하거나 쿼리하는 데 사용됩니다. JSONPath 패턴 $.store.book[0].title JSON 데이터 구조에서 store 객체 안의 book 배열의 첫 번째 요소의 title 값에 대한 경로 $..author 모든 author 키에 해당하는 값 반환 $.store.* store 객체 안의 모든 키와 값 반환 $.store..price store 객체 내부의 모든 price 키에 해당하는 값 반환 $.store.book[?(@.price < 10)] : **price**가 10 미만인 책에 해당하는 값들을 반환합..

DevOps/k8s 2023.11.16

[K8s]LivenessProbe 실습할 때 생길 수 있는 트러블 슈팅

간단한 Flask 어플리케이션을 Docker 이미지로 만들고, 이를 Kubernetes에서 실행하면서 LivenessProbe를 설정하는 예제입니다. Flask 어플리케이션 코드 (app.py): pythonCopy code from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return "Hello, Kubernetes!" if __name__ == '__main__': app.run(host='0.0.0.0', port=8080) Docker 이미지 빌드 (Dockerfile): DockerfileCopy code FROM python:3.9-slim WORKDIR /app COPY requirements.txt /ap..

DevOps/k8s 2023.07.27