no image
[Kubernetes] ReplicaSet
[쿠버네티스]레플리카셋Replicaset쿠버네티스의 가장 최소의 단위인 포드가 장애가 나거나 실수로 삭제 되었을때는 어떻게 해야할까요? 관리자가 포드를 일일이 상태를 확인하고, 다시 재 배포 하여야 안정적으로 서비스를 운영할 수 있을까요?이를 위해 레플리카셋을 사용합니다. 레플리카셋은 관리자가 원하는 만큼 여러 포드를 실행시킬수 있고 포드가 장애가 나거나 삭제가 되면 쿠버네티스는 실시간으로 파드의 개수를 확인하고 정의된 포드의 수보다 실행되고 있는 포드가 적다면 새로 생성해 줍니다.    예를 들면 레플리카셋을 배포하고 명시된 포드가 3개 실행 되고 있습니다.그런데 갑자기 3번 포드가 장애가 났습니다. 그러면 어떻게 될까요 ?  위와 같이 정의된 포드의 갯수가 3개이기 때문에 쿠버네티스는 3번 포드가 장..
2024.05.09
no image
Raft Consensus Algorithm
Raft 알고리즘을 Kubernetes 카테고리에 넣은 이유는 Kubernetes, ETCD외 Karpenter, AWS LoadBalancer Controller 와 같이 Raft 알고리즘이 사용되는것들의 로그들을 보면 Leader Election 과 비슷한 로그들을 확인 할 수 있다. 그로 인해 Raft 알고리즘에 대해 충분히 이해 하면 Kubernetes 운영 관리자 입장에서 좋을 것 같아 정리 한다. 개요 Raft란 뗏목을 의미하며 분산 시스템 환경에서 일관성 있는 상태를 유지하기 위해 사용되는 합의 알고리즘이다. Kubernetes에서는 Raft 알고리즘을 사용하여 클러스터 내에서 리더를 선출하고, 리더를 통해 클러스터 전체의 일관성 있는 상태를 유지한다. 동작 원리 Raft Consensus ..
2024.04.17
no image
[Kubernetes] Pod
PodPod는 컨테이너 하나 또는 여러개의 애플리케이션 컨테이너들의 그룹을 나타내며 스토리지,IP 주소 그것을 동작시키는 방식에 대한 정보를 포함하고 있습니다. 또 Pod에서 컨테이너들의 일부는 컨테이너에 자원을 공유 할 수 있습니다.공유하는 자원볼륨과 같은 스토리지클러스터 IP와 같은, 네트워킹컨테이너 실행 방식 정보Pod는 쿠버네티스에서 가장 최소의 단위이며, 하나의 Pod에 여러개의 컨테이너를 생성 할 수 있고, 하나의 컨테이너를 담을수 있습니다. 예를 들어 Web컨테이너, App 컨테이너를 Pod에 담아서 배포 할 수 있습니다. Pod에 컨테이너가 새로 생성이 필요 할 때는 추가로 배포 할 수 있습니다.ex) podPod 배포Pod를 배포하는 방법에는 두가지 방법이 있습니다.커맨드 라인을 통한 배..
2024.04.17
no image
[Docker]도커 개념 및 기본 명령어
Docker는 무엇일까? 도커는 2013년 Docker(구 dotCloud)에서 출시한 오픈 소스 컨테이너 프로젝트 입니다. 도커는 소프트웨어 컨테이너 내부에 있는 응용프로그램 배포를 자동화하는 오픈소스 도구 입니다. 요새 서버 환경들은 클라우드 환경으로 많이 사용하기 떄문에 서버를 구입하기보다는 사용 요금만 내고 가상 서버를 빌려 쓰게 되었습니다. 특히 물리서버를 구축하려면 상당한 시간이 걸립니다. 하지만 클라우드 환경에서는 서버들을 클릭 몇 번 만으로도 가상 서버를 만들 수 있습니다. 가상 머신 가상 머신은 편하긴 하지만 성능이 좋지 못한 단점이 있습니다. 지금까지 CPU에 가상화를 위한 기능들이 많이 추가되었지만 아직도 가상 머신은 물리 서버에 비해 속도가 느립니다. 가상 머신 자체는 완전한 컴퓨터..
2023.01.05
no image
[Terraform]GCP VM인스턴스 생성하기
Terraform이란 ? 테라폼은 코드로 인프라를 관리 할 수 있는 도구입니다. AWS, Azure GCP 등 Terraform 을 사용해 인프라를 만들고 변경하고 버전관리를 안전하고 효율적으로 사용 할 수 있습니다. Terraform을 왜 사용할까요? 수 많은 서버들을 콘손들로 직접 생성한다면 엄청난 리소스가 소요 됩니다. 테라폼을 사용하면 쉽고 빠르게 인프라를 구성 할 수 있습니다. Terraform 설치 방법 MAC OS 를 기준으로 설명하겠습니다. $ brew install terraform Terraform이 잘 설치 되어 있는지 확인합니다. $ terraform -version Terraform을 사용하기 전에 GCP를 관리하려면 서비스 계정 키값이 필요합니다. 아래에서 GCP 서비스 계정 키..
2020.01.29

