Main 21

테라폼으로 AWS 구성 - 2

단일 서버 배포하기 테라폼 코드는 확장자가 .tf인 해시코프 구성언어(HCL)로 작성되며 해당 코드를 통해 테라폼이 인프라를 만들도록 작성이 가능하다. 대부분의 편집기에서 테라폼 코드를 작성할 수 있으며 문법 강조 기능을 지원하며 visual studio code를 사용한다면 extension에서 설치하여 사용이 가능하다. 테라폼을 사용하는 첫 번째 단계는 공급자를 구성하는 것으로. 빈 폴더를 만들고 main.tf라는 파일에 다음과 같은 내용을 작성한다. provider "aws" { region = "ap-northeast-2" } 위 코드는 테라폼이 AWS를 공급자로 사용하여 ap-northeast-2(서울) 리전에 인프라를 배포한다는 것을 의미한다. resource "_" "" { [CONFIG ...

Cloud/Terraform 2023.05.08

테라폼으로 AWS 구성 - 1

해당 포스팅은 Window 10, Visual Studio Code 환경에서 진행하였습니다. AWS 계정 설정 보통 AWS를 등록하면 루트 사용자로 로그인하게 되는데 루트 계정은 어떤 작업이든 수행할 수 있는 권한이 있으므로 보안 측면에서 바람직하지 않기 때문에 IAM(사용자 및 액세스 권한 관리) 에서 제한된 권한을 가진 사용자 계정을 생성한다. IAM 에서 사용자 추가 사용자 이름 입력 사용자에게 권한을 부여하려면 하나 이상의 IAM 정책을 해당 계정과 연결해야하는데 기존에 존재하는 IAM 정책을 사용한다. 직접 정책 연결 선택후 EC2를 구성할 수 있는 AmazonEC2FullAccess 권한 추가 검토 및 생성에서 사용자 생성 계정이 생성되었으면 AWS 계정에 대한 액세스 권한을 부여하는 액세스 ..

Cloud/Terraform 2023.05.08

Dockerfile로 이미지 생성

공식 허브의 이미지를 내려받아 사용하는 것 이외에 Dockerfile로 이미지 생성이 가능하다. 도커파일은 이미지를 생성하기 위한 용도로 작성하는 파일로 패키지, 소스코드, 명령어, 환경변수 등의 이미지의 세부 사항 등 을 포함함. 예제로 웹페이지에서 비디오를 재생하는 간단한 node.js 프로그램을 dockerfile을 통해 이미지로 생성. 파일 구성 index.js express 모듈을 사용해 웹페이지에서 sample.mp4 파일을 재생 const express = require("express"); const fs = require("fs"); const app = express(); const port = 3000; app.get("/video", (req, res) => { const path ..

쿠버네티스 노드 유지보수

쿠버네티스는 여러 가지 상황에서도 파드를 안정적으로 작동하도록 관리하며 노드의 관리도 가능하다. 만약 문제가 있는 노드에 파드를 할당하면 문제가 생길 가능성이 높으며 해당 노드에 영향도가 적은 파드를 할당 하여야 한 다. cordon 쿠버네티스는 모든 노드에 균등하게 파드를 할당하려고 하므로 cordon 기능을 사용해 해당 노드에 더이상 파드가 할당 되지 않고 유지되도록 설정이 가능하다. 우선 이전 글의 nginx_spec.yaml (replicas=3) 을 활용해 디플로이먼트를 생성하면 노드별로 파드가 하나씩 배분된다 그리고 cordon 명령을 실행하면 할당되지 않게 스케줄되지 않는 상태로 변경된다(schedulingDisabled) kubectl cordon 이 상태에서 파드 수를 증가시키고 확인하면..

쿠버네티스 파드 생성

파드(Pod) 쿠버네티스에서 실행되는 최소 단위, 즉 웹 서비스를 구동하는 데 필요한 최소 단위이며 독립적인 공간과 사용 가능한 IP를 가지고 있다. 하나의 파드는 1개 이상의 컨테이너를 갖고 있기 때문에 여러 기능을 묶어 하나의 목적으로 사용할 수도 있다. 파드를 생성하는 방법에는 여러가지가 존재한다. run으로 단일 파드 생성 kubectl run --image= create deplyment로 파드를 생성 kubectl create deployment --image= 두 방법 모두 결과는 동일하지만 디플로이먼트로 파드를 생성하면 관리 그룹 내에서 파드를 생성 할 수 있다. 레플리카셋으로 파드 수 관리 서비스를 하려면 다수의 파드가 필요한데, 이를 하나씩 생성한다면 비효율적이므로 쿠버네티스에서는 다수..

쿠버네티스의 구성 요소

구성한 클러스터에서 kubectl get pods 명령으로 클러스터를 이루는 구성 요소를 확인 가능하다. kubectl 쿠버네티스 클러스트에 명령을 내리는 역할을 하며 다른 구성 요소들과 다르게 명령 형태인 바이너리로 배포됨 kubelet 파드의 구성 내용을 받아 컨테이너 런타임으로 전달하고 파드 안의 컨테이너들이 정상적으로 작동하는지 모니터링 파드의 생성과 상태 관리, 복구 등을 담당 calico-kube-controller, node 해당 클러스터에서 사용하는 컨테이너 네트워크 인터페이스 coredns 쿠버네티스의 dns 서버 표준이며 클러스터에서 도메인 이름을 이용해 통신하는데 사용된다. kubeadm으로 설치하는 경우 coredns가 설치된다. etcd 쿠버네티스의 데이터가 모두 저장되며 etcd..

쿠버네티스 클러스터 구성

Vagrant를 사용하여 Kubeadm으로 쿠버네티스 클러스터 구성 Vagrant 커맨드라인 인터페이스로 가상 머신 기반 개발 환경을 관리하는 도구로 가상머신 생성을 코드로 자동화가 가능하다 Kubeadm 쿠버네티스 클러스터를 자동으로 구성해주며 사용자가 변경하기 수월하고 kubernetes에서 공식적으로 제공 사용한 버전 Vagrant : 2.3.4 VirtualBox : 6.1.30 구성에 사용한 파일 Vagrantfile 베이그런트 프로비저닝을 위한 정보를 담고 있는 메인 파일로 명령 프롬프트를 실행하고 Vagrantfile이 있는 경로에서 vagrant up 명령을 입력하면 현재 호스트 내부에 Vagrantfile에 정의된 가상 머신들을 생성하고 생성한 가상 머신에 쿠버네티스 클러스터를 구성하기 ..

도커로 컨테이너 다루기

도커로 컨테이너를 다루는 기본 순서는 아래와 같다. 도커에서 서비스 운영에 필요한 서버 프로그램, 소스코드 및 라이브러리, 컴파일된 실행 파일을 묶는 형태를 이미지 라고 한다. 컨테이너 생성에 필요한 모든 파일과 설정값을 지닌 것으로 더 이상의 의존성 파일을 컴파일하거나 설치할 필요 없는 상태의 파일을 의미하며 도커 이미지를 활용하여 컨테이너로 실행 할 수 있다. 도커 설치 (CentOS7) yum install docker // docker 설치 systemctl start docker // docker 실행 systemctl status docker // docker 상태 확인 이미지 검색 docker search 이미지 내려받기 docker pull : 태그를 사용하여 다른 버전의 이미지를 다운받을..

Docker?

도커란? 컨테이너 환경에서 독립적으로 애플리케이션을 실행할 수 있도록 컨테이너를 만들고 관리하는 것을 도와주는 컨테이너 기반의 오픈소스 가상화 도구 컨테이너 관리 기능 외에도 컨테이너를 실행하는 데 필요한 이미지를 만들거나 공유하는 등의 다양한 기능을 제공하며 도커는 사용자가 명령어를 입력하는 명령어 도구(CLI, Command Line Interface)와 명령을 받아들이는 도커 데몬으로 구성되어 있음 컨테이너? 호스트 OS상에 논리적으로 구획을 만들고 어플리케이션을 작동시키기 위해 필요한 라이브러리나 어플리케이션 등을 하나로 모아 별도의 서버인 것처럼 사용할 수 있게 만듬. 기존의 가상화 방식은 주로 OS를 가상화 하였으나 도커는 호스트 OS의 리소스를 논리적으로 분리시키고 여러 개의 컨테이너가 공유..