컨테이너는 개발 및 배포 환경에서 유연성, 이식성, 확장성을 제공하며, 애플리케이션의 효율적인 관리를 가능하게 한다.
코드 및 소프트웨어를 실행하는 데 필요한 모든 것을 패키지로 묶은 가상화 기술.
IaaS 등을 사용하면서 시스템을 개발자가 원하는대로 구성하고 빌드할 수 있게 됐지만, 동시에 바로 이 지점에서 컨테이너의 필요성이 등장한다. 애플리케이션의 수요가 증가하고 VM의 크기와 부팅 시간이 커질수록 확장성과 비용 문제 발생한다.
📌 즉, 유연성에는 비용이 따르며 컨테이너는 이를 해결해준다.
컨테이너는 애플리케이션과 그 종속성을 하나로 묶어, 어떤 환경에서도 일관되게 동작하게 한다. 파일 시스템과 하드웨어에 제한적으로 접근하고, OS를 가상화해서 가상 머신보다 가볍고 빠르게 실행된다.
클라우드에서는 컨테이너가 유연성과 효율성을 극대화한다.
Kubernetes를 사용하면 컨테이너화된 애플리케이션을 쉽게 관리하고 확장할 수 있다. Kubernetes는 컨테이너를 여러 호스트에 배포하고, 마이크로서비스로 확장하고, 쉽게 배포, 출시, 롤백할 수 있는 오픈소스 플랫폼이다.
Kubernetes는 클러스터라는 노드 집합에 컨테이너를 배포하는 데 필요한 API 집합을 제공한다. 쿠버네티스 클러스터 시스템은 Control Plane
(제어 영역)과 컨테이너를 실행하는 Node
집합으로 나뉘어. 노드는 머신과 같은 컴퓨팅 인스턴스를 나타내고, Kubernetes는 이를 통해 애플리케이션을 관리해.
포드는 Kubernetes에서 생성하고 배포할 수 있는 최소 단위로, 하나 이상의 컨테이너를 둘러싸는 wrapper(그룹)이다. 포드는 컨테이너에 고유한 네트워크 IP와 포트 집합을 제공하고, 컨테이너 실행 방법을 제어하는 옵션도 제공한다.
Kubernetes의 포드에서 컨테이너를 실행하는 방법은 포드 내부에서 실행되는 컨테이너로 배포를 시작하는 kubectl run
명령어를 사용하는 것이다.
배포를 통해 포드의 복제본 그룹을 관리하고, 클러스터 외부에서 접근할 수 있도록 서비스를 설정할 수 있다. service
는 포드 집합에 endpoint를 주어 외부에서 IP 주소를 통해 접근할 수 있게 만든다.
Kubernetes의 진정한 강점은 선언적 방식
에서 나타난다. 원하는 상태를 구성 파일로 제공하면, Kubernetes가 이를 실현하는 것이다. 배포 구성 파일을 업데이트하고 적용하면, Kubernetes가 알아서 적절한 수의 복제본을 실행하기 때문에, 특정 노드에 문제가 생기더라도 포드가 계속 실행된다.
GKE는 Google에서 호스팅하는 관리형 Kubernetes 서비스로, 여러 Compute Engine
인스턴스를 그룹화하여 클러스터를 형성한다. (환경을 제공)
클러스터 생성 방법
Google Cloud 콘솔 또는 Cloud SDK에서 제공하는 gcloud
명령어를 사용하여 GKE 클러스터를 만들 수 있다.
gcloud container clusters create k1
지금까지는 Google Cloud를 소개하고 Cloud에서
가상 머신
,네트워크
,스토리지
, e컨테이너`를 사용하는 것에 관한 옵션과 이점을 살펴보았고, 마지막으로 Cloud에서의 애플리케이션 개발에 대해 정리해볼 예정이다.
Cloud Run
은 웹 요청 또는 Pub/Sub 이벤트를 통해 스테이트리스(Stateless) 컨테이너를 실행하는 관리형 컴퓨팅 플랫폼이다. 즉, 서버리스 환경에서 인프라 관리 작업이 필요 없어서 개발자가 애플리케이션 개발에 집중할 수 있음.
기반 기술: Kubernetes 기반 개방형 API 및 런타임 환경인 Knative를 사용.
호환성: Google Cloud
, GKE
, 또는 Knative
가 실행되는 곳에서 관리 가능.
고유한 HTTPS URL 제공: 컨테이너 이미지 배포 시 자동으로 HTTPS URL 반환.
Cloud Run 개발자 워크플로는 직관적인 3단계 프로세스로 이루어진다.
애플리케이션 작성: 선호하는 프로그래밍 언어로 애플리케이션 작성, 웹 요청 수신 대기.
컨테이너 빌드 및 패키징: 애플리케이션을 컨테이너 이미지로 빌드 및 패키징.
Cloud Run에서는 컨테이너 이미지를 다음 두 곳에서 가져올 수 있다:
Docker Hub
Artifact Registry: Artifact Registry는 Google Cloud의 프라이빗 Docker 저장소
배포: Artifact Registry
로 푸시된 컨테이너 이미지를 Cloud Run이 배포.