[쿠버네티스]레플리카셋

Replicaset

쿠버네티스의 가장 최소의 단위인 포드가 장애가 나거나 실수로 삭제 되었을때는 어떻게 해야할까요? 관리자가 포드를 일일이 상태를 확인하고, 다시 재 배포 하여야 안정적으로 서비스를 운영할 수 있을까요?

이를 위해 레플리카셋을 사용합니다. 레플리카셋은 관리자가 원하는 만큼 여러 포드를 실행시킬수 있고 포드가 장애가 나거나 삭제가 되면 쿠버네티스는 실시간으로 파드의 개수를 확인하고 정의된 포드의 수보다 실행되고 있는 
포드가 적다면 새로 생성해 줍니다.

 

 

 

 

예를 들면 레플리카셋을 배포하고 명시된 포드가 3개 실행 되고 있습니다.
그런데 갑자기 3번 포드가 장애가 났습니다. 그러면 어떻게 될까요 ?

 

 

위와 같이 정의된 포드의 갯수가 3개이기 때문에 쿠버네티스는 3번 포드가 장애가 난 것을 확인하고 새로운 포드를 생성하기 위해 명시된 파드 템플릿을 사용합니다. 레플리카셋은 장애난 파드를 재생성 하기만 하지 않습니다. 만약에명시딘 파드는 3개인데 실행되고 있는 파드는 5개라면 레플리카셋은 2개의 파드를 삭제합니다.

 

Replicaset 배포하기

아래와 같이 레플리카셋을 배포하기 위해 manifest파일을 작성하였습니다.
Pod를 배포할때와 같은 명령어를 사용하시면 됩니다.

kubectl apply -f [배포할 파일].yaml

 

배포하고 난 후 레플리카셋과 파드를 확인해 봅시다.

 

$kubectl get replicaset #레플리카셋을 확인
$kubectl get pods #파드를 확인

위와 같은 명령어를 입력하면 아래와 같이 출력됩니다.

 

test-replicaset-xxxx 라는 파드가 명시된 대로 3개 생성 되었습니다.
제가 설명 드린대로 파드를 한번 삭제해볼까요 ?

pod를 삭제하는 명령어

kubectl delete pod [삭제할 포드 이름]

test-replicaset-kqfx4포드를 삭제했습니다. 그런데 제가 삭제한 포드는 삭제 되었고 test-replicaset-4fx2q 라는 이름을 가진 새로운 파드가 생성 되었습니다. 이와 같이 레플리카셋을 사용하면 더 안정적으로 서비스를 운영 할 수 있습니다. 그런데 포드를 더 생성하고 싶으면 어떻게 하면 될까요 ?

 

replicas 의 숫자를 늘리면 됩니다. 5개로 변경해보고 다시 배포해보겠습니다.

다시 배포하면 파드가 5개로 늘어난 것을 볼 수 있습니다. 이와 같이 레플리카셋은 정말 유용한 워크로드 중 하나입니다.

감사합니다.

'DevOps > kubernetes' 카테고리의 다른 글

Raft Consensus Algorithm  (0) 2024.04.17
[Kubernetes] Pod  (0) 2024.04.17



Raft 알고리즘을 Kubernetes 카테고리에 넣은 이유는 Kubernetes, ETCD외 Karpenter, AWS LoadBalancer Controller 와 같이 Raft 알고리즘이 사용되는것들의 로그들을 보면 Leader Election 과 비슷한 로그들을 확인 할 수 있다.

그로 인해 Raft 알고리즘에 대해 충분히 이해 하면 Kubernetes 운영 관리자 입장에서 좋을 것 같아 정리 한다.

 

