전체 글 77

Amazon EKS Tutorial - Part.4

Application 배포 새로운 클러스터 생성 본격적으로 EKS 클러스터에 App을 배포하는 과정에 대해 알아보자. 실습 환경 구성을 위해 기존 클러스터는 제거하고 아래 명령어로 새로운 클러스터를 생성한다. 이번엔 yaml 파일을 사용하는 대신 Imperative 방식으로 진행하였다. eksctl create cluster \ --name eks-from-eksctl \ --version 1.19 \ --region ap-northeast-2 \ --nodegroup-name workers \ --node-type t3.medium \ --nodes 2 \ --nodes-min 1 \ --nodes-max 4 \ --ssh-access \ --ssh-public-key eks-access \ --man..

Cloud 2021.03.17

Amazon EKS Tutorial - Part.3

EKS 클러스터 확장 이전 시간에 t2.small 타입의 인스턴스 3개로 구성된 nodegroup 1개를 갖는 EKS 클러스터를 구성하였다. 계속해서 이번 시간엔 기존 클러스터를 확장하는 방법에 대해 알아보고자 한다. Amazon EKS Tutorial - Part.2 EKS 클러스터 생성 지난 시간에 이어 eksctl을 사용하여 AWS에 EKS 클러스터를 생성하는 과정에 대해 설명한다. Amazon EKS Tutorial - Part.1 Kubernetes on AWS AWS에서 Kubernetes 클러스터를 구축 및 운영하는.. cwal.tistory.com Node 갯수 변경 이전 시간에 생성한 Cluster와 소속 nodegroup의 상태이다. 클러스터가 정상적으로 생성되었으며, nodegroup..

Cloud 2021.03.16

Amazon EKS Tutorial - Part.2

EKS 클러스터 생성 지난 시간에 이어 eksctl을 사용하여 AWS에 EKS 클러스터를 생성하는 과정에 대해 설명한다. Amazon EKS Tutorial - Part.1 Kubernetes on AWS AWS에서 Kubernetes 클러스터를 구축 및 운영하는 방법은 다양하다. EC2 인스턴스로부터 k8s를 직접 설정하거나 Kops를 통해 구축을 자동화하되 사용자가 직접 운영하는 방식, 그리고 EKS cwal.tistory.com 우선 우리가 생성하고자 하는 클러스터의 스펙은 다음과 같다. Region: ap-northeast-2 (Seoul) 1 Nodegroup 3 Worker nodes Instance Type: t2.small SSH 접근 허용 eksctl에서 클러스터를 생성할 수 있는 방법은..

Cloud 2021.03.15

Amazon EKS Tutorial - Part.1

Kubernetes on AWS AWS에서 Kubernetes 클러스터를 구축 및 운영하는 방법은 다양하다. EC2 인스턴스로부터 k8s를 직접 설정하거나 Kops를 통해 구축을 자동화하되 사용자가 직접 운영하는 방식, 그리고 EKS를 사용하여 모든 관리 영역을 AWS에 위임하는 방식이다. AWS EKS EKS는 Elastic Kubernetes Service의 약자로 AWS가 2018년 6월부터 고가용성, 확장성, 보안을 강조하며 출시한 Kubernetes 서비스다. Control Plane(ex: master node, etcd) 영역을 AWS에서 전부 관리해주므로 사용자는 온전히 Application에만 집중할 수 있으며, k8s에 대한 이해도가 낮더라도 쉽게 사용가능한 장점이 있다. 물론 mast..

Cloud 2021.03.13

12-Factor Application

SaaS(Software as a Service) 불과 10~20년 전만 하더라도 소프트웨어는 패키지를 구매하여, 사용자가 직접 자신의 PC에 설치하는 방식으로 제공되었다. 하지만 지금은 웹을 통해 언제 어디서나 서비스를 이용할 수 있으며, 대부분의 소프트웨어는 클라우드 플랫폼 위에 배포된다. 감이 안온다면 Netflix를 생각해보자. 예전엔 집에서 영화를 보기 위해선 동영상 플레이어와 DVD가 필요했지만, 지금은 비용만 결제하면 브라우저 또는 앱에서 바로 시청이 가능하다. 이런 방식의 서비스를 Software as a Service 또는 SaaS 라고 정의할 수 있으며, 'Web Application'이라는 이름으로 부르기도 한다. 12-Factor Application 12-Factor는 클라우드 환..

