전체 글 138

[쿠버네티스] 쿠버네티스 란?

들어가며: 컨테이너에 대한 이해 쿠버네티스 배경 지식: 쿠버네티스가 탄생한 이유 쿠버네티스 어원과 역사 들어가며: 컨테이너에 대한 이해 컨테이너에 대한 이해는 이전 포스트를 참고하시기 바랍니다. 쿠버네티스 배경 지식: 쿠버네티스가 탄생한 이유 컨테이너 가상화 기술은 서비스간에 자원격리를 하는데 OS를 별도로 띄우지 않아도 되기에 자동화에 빠르고, 자원 효율이 매우 높습니다. 그리하여 도커가 유명세를 탔습니다만. 도커는 하나의 서비스를 컨테이너에 가상화시켜서 배포하는 것이지 컨테이너에 배포된 많은 서비스를 관리하는 것, 컨테이너 오케스트레이터의 역할은 하진 않습니다. 쿠버네티스는 컨테이너 오케스트레이터를 수행해주는 도구의 종류 중 1가지 입니다. Auto scaling 을 이용한 탄력적인 자원 사용이라고 ..

[Ansible] 구성 파일 ansible.cfg

구성파일 이란? 구성파일 우선 순위 작동 방식 제어 우선 순위 일반적인 구성 파일 설정 구성 파일 설정 확인 구성파일 이란? 구성 파일은 Ansible의 작동 방식을 구성하는 파일 입니다. Ansible 구성 파일에는 인벤토리 파일의 위치, 관리 노드에 연결하는 방법, 연결 한 후 작동 방법 등 무수히 많은 구성을 지정할 수 있습니다. 기본 Ansible 구성 파일의 위치는 /etc/ansible/ansible.cfg 파일이며, 변형된 INI 형식을 사용합니다. 주석이 줄 처음부터 시작할 때 -> # or ; 모두 주석 표시에 사용 가능 일반 값과 함께 주석을 사용할 경우 -> ; 만 사용 가능 ex) # This points to the file that lists your hosts inventory..

[Ansible] 인벤토리(Inventory) 란?

인벤토리 란? 정적 인벤토리 INI 형식 YAML 형식 동적 인벤토리 인벤토리 확인 패턴 인벤토리 란? Ansible은 인프라에 존재하는 여러 호스트를 관리합니다. 이런 호스트의 목록 또는 그룹을 지정하는 파일이 인벤토리 입니다. 인벤토리가 정의되면 패턴을 사용하여 Ansible 을 실행할 노드 또는 그룹을 선택할 수 있습니다. 기본 인벤토리 파일은 /etc/ansible/hosts 이며, -i 옵션을 사용하여 다른 인벤토리 파일을 지정할 수 있습니다. 또한, 여러 인벤토리 파일을 동시에 지정하거나 클라우드 또는 CMDB에서 동적으로 관리 노드를 가져올 수 있습니다. 인벤토리 파일은 일반적으로 INI 파일 형식을 가지고 있으며, YAML 형식으로 지정할 수 있습니다. 정적 인벤토리 정적 인벤토리는 사용자..

코드형 인프라 (IaC), Ansible 개념 & 설치

IaC 개념 IaC 장점 비용 절감 빠른 속도 안정성 코드화 및 버전 관리 재사용성 IaC 도구 및 특징 비교 구성 관리 / 배포 가변 인프라 / 불편인프라 절차적 / 선언적 언어 마스터 및 에이전트 유무 Ansible 이란? 용어 제어 노드 관리 노드 인벤토리 플러그인 모듈 작업 Ad-hoc 명령 플레이 플레이북 아키텍쳐 Ansible 설치 IaC 개념 IaC(Infrastructure as Code: 코드형 인프라)는 인프라를 웹 인터페이스 대화형식의 도구를 사용해 수동적으로 인프라를 구성하는 것이 아닌, 시스템이 읽을 수 있는 인프라 정의 파일을 통해 인프라의 구성 관리 및 배포를 자동화하는 것을 일컫습니다. 인프라는 물리적 하드웨어 뿐만 아니라 가상 컴퓨터, 클라우드 등 관련 리소스를 IaC를 통..

[AWS] 리전, 가용영역, 엣지

리전 리전(Region)은 해당 지리적인 영역 내에서 격리되고 물리적으로 부리된 여러 개의 가용 영역(AZ)의 모음을 말합니다. 리전은 최소 2개의 가용 영역으로 구성되고 최대 6개의 가용 영역으로 구성된 리전도 있습니다. 가용영역(AZ, Availability Zone) 가용영역은 1개 이상의 데이터 센터들의 모음을 말합니다. 각 센터는 광통신 전용망으로 연결되어 있습니다. 가용 영역과 외부(인터넷) 연결을 위한 이중화된 트랜짓 센터가 있습니다. 트랜짓 센터는 AWS 글로벌 백본 네트워크에 연결이 되고, 엣지 POP을 통해서 CDN 등 서비스를 합니다. 가용 영역은 장애가 날 수 있습니다. (AWS EC2 의 SLA 는 99.99%, 1년에 21분 정도 장애 발생 가능) 따라서, AWS 사용자는 서비스..

[쿠버네티스] k8s 잡(Job) 컨트롤러란? 단일잡, 다중잡, 병렬잡