개요

Raft란 뗏목을 의미하며 분산 시스템 환경에서 일관성 있는 상태를 유지하기 위해 사용되는 합의 알고리즘이다.
Kubernetes에서는 Raft 알고리즘을 사용하여 클러스터 내에서 리더를 선출하고, 리더를 통해 클러스터 전체의 일관성 있는 상태를 유지한다.

 


동작 원리

Raft Consensus Algorithm은 분산 시스템에서 모든 노드들은 1명의 리더와 나머지 노드들은 팔로워로 구성되며, 후보자는 리더가 응답이 없거나 타임아웃 상태 일 때 일시적으로 발생한다.

  • 리더(Leader) : 리더는 클러스터를 관리하는 핵심 서버이며, 클라이언트의 요청을 모두 처리하고 클러스터의 상태 변경 사항을 모두 기록합니다 로그 복제를 통해 다른 팔로워들에게 복제하며 일관성을 유지한다.
    리더는 반드시 1명이고 다른 노드들은 리더의 지시에 따라 동작한다.

  • 후보자(Candidate) : 리더가 타임아웃 상태이거나 응답이 없으면 새로운 리더 선출을 위해 자신을 후보자로 등록한다 타임아웃이 발생하면 자신의 임기(term)을 증가시키며 팔로워들에게 투표를 요청하며 과반수 이상일 시 자신이 리더가 된다.

  • 팔로워(Follower) : 리더의 지시를 받는 일반 노드이며, 리더의 요청을 받아 로그 복제, 커밋 등의 작업을 수행합니다 일정 시간동안 리더의 요청을 받지 못하면 타임아웃이 발생하여 후보자 상태로 전환 된다.

 


위와 같이 클라이언트는 리더에게만 통신한다 리더는 변경사항을 로그(log)를 생성하여 팔로워들에게 전달 하며 모든 팔로워들에게 복제하여 전달하고 팔로워들은 리더에게 로그에 대한 응답을 리더에게 보낸다.

 

 


 

 

 로그 복제 (Log Replication)

  • 리더는 상태 변화 로그를 기록하고, 이를 다른 노드들에게 복제한다.
  • 로그는 일관성 있게 유지되며, 리더가 변경되더라도 클러스터는 일관성이 유지 된다.

 


 

리더 선출(Leader Election)

Raft 알고리즘에서 리더는 팔로워들의 투표를 받고 과반수가 넘는 팔로워가 리더가 됩니다.

 

리더가 없거나 팔로워가 타임 아웃이 발생할 때 해당 팔로워는 후보자가 되어 새로운 리더 선출을 시작하며 과반수 이상을 받은 팔로워는 리더가 됩니다 리더가 선출 된 후 남은 노들들은 팔로워가 됩니다.

 

순서대로 정리하자면

  1. 클러스터에 리더가 없거나 팔로워의 타임아웃이 발생
  2. 타임아웃이 가장 먼저 발생한 팔로워는 후보자가 된다.
  3. 후보자는 자신에게 먼저 투표하고 노드들에게 투표 요청을 보낸다.
  4. 투표 요청을 받은 노드가 후보자에게 투표 응답을 보내고 자신의 선거 타임아웃을 초기화 한다.
    투표 과정에 있는 노드 외에 후보자가 발생하지 않도록 제어한다.
  5. 과반수 이상을 받은 노드는 새로운 리더로 선출 된다.

 

 

Diego Ongaro, John Ousterhout 논문

 

 

 


 

 

틀린 내용이 있다면 지적 부탁드리겠습니다.

 

감사합니다.

 

 

Ref. https://raft.github.io/

https://raft.github.io/raft.pdf  (논문)

 

Raft Consensus Algorithm

What is Raft? Raft is a consensus algorithm that is designed to be easy to understand. It's equivalent to Paxos in fault-tolerance and performance. The difference is that it's decomposed into relatively independent subproblems, and it cleanly addresses all

raft.github.io

 

 

 

 

 

'DevOps > kubernetes' 카테고리의 다른 글

[Kubernetes] ReplicaSet  (0) 2024.05.09
[Kubernetes] Pod  (0) 2024.04.17

[Kubernetes] Pod

jhyoonzi
|2024. 4. 17. 13:15

 

 

Pod

