연재 시리즈 165

테라폼으로 EKS만들기 프로젝트 3-1편 - helloworld

이 글은 테라폼을 어떻게 실행하는지 체험합니다. 영상: https://youtu.be/-1OQ_lb3x0k 1. 예제코드 다운로드 예제 코드는 git repo에 공개되어 있습니다. helloworld 폴더가 이번 챕터 예제 코드입니다. git clone https://github.com/choisungwook/terraform_practice.git example cd example cd helloworld 2. 테라폼 초기화 테라폼 코드를 실행하기 위해 초기화 과정이 필요합니다. 초기화 과정은 테라폼 코드가 사용하는 모듈을 다운로드 받습니다. terraform init 3. 테라폼 실행결과 미리보기 테라폼 코드가 실행되면 어떻게 대상에 적용되는지 예상결과를 볼 수 있습니다. terraform plan명..

연재 시리즈 2023.06.18

테라폼으로 EKS만들기 프로젝트 2편 - 테라폼과 코드에디터 설치

이 글은 테라폼 설치화 테라폼 코드 작성을 위한 코드 편집기 설치 과정을 설명합니다. 1. 테라폼 설치 테라폼은 윈도우, 리눅스, 맥에서 사용가능합니다. 이 글은 윈도우 운영체제 WSL ubuntu 20.04LTS에서 테라폼 설치 방법을 설명합니다. 그러므로 WSL ubuntu 20.04LTS가 이미 설치되어 있어야 합니다. 테라폼 다운로드 페이지를 엽니다. [Linux -> Ubuntu/Debian]메뉴를 클릭하고 다운로드 명령어를 복사합니다. WSL리눅스 쉘에서 다운로드 명령어를 실행합니다. 정상적으로 설치되면 terraform 명령어를 실행할 수 있습니다. 테라폼 버전은 아래 명령어로 확인합니다. 23년 6월 기준으로 v.1.5.0이 최신버전입니다. terraform -version 2. 코드에디터..

연재 시리즈 2023.06.18

테라폼으로 EKS만들기 프로젝트 1편 - 개요

EKS스터디가 끝나고 EKS 템플릿을 만드는게 좋을 것 같다고 생각했습니다. 그래서 EKS스터디에서 진행하지 못했던 테라폼을 병행해서 EKS템플릿을 만들기로 생각했습니다. 목표 회사 팀원들도 같이 따라갈 수 있도록 문서작성과 예제생성 테라폼으로 EKS배포 테라폼으로 argocd배포(변경될 수 있음) argocd를 사용하여 bootstrap 쿠버네티스 오픈소스 배포

연재 시리즈 2023.06.18

EKS 스터디 - 7주차 flux 예제

이 글은 flux가 무엇이고 간단한 예제를 살펴봅니다. 예제를 쉽게 따라하기 위해 모든 예제는 flux CLI를 사용합니다. flux란? flux는 쿠버네티스를 위한 gitops 도구입니다. flux는 git에 있는 쿠버네티스를 manifest를 읽고, 쿠버네티스에 manifest를 배포합니다. flux와 argocd 비교 flux는 argocd와 같은 역할을 하고 있어 비교대상으로 자주 언급됩니다. flux를 잠깐 써본 경험으로, flux는 argocd에 비해 kustomize에 매우 특화된 도구로 느꼈습니다. argocd는 kustomize를 사용할 때 디폴트 설정이 부족하기 때문에, argocd configmap에서 kustomize옵션을 한땀한땀 설정해야 합니다. 반면에 flux는 바로 kusto..

연재 시리즈 2023.06.04

EKS 스터디 - 6주차 2편 - EKS pod가 IMDS API를 악용하는 시나리오

이 글은 pod가 IMDS API를 사용하여 AWS 리소스를 제어하는 공격 시나리오를 설명합니다. IMDS API란? IMDS API(Instance Metadata Service)는 EC2 메타데이터를 조회하는 API입니다. EC2인스턴스에서 IMDS API를 호출할 수 있습니다. EKS 워커노드를 EC2인스턴스로 사용하면, pod또한 IMDS API를 사용할 수 있습니다. IMDS API는 옵션으로 활성화/비활성화 합니다. 이 글은 영상으로도 만나볼 수 있습니다. https://youtu.be/0aIfpNReeBc IMDS API 위험 IMDS API은 EC2 메타데이터를 쉽게 조회하는 장점이 있지만, 해커에게 악용될 위험이 있습니다. EC2 인스턴스 IAM role 조회, 임시자격증명 발급 등 악용..

연재 시리즈 2023.05.28

EKS 스터디 - 6주차 1편 - 미흡한 kubelet 인증/인가 설정의 위험

2022년 OWASP에서 쿠버네티스 TOP10 위험을 공개했습니다. 이 글은 항목 중 9번째에 해당하는 kubelet미흡한 설정 위험을 설명하고 예제를 살펴봅니다. 이 글은 영상으로도 만나보실 수 있습니다. https://youtu.be/88c2iXZBm7w kubelet API 인증과 인가 kubelet은 kube API server와 통신하기 위해 10250포트를 오픈합니다. kube API server는 오픈된 10250포트를 사용하여 kubelet API를 호출합니다. kubelet API는 kubectl run, exec 등이 있습니다. kubelet API을 누구나 호출이 가능하면 악용될 여지가 있습니다. pod 목록 조회, pod안에서 명령어 실행 등 해거가 좋아하는 명령어가 가득합니다. 그..

연재 시리즈 2023.05.27

EKS 스터디 - 5주차 2편 - CPA

CPA란? CPA(cluster-proportional-autoscaler)는 노드 개수에 비례(proportional)하여 pod 개수 관리합니다. 예를 들어 노드가 추가될 때마다 coredns pod개수 증가시켜, coredns부하를 줄일 수 있습니다. CPA를 사용하면 node개수가 2개일 때 coredns 1개를, node개수가 5개일 때 coredns를 3개 등을 설정할 수있습니다. CPA는 의존성이 적습니다. Metrics server 등을 사용하지 않고 kubapi server API를 사용합니다. 여러분은 노드 개수에 비례하여 pod를 얼마나 배포할지만 규칙만 설정하면 됩니다. CPA사용 기대효과 노드 개수가 증가되면, 전체 pod개수도 많아집니다. pod개수가 많아질수록 어느 특정 서비스..

연재 시리즈 2023.05.21

EKS 스터디 - 5주차 1편 - VPA

VPA란? VPA(Vertical Pod Autoscaler)는 pod resources.request을 최대한 최적값으로 수정합니다. 수정된 request값이 기존 값보다 위 또는 아래 범위에 속하므로 Vertical라고 표현합니다. pod마다 resource.request를 최적값으로 설정하면, 쿠버네티스 노드 자원 효율성이 좋아집니다. pod가 스케쥴링될 때 pod resources.request만큼 노드에 자원이 있어야 합니다. VPA를 설정하면 쿠버네티스 노드 cpu와 메모리를 최대한 확보할 수 있으므로 자원 효율성이 증가합니다. 주의사항 VPA는 HPA와 같이 사용할 수 없습니다. VPA는 pod자원을 최적값으로 수정하기 위해 pod를 재실행(기존 pod를 종료하고 새로운 pod실행)합니다. ..

연재 시리즈 2023.05.21