들어가며: 잡소개 잡 컨트롤러의 레이블 셀렉터 잡 컨트롤러 잡 컨트롤러 생성 잡 컨트롤러 확인 잡 컨트롤러 삭제 다중 잡 컨트롤러 다중 잡 컨트롤러 생성 다중 잡 컨트롤러 확인 다중 잡 컨트롤러 삭제 병렬 다중 잡 컨트롤러 병렬 다중 잡 컨트롤러 생성 병렬 다중 잡 컨트롤러 확인 병렬 다중 잡 컨트롤러 삭제 잡의 종료 파드 백오프(backoff) 유효 데드라인 들어가며: 잡 소개 잡(Job) 컨트롤러는 파드(컨테이너)의 애플리케이션(잡)의 실행이 완료/종료되는 것에 초점을 맞춘 컨트롤러입니다. 레플리케이션 컨트롤러, 레플리카셋, 데몬셋은 파드의 애플리케이션이 계속적으로 잘 동작하는 것을 초점으로 맞춘 것에 대비됩니다. 즉, 애플리케이션이 실행되고 실행이 완료되면 파드의 할 일이 끝난 것으로 간주하고 파드..

[쿠버네티스] k8s 레플리카셋(ReplicaSet) 이란? & 레플리케이션 컨트롤러와의 비교

들어가며: 레플리카셋를 왜 쓰는걸까요? 레플리카셋과 레플리케이션 컨트롤러의 비교 레플리카셋 생성 레플리카셋 확인 레플리카셋의 레이블 셀렉터 사용 matchLabels 레이블 셀럭터 matchExpressions 레이블 셀럭터 matchExpressions를 사용한 레플리카셋 생성 파드의 수평 스케일링 레플리케이션 컨트롤러 및 파드 삭제 들어가며 : 레플리카셋(replicaSet)를 왜 쓰는걸까요? 쿠버네티스의 기본 단위인 Pod는 여러 개의 컨테이너를 추상화해 하나의 애플리케이션으로 동작하도록 만드는 훌륭한 컨테이너 묶음입니다. 그러나 YAML에 포드만 정의해 생성하게 되면 이 Pod의 생애 주기(Lifecycle)은 컨테이너 삭제 시 영원히 사라지게 됩니다. 이처럼 yaml 파일에 포드만 정의해 생성할..

[쿠버네티스] k8s 스테이트풀셋을 이용한 MySQL 백업 복제본 구성

들어가며: 전체적인 설명 MySQL 설정 파일 컨피그맵 생성 서비스 생성 고가용성을 위한 MySQL 데이터베이스 생성 MySQL 데이터베이스 확인 들어가며: 전체적인 설명 공식 MySQL이미지를 이용하여 스테이트풀셋이 관리할 파드를 2개를 생성합니다. 2개를 생성하는 이유는 데이터베이스의 백업 복제본을 제공하기 위함입니다. 당연하지만 각각의 파드는 각각의 PVC를 요청하고 다른 PV를 사용함에 따라 별도의 상태를 가질 수 있습니다. MySQL 데이터베이스의 백업 복제본을 위해 xtrabackup을 이용하여 복제본을 구성하고, 첫 번째 생성되는 파드는 마스터(읽기/쓰기)로, 두 번째부터 생성되는 파드는 슬레이브(읽기 전용)로 구성됩니다. 마스터와 슬레이브용 설정 파일을 컨피그맵에 등록하고, 서비스는 데이터..

[쿠버네티스] 쿠버네티스 스테이트풀셋 (StatefulSet) 소개 및 관리

들어가며: 기존 컨트롤러의 문제점 스테이트풀셋(StatefulSet) 소개 스테이트풀셋 이란? 스테이트풀셋의 주의사항 스테이트풀셋의 파드 이름 규칙 스테이트풀셋의 파드 DNS 주소 규칙 스테이트풀셋의 스토리지 볼륨 스테이트풀셋의 스케일링 스테이트풀셋 관리 스테이트풀셋 기본 살펴보기 스테이트풀셋의 볼륨 클레임 템플릿 들어가며: 기존 컨트롤러라고 하면 레플리케이션 컨트롤러나 레플리카셋과 같은 본제본을 가지고 있는 컨트롤러를 의미합니다. 이후에서는 상징적으로 레플리카셋 컨트롤러로 대표해서 이야기 해보도록 하겠습니다. 레플리카셋은 파드 템플릿(replicaset.spec.template)에서 파드의 복제본을 생성합니다. 다음은 레플리카셋의 파드 템플릿의 예 입니다. ... template: metadata: l..

[쿠버네티스] 디플로이먼트 업데이트 전략(RolliingUpdate, ReCreate, Blue/Green, Canary)

들어가며: 디플로이먼트 란? 디플로이먼트의 전략 RollingUpdate Recreate 디플로이먼트 생성 및 확인 디플로이먼트 롤아웃 상태 확인 디플로이먼트 롤링업데이트 들어가며: 디플로이먼트 란? Deployment는 쿠버네티스에서 가장 널리 사용하는 오브젝트 중 한개입니다. 레플리카셋(ReplicaSet) 컨트롤러와 지금은 거의 사용하지않는 레플리케이션(Replication) 컨트롤러는 파드를 생성하고 관리합니다. 레플리케이션 컨트롤러보다 더 상위 수준의 컨트롤러 리소스가 있습니다. 그것이 디플로이먼트(Deployment) 리소스 입니다. 디플로이먼트는 애플리케이션(컨트롤러, 파드)을 배포하고 선언적으로 업데이트를 수행하는 리소스입니다. 디플로이먼트 리소스는 하위에 레플리카셋 컨트롤러를 제어하고 그..