Pod는 컨테이너 하나 또는 여러개의 애플리케이션 컨테이너들의 그룹을 나타내며 스토리지,IP 주소 그것을 동작시키는 방식에 대한 정보를 포함하고 있습니다. 또 Pod에서 컨테이너들의 일부는 컨테이너에 자원을 공유 할 수 있습니다.

공유하는 자원

  • 볼륨과 같은 스토리지
  • 클러스터 IP와 같은, 네트워킹
  • 컨테이너 실행 방식 정보

Pod는 쿠버네티스에서 가장 최소의 단위이며, 하나의 Pod에 여러개의 컨테이너를 생성 할 수 있고, 하나의 컨테이너를 담을수 있습니다. 예를 들어 Web컨테이너, App 컨테이너를 Pod에 담아서 배포 할 수 있습니다. Pod에 컨테이너가 새로 생성이 필요 할 때는 추가로 배포 할 수 있습니다.

ex) pod

Pod 배포

Pod를 배포하는 방법에는 두가지 방법이 있습니다.

  1. 커맨드 라인을 통한 배포
  2. manifest 파일을 사용한 배포

먼저 1번 커맨드 라인을 통한 배포를 해보겠습니다.

$kubectl run nginx — image nginx:latest — port=80

커맨드 라인 배포

위의 커맨드 라인과 같이 nginx라는 Pod가 생성되었습니다. 보시면 Ready 0/1 이라고 되어 있는데, nginx Pod안에 컨테이너가 1개인 것을 알 수 있고, ContainerCreating 즉 컨테이너가 생성되는 중인 상태입니다.

생성된 Pod의 자세한 정보를 확인하려면 아래 명령어를 사용하여 확인 할 수 있습니다.

 

$kubectl describe pod [pod name]

pod의 상세 정보

다음은 2번 manifest 파일을 사용하여 2개의 컨테이너를 가진 Pod를 배포 해보겠습니다.

manifest파일로 Pod를 배포하려면 yaml 포맷을 사용하여 배포합니다.
아래와 같이 간단한 yaml 파일을 작성하였습니다.

yaml 파일을 작성하는 방법은 아래와 같은니 참고 부탁드립니다.

 

 

아래와 같이 Pod를 배포할 yaml 파일을 작성하였습니다. 
manifest 파일을 통해 pod를 배포하는 명령어는 아래와 같습니다.

$kubectl apply -f [배포할 파일].yaml

 

 

배포를 하고나서 Pod가 잘 생성되었는지 확인합니다.
아래와 같이 nginx라는 pod안에 컨테이너가 2개 전부 실행되고 있는것을 볼 수 있습니다.

 

Pod의 상세한 정보를 확인하려면 아래 명령어를 입력합니다.

$kubectl describe pod [Pod 이름]

 

 

Pod의 생명주기

파드는 생성 부터 삭제까지의 과정에 생명 주기가 있습니다.

  • Pedning 
    쿠버네티스 시스템에 파드를 생성하는 중임을 뜻하며, 컨테이너 이미지를 다운로드 후 전체 컨테이너를 실행하는 상태입니다.
  • Running
    파드 안의 모든 컨테이너가 실행중인 상태를 의미합니다.
  • Succeeded
    파드 안 모든 컨테이너가 정상 실행 종료된 상태로 재시작 되지 않습니다
  • Failed
    파드 안 모든 컨테인너 중 정상적으로 실행 종료되지 않은 컨테이너가 있는 상태입니다.
  • Unknown
    파드 안의 상태를 확인 할 수 없는 상태이며, 보통 파드가 있는 노드와 통신할 수 없을 때 입니다.

감사합니다.

'DevOps > kubernetes' 카테고리의 다른 글

[Kubernetes] ReplicaSet  (0) 2024.05.09
Raft Consensus Algorithm  (0) 2024.04.17
 

Docker는 무엇일까?
도커는 2013년 Docker(구 dotCloud)에서 출시한 오픈 소스 컨테이너 프로젝트 입니다. 도커는 소프트웨어 컨테이너 내부에 있는 응용프로그램 배포를 자동화하는 오픈소스 도구 입니다.

요새 서버 환경들은 클라우드 환경으로 많이 사용하기 떄문에 서버를 구입하기보다는 사용 요금만 내고 가상 서버를 빌려 쓰게 되었습니다. 특히 물리서버를 구축하려면 상당한 시간이 걸립니다. 하지만 클라우드 환경에서는 서버들을 클릭 몇 번 만으로도 가상 서버를 만들 수 있습니다.

 

 