개발 철학 2021.03.12

Container Runtime과 Docker

Container Runtime Docker나 Kubernetes 사용자라면 컨테이너 런타임(Container Runtime)이라는 단어를 종종 들어봤을 것이다. 컨테이너의 개념은 상당히 명확하지만 이에 반해 컨테이너 런타임이 구체적으로 어떤 역할을 맡고 있는지 설명하기란 쉽지 않다. Docker 자체가 컨테이너 런타임인가? kubelet은 Docker와 어떤 방식으로 상호작용하여서 컨테이너를 실행하는가? 이번 시간엔 컨테이너 런타임의 정확한 개념과 기능에 대해 알아보고자 한다. Docker와 Container 기술 표준 우선 Docker의 역사에 대해 짚고 넘어갈 필요가 있다. 2013년에 공개된 Docker는 그동안 어렵게만 여겨졌던 Linux 컨테이너 기술을 쉽게 다룰 수 있도록 아래와 같은 기능을..

Kubernetes 2021.03.09

Pod Lifecycle

Pod Pod은 Kubernetes에서 scheduling 가능한 최소한의 배포 단위로, Pod은 전체 생애에서 단 한번만 schedule된다. 다시 말해서 Node에 할당된 pod은 종료될 때까지, 해당 node에서만 존재할 수 있다는 이야기다. Pod 자체는 Self-heal이 불가능하므로 Fail 발생시 그대로 제거되며, 다른 UUID값을 갖는 Pod으로 대체된다. Pod Phase 'kubectl get pod -o yaml' 등의 명령어로 Pod의 디테일한 정보를 확인해보면, 사용자가 정의한 spec 외에 status 라는 필드가 존재한다. 그리고 이 필드에는 phase 항목이 존재하는데, 이는 Pod의 lifecycle이 현재 어느 단계에 있는지를 알려준다. 우선 Pod의 전체 Lifecycl..

Ansible - Playbook Tutorial(3/3)

Ansible Roles Ansible은 사용자가 만든 Module의 재사용성을 높이고 커뮤니티 내에서 공유하기 Role 이라는 개념을 제공한다. 보통 Role은 아래와 같은 파일 계층으로 구성된다. 예를 들어, webserver 라는 Role이 있다고 가정하자. 하지만 사용자가 Role 디렉토리와 파일을 처음부터 직접 만드는 대신, 아래 명령어를 통해 간단하게 생성 가능하다. ansible-galaxy init webserver 참고로 다른 사용자가 이미 만들어놓은 Role을 import 하는 명령어는 아래와 같다. ansible-galaxy import webserver 저번 실습에선 include 키워드를 통해 다른 파일에 위치한 task들을 가져왔다. 이번엔 flask-web, mysql-db r..

IaC 2021.03.07

Ansible - Playbook Tutorial(2/3)

지난번에 이어 Playbook을 개선할 시간이다. Ansible - Playbook Tutorial(1/3) 설치 Ubuntu 환경에서 다음 명령어로 Ansible을 손쉽게 설치할 수 있다. Ansible Controller로 사용할 Machine에서 실행한다. sudo apt update sudo apt install software-properties-common sudo apt-add-reposit.. cwal.tistory.com vars 필드에 Playbook에서 사용할 변수들을 정의한 적이 있었다. 하지만 모든 Host가 동일한 DB 정보를 가지고 있지 않을 수 있다. 예를 들어 dev와 staging의 DB Name이나 사용자가 다를 수 있다. 이러한 케이스를 위해 개별 host마다 별도의 ..

IaC 2021.03.06

Ansible - Playbook Tutorial(1/3)

설치 Ubuntu 환경에서 다음 명령어로 Ansible을 손쉽게 설치할 수 있다. Ansible Controller로 사용할 Machine에서 실행한다. sudo apt update sudo apt install software-properties-common sudo apt-add-repository --yes --update ppa:ansible/ansible sudo apt install ansible 테스트 제대로 설치되었는지 확인해보기 위해 아래와 같은 테스트 코드를 작성해보자. 우선 inventory.txt에 관리할 서버에 대한 정보를 추가한다. 각 Host는 SSH 서버가 실행중인 상태로, Ansible Controller와 연결이 가능해야 한다. [test-servers] test-serv..

IaC 2021.03.06