쿠버네티스는 구글이 만든 서비스이기 때문에 특성이 같다. 그러나 현재 다양한 벤더들이 사용하기 때문에 독립적 성격을 가진다.
컨테이너: 리소스 효율이 높고 이동성이 우수한 독립형 패키지
이미지: 애플리케이션 실행에 필요한 종속성, 환경설정들을 포함하는 패키지
컨테이너 실행 단계
- 컨테이너 이미지 작성: 도커(Docker) 이미지가 가장 일반적으로 사용된다. 필요한 경우, Dockerfile을 작성해서 이미지를 빌드한다.
- 컨테이너 오케스트레이션 플랫폼(Kubernetes) 설정으로 컨테이너 자동 확장 및 배포 설정 Ex) GKE
- 컨테이너 클러스터 구성
- 컨테이너 배포: 이미지를 사용해서 애플리케이션 클러스터에 배포
- 모니터링: 컨테이너 실행되면 오케스트레이션 플랫폼으로 컨테이너 상태, 로그, 성능 등을 모니터리하고 관리한다.
여러 레이어로 구조화된 컨테이너
컨테이너들은 여러 레이어로 구조화되고 Dockerfile에 이미지 명령어가 실행될 때 마다 기본 이미지 레이어(R/O)가 생성되어 최종적으로 flatted 이미지가 만들어진다.
Dockerfile
# ubuntu 18.04 기반의 도커 이미지를 기반으로 새로운 이미지를 빌드한다
FROM ubuntu:18.04
# 현재 디렉토리의 Dockerfile 모든 파일과 폴더를 컨테이너 내 /app 경로로 복사
COPY . /app
# /app 경로에 있는 소스 코드를 빌드하고 컴파
RUN make /app
# 파일들을 /app 경로로 복사하고,
# /app 경로 내의 소스 코드를 make 명령을 사용하여 빌드한 후,
# 컨테이너가 실행될 때, /app/python/app/app.py 파일을 실행
CMD python/app/app.py
컨테이너는 계속 띄워진 상태로 접근할 수 있어야한다. 따라서 foreground로 실행되어야 한다.
구글 클라우드에 컨테이너를 마이그레이션 하려면 다음 요소들을 사용한다.
- docker: docker 명령어를 사용해서 컨테이너를 빌드한다.
- Cloud Build: 고유 컨테이너를 빌드한다.
- Artifact Registry: 컨테이너화된 소프트웨어를 다운로드한다. *Container Registry도 이용할 수 있으나실무에서는 Artifact Registry를 권장한다.
컨테이너 띄우는 순서
- Docker: Docker 명령어를 사용하여 컨테이너를 빌드합니다. Docker는 컨테이너화된 애플리케이션을 만들고 실행하기 위한 플랫폼입니다. Docker를 사용하면 Dockerfile을 작성하고, 해당 파일을 사용하여 컨테이너 이미지를 빌드하고 실행할 수 있습니다. 일반적인 Docker 명령어에는 docker build, docker run, docker push 등이 있습니다.
- Cloud Build: Google Cloud Platform(GCP)의 서비스인 Cloud Build는 고유 컨테이너 이미지를 빌드하는 데 사용됩니다. Cloud Build는 클라우드에서 빌드, 테스트 및 배포를 자동화하기 위한 관리형 서비스입니다. Cloud Build는 소스 코드 저장소(Git 또는 버전 관리 시스템)와 연결하여 빌드 구성 파일을 사용하여 컨테이너 이미지를 생성합니다.
- Container Registry: Container Registry는 컨테이너화된 소프트웨어 이미지를 저장하고 관리하는 서비스입니다. Google Cloud Platform의 Container Registry는 Docker 컨테이너 이미지를 저장하는 데 사용됩니다. Container Registry는 프라이빗 이미지 저장소로 사용되며, 보안 및 액세스 제어 기능을 제공합니다. Artifact Registry는 Google Cloud의 권장 서비스로서, 일반적으로 컨테이너 외에도 다양한 패키지 유형을 저장하고 관리하는 데 사용됩니다.
결론: Docker를 사용하여 컨테이너를 빌드하고, GCP의 Cloud Build를 사용하여 고유 컨테이너를 빌드하며, Container Registry 또는 Artifact Registry를 사용하여 컨테이너화된 소프트웨어 이미지를 저장하고 다운로드한다.
'Cloud > GCP' 카테고리의 다른 글
[GCP] GKE 모니터링 로깅 솔루션 (0) | 2023.07.14 |
---|---|
[GCP] GKE 배포, 로드밸런서 서비스 배포, 카나리아 배포 (0) | 2023.07.12 |
[GCP] 구글 클라우드의 리소스 관리 : 리소스 계층 및 리소스 관리 방법 (0) | 2023.07.10 |
[GCP] 클라우드 컴퓨팅과 구글 클라우드 (0) | 2023.07.10 |