가상 머신
가상 머신은 편하긴 하지만 성능이 좋지 못한 단점이 있습니다. 지금까지 CPU에 가상화를 위한 기능들이 많이 추가되었지만 아직도 가상 머신은 물리 서버에 비해 속도가 느립니다.


가상 머신 자체는 완전한 컴퓨터라 항상 게스트 OS를 설치해야 합니다. 그래서 이미지 안에 OS가 포함되기 때문에 이미지 용량이 커질수밖에 없습니다.

 

 

컨테이너
컨테이너는 게스트OS를 설치하지 않습니다. 도커 이미지에 서버 운영을 위한 프로그램과 라이브러리만 격리해서 사용할 수 있습니다. OS자원은 호스트와 공유합니다.

컨테이너는 하드웨어를 가상화하는 계층이 없기 때문에 메모리 접근, 파일시스템, 네트워크 속도가 가상 머신에 비해 월등히 빠릅니다

 

container vs VM
어떤 환경일때 Container를 써야 맞는걸까요? 모든 가상환경에 컨테이너를 적용하기엔 아직 어렵다고 생각합니다. 배포가 없는 서버들 같은 경우 예를들면 메일서버나 AD서버, 파일서버엔 VM서버들이 더 적합하다고 생각합니다.

 


 

도커 기본적인 명령어

$ docker search centos

docker search 명령어로 docker hub에 있는 이미지를 검색 할 수 있습니다.
docker search <이미지 이름>

docker search

$ docker pull centos:latest

docker pull 명령어로 원하는 이미지를 받을 수 있습니다. 이때 latest 는 가장 최신 버전을 다운 받을 수있습니다.

docker pull centos:latest

이제 이미지를 다운 받았으니 목록을 출력해 볼까요?

image 명령어로 도커 이미지 확인하기

$ docker images

docker images 명령어는 모든 이미지 목록을 출력합니다. 이때 docker images만 명령하면 모든 이미지가 나오게 되고 docker images <운영체제 이름>을 하게되면 이름은 같지만 태그가 다른 이미지를 출력됩니다.

docker images centos

 

run 명령어로 컨테이너 생성하기

$ docker run -i -t --name centos centos /bin/bash

docker run 명령어는 컨테이너를 생성하는 명령어 입니다.
옵션 i,t 옵션을 사용하면 실행된 Bash셸에 입력 및 출력을 할 수 있습니다.
옵션 — name 을 사용하면 컨테이너 이름을 지정 할 수 있습니다.

docker run -i -t — name centos centos /bin/bash

 

PS 명령어로 컨테이너 목록 확인하기

$ docker ps

docker ps 명령어를 사용하면 실행되고 있는 컨테이너만 목록에 나오게 됩니다. 하지만 옵션 -a 를 붙여준다면 정지되어 있는 컨테이너까지 출력합니다.

docker ps -a

 

Attach 명령어로 컨테이너 접속하기

$ docker attach centos

docker attach <컨테이너 ID> 또는 <컨테이너 이름> 을 입력해서 컨테이너에 접속 할 수 있습니다.

이때 ctrl+p, ctrl+q 를 차례대로 입력하면 컨테이너를 정지하지않고 실행된 상태로 빠져나올수있습니다.

docker attach centos

 

exec 명령어로 외부에서 명령어 실행하기

$ docker exec centos echo "Hello world"

docker exec <컨테이너 이름> 또는 <컨테이너 ID> <명령어>를 사용하면 컨테이너에 접속하지 않고 명령어 실행이 가능합니다.

docker exec centos echo “Hello world”

 

start, stop 명령어로 컨테이너 멈추고 실행하기

$ docker start centos

start 명령어를 사용하면 멈춰있는 컨테이너를 다시 시작 할 수 있습니다.
docker start <컨테이너 이름>

$ docker stop centos

stop 명령어를 사용하면 실행되고 있는 컨테이너를 다시 시작 할 수 있습니다.
docker stop <컨테이너 이름>

docker start centos, docker stop centos

틀린부분은 지적 해주시면 감사하겠습니다 :D

감사합니다.

