목록Terraform (19)
Study_note
Headless service를 설명하기 전에 우선 Stateless와 Stateful의 차이를 알아야한다. 다양한 쿠버네티스 책에서 Stateful을 애완동물에 비교하고 Stateless을 가축으로 비교한다. 애완동물에는 특별한 이름을 붙여주기 때문에 다른 가축과는 명확히 구분된다. 사람의 입장에서 애완동물은 항상 고유한 식별자로서 대체 불가능한 개체로 여겨진다. 상태를 갖는 각 포드는 모두 고유하며, 쉽게 대체될 수 없기 때문에 상태를 갖는 애플리케이션인 스테이트풀셋을 애완동물과 비교한다 아래 이미지 처럼 Statefulset과 Replocaset의 차이는 Statefulset : 순차가있는 이름으로 파드 및 볼륨이 생성되며 순차적으로 생성된다 Replicaset : 랜덤의 이름으로 파드 및 볼륨이 ..
고객이 현재 데브옵스가 없는 상태에서 eks 업그레이드를 해야하는 상황이라 도움을 요청했다. 요청이 들어온김에 겸사겸사 정리한다. EKS Upgrade는 생각보다 간단하며 심지어 무중단이다. EKS Upgrade는 총 2가지 방법이 있다. 1. 싱글 클러스터 2. 멀티 클러스터 싱글 클러스터 특징 하나의 클러스터를 롤링 업데이트 처럼 업그레이드 버전을 한번에 하나씩만 업그레이 가능 (1.22 -> 1.24 -> 1.25) 무중단이며 따로 생성할게 없어 기존 시스템을 크게 변경하지 않아도 된다. 노드 그룹과 cordon,drain,asg로 무중단 업그레이드 가능 하다 생각보다 쉽지만 롤백은 불가능 멀티 클러스터 블루/그린과 같이 구/신 버전 생성 후 트래픽을 한번에 신 버전으로 변경 버전을 한번에 여러 단..
systemd 란? systemd는 부팅후에 가장 먼저 생성된 후에 다른 프로세스를 실행하는 init 역할을 대체하는 데몬이다. 예전 리눅스 같은 경우 init 프로세스 사용하여 단계적으로 run level이 올라가면서 runlevel에 포함된 rc 스크립트들을 순차적으로 실행하였다 → 프로그램 복잡해질수록 효율 저하 systemd는 init의 단점 보완하고 리눅스의 의존성을 해치지 않도록 개발하였고 systemd는 가능한 한 병렬로 시작 프로그르매들을 실행 시켜 부팅 속도 끌어올리고, 프로그램 실행을 위한 파일로 스크립트가 아닌 service라는 systemd만의 unit을 통해 체계적이면서 가독성이 좋도록 개발했다 실행되어지는 프로세스를 검색하면 pid는 1이며 ppid는 0으로 부팅후에 가장 먼저 ..
테라폼은 선언적 언어로서 실제 배포된 내용을 정확하게 나타내며, 추론하기 쉽지만 특정 유형의 작업을 하기 어렵다. 예를 들어 선언적 언어에는 for 반복문이 없다 -> 같은 리소스를 여러 개 만드는 반복 처리에 어려움이 있다 테라폼은 다행히도 특정 유형을 반복하거나 if문을 사용할 수 있도록 count 메타 변수, for each, for 표현식 등 다양한 함수 등을 제공하고 있다. 반복문은 아래와 같다. count 매개 변수 : 리소스를 반복 for_each 표현식 : 리소스 내에서 리소스 및 인라인 블록 반복 for 표현식 : 리스트와 맵을 반복 for 문자열 지시어 : 문자열 내에서 리스트와 맵을 반복 count 매개 변수 count는 테람폼의 가장 오래되고 단순하며 ㅈ제한된 반복 구조로써 coun..
아래 그림은 스테이징 환경 밖에 없지만 후에 prod, dev 환경을 구축한다면 스테이징에서 코드를 전부 하드 코딩하지 않고 prod, dev 환경을 추가하는 방법이 모듈이다 즉 여러 환경, 리전에 같은 인프라를 배포할 때, 목적에 따라 똑같은 인프라를 여러 개 배포할 필요가 있을 때 사용하는것이 모듈이다 모듈을 어떻게 생성하고, 효율적으로 관리 할지는 적어본다 우선 모듈 폴더를 생성하고 모듈 파일을 만드는데 모듈 파일은 일반 tf파일과는 다르게 provider 내용이 없고 모듈을 사용할 tf파일에서 provider를 아래와 같이 지정해준다. provider "aws" { # 모듈을 사용하는 tf파일은 생성자 입력 region = "us-east-2" } module "webserver_cluster" ..
상태파일 저번 글에서 말했듯이 apply 시 terraform.tfstate 파일이 생성된다 이걸 상태 파일이라 부르는데 이 파일에는 구성파일(.tf)의 테라폼 리소스가 실제 리소스의 표현으로 매핑되는 내용을 기록하며 사용자 정의 JSON 형태로 되어 있고 이는 terraform으로 구성된 인프라스터럭처의 현재 상태를 보여준다. 즉 apply 때마다 AWS에서 지금 작동 중인 EC2 인스턴스의 최신 상태를 가져와서 테라폼의 구성과 비교하여 어느 변경 사항을 적용해야 하는지 결정한다. 아래 사진 처럼 인프라 생성 시 terraform.tfstate 생성 하지만 개인이 사용할 시 문제가 되지 않지만 팀 단위로 사용을 한다면 문제가 발생한다. 상태 파일을 저장하는 공유 스토리지 : 인프라 업데이트 시 각 팀원..