Terraform이란 ?
테라폼은 코드로 인프라를 관리 할 수 있는 도구입니다.
AWS, Azure GCP 등 Terraform 을 사용해 인프라를 만들고 변경하고
버전관리를 안전하고 효율적으로 사용 할 수 있습니다.

Terraform을 왜 사용할까요?
수 많은 서버들을 콘손들로 직접 생성한다면 엄청난 리소스가 소요 됩니다.

테라폼을 사용하면 쉽고 빠르게 인프라를 구성 할 수 있습니다.

Terraform 설치 방법
MAC OS 를 기준으로 설명하겠습니다.

$ brew install terraform

Terraform이 잘 설치 되어 있는지 확인합니다.

$ terraform -version

Terraform을 사용하기 전에 GCP를 관리하려면 서비스 계정 키값이 필요합니다.

아래에서 GCP 서비스 계정 키값을 만들어 보겠습니다. 먼저 API 및 서비스 탭으로 들어갑니다.

사용자 인증 정보로 들어가게 되면 [사용자 인증정보 만들기] 버튼이 있습니다. 이어서 [서비스 계정] 탭으로 들어갑니다.

 

 

Terraform 계정을 위해 생성하는 키 값이기 때문에 저는 Terraform-account로 생성하였습니다. 다른 서비스 계정 이름으로 하셔도 상관 없습니다.

키 만들기 버튼을 누르시면 우측에 키 만들기(선택사항)창이 뜨게 됩니다.
json 파일 형식으로 생성하고, 다운로드 받습니다.

Terraform을 실습할 파일 트리는 이렇습니다.

저는 이미 코드를 테스트해서 여러 파일이 있는데 main, provider, variable만 보시면 될 것 같습니다.


variable.tf
말 그대로 변수들을 모은 파일이라고 생각하시면 됩니다.
main.tf 에서만으로도 vm 인스턴스를 생성 할 수 있으나, 같은 인프라에서 재 사용하지 못 할 것 입니다. 변수파일을 생성 하면 코드를 재사용 하면 시간을 더 효율적으로 사용할 수 있습니다.

 


변수파일 코드를 작성할 때 구글 클라우드 SDK 가 있는데, 명령어 하나로
인스턴스 이미지, 머신 타입, 리전들을 리스트로 볼 수 있습니다.
SDK 설치 방법은 생략하도록 하겠습니다.

$gcloud compute image list

위 명령어를 터미널에 입력하면 구글 인스턴스 이미지 리스트를 출력합니다.

$ gcloud compute regions list

위 명령어는 Google cloud platform에 있는 리전들의 리스트를 출력합니다.

$ gcloud compute machine-types list | grep us-central1

위 명령어는 머신타입들의 리스트입니다. grep 을 통해서 리전별로 머신 타입들을 정렬 할 수 있습니다.


아래와 같이 main.tf 파일을 작성합니다.

 

이제 기본적으로 provider.tf, variable.tf, main.tf 파일을 생성했습니다.
필요한건 다 생성했으니, 한번 GCP에 생성되나 보면 됩니다.

$ terraform init

$ terraform plan

variable.tf 파일에서 instance_name 타입을 string으로 해놓았기 때문에
인스턴스 이름은 terraform plan 명령어 실행 후 직접 설정할 수 있습니다.

$ terraform apply

terraform apply 명령어로 인스턴스가 약 20초만에 생성되었습니다.
한번 GCP에 인스턴스가 생성되었는지 확인해 봅시다.

terraform이라는 인스턴스가 생성되었습니다.

마지막으로 클라우드 환경에서 인스턴스를 생성 할 때 왜 terraform을 쓸까 라는 생각이 들기도했다. 클라우드 콘솔을 직접 사용하면 더 빠르게 할 수 있는데, 하지만 terraform을 사용하면 여러개의 인스턴스를 직접 콘손로 생성하는것보다 코드로 빠르게 생성 할 수 있다. 그리고 깃허브를 사용해 버전관리가 가능하다. 라는 점에서 유용한 도구라고 생각한다.

감사합니다.

틀린부분은 지적 해주시면 감사하겠습니다 :D

 

 

 

[Terraform]GCP VM인스턴스 생성하기

Terraform이란 ? 테라폼은 코드로 인프라를 관리 할 수 있는 도구입니다. AWS, Azure GCP 등 Terraform 을 사용해 인프라를 만들고 변경하고 버전관리를 안전하고 효율적으로 사용 할 수 있습니다.

medium.com