해당 포스팅을 진행 하기 전에, 먼저 아래 포스팅을 참고한다.

2020/06/29 - [Cloud Platforms] - [Cloud Platforms] - Google Cloud Platform (GCP) 기본

 

[Cloud Platforms] - Google Cloud Platform (GCP) 기본

GCP란? GCP는 구글의 퍼블릭 클라우드 서비스이다. 퍼블릭 클라우드는 여러 업체가 있는데, 마이크로소프트 Azure, 아마존 AWS 구글 GCP 등 여러가지가 있다. 보통 이 3업체가 Big3 이다. 여기서는 GCP에

watch-n-learn.tistory.com

Google Container Registry

아무래도 도커 이미지는 인프라 구성요소에서 애플리케이션 개발 환경  실행 모듈  여러가지를 포함하므로 용량이 큰 경우가 많다. 그래서 이미지들을 직접 온프레미스 환경에서 관리하는 것보다 클라우드환경에서 관리하는게 더 효과적일 수 있다.

 

Google Container Registry는 구글에서 제공하는 Docker Image를 Private하게 관리할 수 있게 도와주는 API이다. 이 서비스는 GCP의 오브젝트 스토리지 서비스인 Google Cloud Storage를 데이터 저장소로 사용한다. GCR을 사용하여 도커허브 또는 Private Registry와 동일하게 docker image push / pull 명령어를 사용하여 이미지를 사용할 수 있다.

 

이를 통해 프로그래머는 스토리지 운용이라는 추가 작업에서 해방될 수 있고, 라이브러리의 버전을 포함한 구성 관리가 가능하므로 로컬이든 온프레미스든 클라우드든 상관없이 똑같은 환경에서 작업을 처리할 수 있다. 또한 Private하므로 자사에서 개발한 것들을 간편하게 공유할 수 있다.

 

 

 

1. Google Container Registry API 사용 설정하기

메뉴에서 "API 및 서비스 대시보드" 를 선택한다.

 

여기서는 GCP에서 사용할 수 있는 모든 API들을 관리한다. 현재 내가 쓰고 있는 API 리스트를 확인하고, 여러 설정들을 확인할 수 있다. 현재 어떤 API도 쓰고 있지 않으며, 새로운 API 사용설정을 위해 "API 및 서비스 사용 설정" 을 클릭한다.

 

API 라이브러리 화면이다. 여기서 여러가지 API들을 찾을 수 있다. 구글 맵스, 머신러닝, 데이터베이스, 개발자 도구, 유투브 등등 매우 다양하다. 여기서 "google container registry" 로 검색한다. 

 

검색된 Google Container Registry API를 선택한다.

 

해당 API에 대한 설정과 상세설정이 나온다. 여기서 사용설정을 선택한다. 아래 캡쳐에선 "관리" 라고 되어있는데, 이미 설정한 화면이다.

 

 

2. Google Cloud SDK 설치

Google Cloud SDK는 GCP 서비스를 관리하기 위한 툴과 라이브러리를 모아놓은 것이다. Google Cloud SDK는 웹브라우저 상의 Cloud Console, Cloud Shell 을 사용하지 않고 임의의 클라이언트 PC에서 GCP를 사용할 수 있게 해준다. Google Cloud SDK는 윈도우,맥,리눅스에서 작동하며 실행에는 파이썬 2.7이 필요하다.

 

여기 예시는 레드햇 리눅스를 예시로 들었다. Google Cloud SDK를 도커 서버에 설치하고, 서버의 이미지를 Google Container Registry에 업로드할 수 있다. 운영체제별 설치방법은 다음을 참고한다. (https://cloud.google.com/sdk/docs/?hl=ko#rpm ) 

 

(1) Google Cloud  SDK 설치 레포지토리 구성 및 설치

# 레포지토리 파일 생성
vi /etc/yum.repos.d/google-cloud.sdk.repo

# 아래 내용 삽입 후 저장
[google-cloud-sdk]
name=Google Cloud SDK
baseurl=https://packages.cloud.google.com/yum/repos/cloud-sdk-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
       https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg

# 설치
yum install -y google-cloud-sdk

(2) Google Cloud SDK 실행

다음 명령을 실행한다. 해당 명령은 현재 서버와 glcoud를 동기화하기 위한 로그인을 수행한다.

gcloud init

아래와 같이 밑줄로 된 부분을 복사해서 브라우저에 붙여넣기 한다. (또는 해당 운영체제가 GUI가 설치되어 있다면 자동으로 firefox(레드햇기준)가 실행되어 자동으로 로그인 정보 요청을 한다. 

구글 로그인 화면이 나오고, GCP를 사용하고 있는 계정 정보를 입력하면 아래와 같이 나온다.

허용을 선택하면, 브라우저에서는 아래와 같이 성공적으로 인증되었다고 뜨며, 프롬프트에서는 아래와 같이 프로젝트를 선택하라고 한다.

이제 원하는 프로젝트를 선택한다. 이후 zone을 선택하라고 하는데, 원하는 zone을 선택하면 된다. (asis쪽으로 선택하면 되는 듯 하다)

 

3. GCR에 이미지 업로드하기

- GCR에 올리려면 이미지 명을 다음과 같은 형식으로 해야 한다.  "GCR호스트명/프로젝트아이디/이미지명"

- 예시 : asia.gcr.io/cubernetes-project/ubuntu-test:latest

 

# 참고 : GCR 호스트명

GCR(google container registry) 호스트명은 이미지의 저장 위치에 따라 다음 3개중 하나이다. 아래처럼 Container Registry의 설정 부분에서 확인할 수 있다. 

- gcr.io 기본

- us.gcr.io 미국

- eu.gcr.io 유럽

- asia.gcr.io 아시아

(1) 이미지를 업로드하기 위해 GCR 설정에 맞춘 이름으로 이미지에 대해 태그를 설정한다.

docker tag ubuntu:16.04 asia.gcr.io/cubernetes-project/ubuntutest:latest

 

(2) gcloud 명령으로 해당 이미지를 push 한다.

gcloud docker -- push asia.gcr.io/cubernetes-project/ubuntutest:latest

- GCR에서 해당 이미지를 확인할 수 있다.

 

4. GCR에 업로드 된 이미지를 내 도커서버로 다운로드 받기

- docker와 마찬가지로 pull 명령을 사용한다.

gcloud docker -- pull asia.gcr.io/cubernetes-project/ubuntutest:latest

이미지 확인

 

'Cloud Platforms' 카테고리의 다른 글

[Cloud Platforms] - Google Cloud Platform (GCP) 기본  (0) 2020.06.29

GCP란?

GCP는 구글의 퍼블릭 클라우드 서비스이다. 퍼블릭 클라우드는 여러 업체가 있는데, 마이크로소프트 Azure, 아마존 AWS 구글 GCP 등 여러가지가 있다. 보통 이 3업체가 Big3 이다. 여기서는 GCP에 대해서 간단하게 알아본다.

 

모든 클라우드 서비스들은 저마다의 강점이있는데, GCP는 다른유투브나 지메일 같은 구글 자사의 서비스를 제공하기 위해 구축된 기반과 동일한 기반을 사용할 수 있다는 강점이 있다. 특히 컨테이너를 사용한 웹 애플리케이션 실행 기반을 구축하기 위한 서비스들과 머신러닝으로 대표되는 대규모 데이터를 분산 환경에서 사용하여 머신러닝을 위한 서비스들이 많다.

 

또한 GCP는 무료 체험판으로 300$의 무료 크레딧을 준다. (2020년 6월 기준) 크레딧을 받으려면 카드정보를 입력해야 하며, 돈은 나가지 않는다. 크레딧을 다 쓰거나 등록 후 12개월 경과하면 무료체험은 종료된다. 클라우드 서비스의 비용 지불은 마치 게임 종량제 과금과 비슷하다. 단순하게 말해 시스템 자원 (CPU, Memory, Disk 등) 또는 플랫폼에 대해 과금을 한다고 생각하면 된다. CPU 1개를 쓰면, 시간당 오백원이다. 뭐 이런 느낌이다.

 

물론 종량제 말고도 다른 요금제가 있을 것이다. 큰 회사에서 계약하는 건이라면 세일즈 매니저를 통해 여러 요금제를 확인할 수 있다.

 

 

GCP 접속 및 계정등록

cloud.google.com/

 

클라우드 컴퓨팅 서비스  |  Google Cloud

데이터 관리, 하이브리드 및 멀티 클라우드, AI 및 머신러닝 등 Google의 클라우드 컴퓨팅 서비스로 비즈니스 당면 과제를 해결하세요.

cloud.google.com

- cloud.google.com 들어가서 절차에 따라 가입한다. "무료로 시작하기" 선택

- 신용카드를 등록해야 한다. 카드정보는 신원확인과 로봇에 의한 등록이 아니라는 것을 확인할 목적이다.

- 계정에 의도하지 않은 요금이 발생하지 않도록 무료체험이 끝나면 계정이 일시적으로 정지된다.

- 유료 계정으로 업그레이드하려면 gcp 콘솔 상단에 업그레이드 버튼을 클릭하여 수동으로 업그레이드 해야 한다.

- GCP에서는 무료로 쓸수 있는 몇가지 서비스가 있다. (Google App Engine 무료 프레임, Google Cloud Storage 대한 데이터 전송 등) 최신정보는 계속 바뀌므로 공식사이트에서 확인해야 한다.

 

 

 GCP 기본 화면

 위의 모든 계정 생성 작업을 완료하고 로그인을 하면 위와 같은 화면을 볼 수 있다. 프로젝트 선택은, 한 GCP 계정에 여러가지 서비스를 올려 쓰다 보면 헷갈리므로, 각 프로젝트 단위로 서비스를 만들 수 있다. 즉 어떤 서비스를 만드려면 프로젝트부터 만들어야 한다.

 

왼쪽 메뉴는 GCP에서 제공하는 서비스 및 사용자 설정을 위한 메뉴이다. [컴퓨팅] 윗부분은 사용자 메뉴이며, 결제, 보안, 지원 외 여러가지 기본 설정들을 할 수 있다. 시작하기 를 누르면, 기본적인 설명과 가장 사람들이 많이 쓰는 서비스를 보여준다.

 

고정하면 여기에 표시됩니다. 는 자주 쓰는 메뉴를 즐겨찾기 하는 것이다. 예를들어 Compute Engine을 주로 쓴다면 해당 부분을 고정할 수 있다. Compute Engine 메뉴에 마우스 커서를 갖다대면, 압정 표시가 있는데 해당 표시를 클릭하면 된다.

 

API 및 서비스 는 꽤 중요한데, GCP에서 제공하는 여러가지 API들을 확인할 수 있다. 이러한 API들을 개발에서 사용하거나, 도커 서비스에서 사용하는 등 여러가지 방법으로 사용할 수 있다.

 

서비스들은 여러가지가 있다. 컴퓨팅, 네트워킹, 저장소, 빅데이터, 인공지능, 솔루션 등 여러가지가 있는데, 이러한 모든 서비스들은 기반 지식이 있어야만 사용 가능하다. 그냥 단순하게 "나 클라우드 쓸래!" 이러고 쓰는 것이 아니다. 아래처럼 저장소의 SQL 이라던지, 컴퓨팅의 Kubernetes Engine이라던지, 뭐든 사전에 지식이 있어야 한다. 클라우드 서비스는 말그대로 원래는 직접 구매해서 써야 하지만 그렇지 않고 "Cloud"로 제공하는 것이기 때문이다.

대시보드

 

 

 

 

GCP에서 사용할 수 있는 도커 관련 서비스들 예시

* Google Cloud Container Builder (API)

Dockerfile을 바탕으로 도커 이미지를 GCP 상에서 작성하기 위한 커맨드 툴 이다. Dockerfile을 저장하는 소스 레포지토리에 저장된 도커파일로부터 이미지를 빌드하고, Container Registry로 자동으로 업로드할 수 있다. 소스 리포지토리는 Google Cloud Source Repository, Github, Bitbucket 사용 가능하다. GCB로 작성한 도커 이미지 저장 위치는 GCP의 오브젝트 스토리지 서비스인 Google Cloud Storage(유럽/아시아/미국리전)을 지정할 수 있다. 스토리지에 액세스할 사용자를 지정할 수 있어 프라이빗한 환경에서 이미지를 안전하게 관리할 수 있다.

 

* Google Kubernetes Engine

GKE는 도커 컨테이너를 관리하는 풀 매니지드 서비스이다. 사용자가 정의한 CPU나 메모리 같은 인프라 요구사항을 바탕으로 컨테이너 클러스터에 스케줄링하여 자동으로 관리한다. GKE는 오픈소스 컨테이너 오케스트레이션 툴인 쿠버네티스를 사용한다. 알아서 쿠버네티스 환경을 만들어서 컨테이너를 오케스트레이션 할 수 있게 해준다. 또한 애플리케이션 요구 변화에 맞춰 컨테이너에 할당되는 클러스터 리소스나 컨테이너 클러스터의 크기를 조정할 수 있다. GKE는 쿠버네티스의 kubectl 명령이나 클라우드 콘솔에서 조작할 수 있다. GCP VM 또는 로컬 호스트에서 쿠버네티스를 직접 구축하면 어렵지만, 이 메뉴에서 쿠버네티스를 구축하면 아주 간단하게 구축할 수 있다.

 

* Google Container Registry (GCR)

도커이미지는 용량이 커서 온프레미스 환경에서 관리 어려움이 발생할 수 있다. GCR은 도커 이미지를 GCP의 제품 안에서 관리할 수 있는 Private Registry 이다. Docker registry V2 API를 이용하여 자신의 개인 레지스트리를 만들고 도커 이미지의 업로드(푸쉬) 다운로드(풀) 을 할 수 있다. 도커 이미지의 저장 위치는 GCP가 제공하는 오브젝트 스토리지 서비스인 Google Cloud Storage를 사용한다. 이 때 유럽, 아시아, 미국 지역별 cloud storage 버킷 중 compute engine 인스턴스와 지리적으로 가까운 것을 지정함으로써 다운로드 시간을 단축시킬 수 있다. 또한 이미지의 아카이브를 cloud storage nearline 버킷에 저장할수도 있다.

 

 

그 외 GCP에서 사용 할 수 있는 여러 서비스들

 * Google Cloud Storage

구글에서 제공하는 오브젝트 스토리지 서비스. 여러가지 타입의 스토리지가 있고, 어떤 서비스에 사용해야 할지 (엑세스가 많은 데이터, 엑세스 빈도가 적은 재해복구용 데이터 등) 따라 스토리지 타입을 정해서 사용한다. 더 이상 자세한 설명은 생략한다.

 

* Google Compute Engine

가상머신을 만들 수 있는 서비스이다. 스토리지, CPU, RAM 등에 따라 과금된다.

 

* 그 외

Firebase, Google Maps API 등을 포함해 앱, 웹사이트, 서비스를 구축하고 실행하는 데 필요한 여러가지 기능들이 있다.

 

 

 

프로젝트

GCP 는 프로젝트라 부르는 단위로 시스템을 관리한다. 프로젝트는 사용자가 특정 조건에 맞춰 (예를들어 업무별로) GCP의 리소스를 모아 놓은 것으로, GCP 계정과 연결되어 프로젝트에 등록된 계정만 프로젝트 안의 리소스를 관리할 수 있있다. GCP내에서 작업을 하는 경우 필수로 프로젝트를 먼저 생성해야 한다.

 

사용중인 프로젝트를 종료하면 그 안에서 이용하던 리소스 (가상머신 인스턴스, 쿠버네티스 클러스터 등)는 모두 삭제되며, 요금은 일절 청구되지 않는다. 그래서 GCP에서는 일시적으로 테스트용으로 프로젝트를 만들고, 테스트 끝나면 프로젝트별로 종료를 하는 사용법이 가능하다.

 

 

* 프로젝트 생성하기

 

1. 콘솔 상단 아래 붉은색 네모칸을 클릭한다. 해당 부분이 현재 프로젝트를 보여준다.

 

2. 오른쪽의 새 프로젝트를 선택한다.

 

3. 프로젝트 생성

프로젝트 이름을 설정하고 만들면 된다.

 

# 참고 : 프로젝트 명명

gcp의 프로젝트는 프로젝트ID라는 UUID로 식별한다. 이 식별자는 영어소문자, 숫자, 대시로 이루어졌다.  프로젝트 작성시 입력한 프로젝트명을 바탕으로 프로젝트ID가 자동으로 생성되는데, 기존 프로젝트와 중복되지 않는다면 임의의 값을 설정할수도 있다.

 

또한 프로젝트명에 대해서는 기존의 프로젝트와의 중복을 신경쓰지 않고 자유롭게 설정할 수 있다. gcloud 명령이나 API 요청의 옵션에는 프로젝트명이 아니라 프로젝트ID를 식별자로써 전달해야 한다. 일단 프로젝트를 작성했으면, 프로젝트명과 ID는 바꿀 수 없다. 소규모 시스템에서는 크게 중요하지 않지만, 대규모 시스템에서는 여러 프로젝트를 효율적으로 관리하기 위해 프로젝트명,ID 명명 규칙을 정하는게 좋다. 예를 들어 기업명 식별자, 시스템명 식별자, 테스트용인지 실제사용인지 구분하는 플래그 등

 

다 만들어지면 만든 프로젝트를 선택할 수 있으며, 해당 프로젝트에 대한 대시보드 및 활동을 확인할 수 있다.

 

* 프로젝트 삭제

 

1. 아래 "새 프로젝트" 왼쪽에 기어모양 폴더를 클릭한다.

2. 원하는 프로젝트를 선택하고 상단에 삭제 버튼으로 삭제할 수 있다.

삭제하면 프로젝트 전체에 액세스할 수 없게 되어 요금이 청구되지 않는다. 또한 프로젝트의 소유자는 30일 이내에 삭제를 취소할 수 있다.

 

 

GCP를 사용하는 여러가지 방법

1. cloud console(https://console.cloud.google.com/)을 사용하여 웹 브라우저의 GUI사용

위에서 보여준 브라우저에서 접속해서 사용하는 일반적인 방법

 

2. cloud SDK를 설치하고 gcloud 명령을 사용

원하는 서버에 cloud SDK를 설치한 후 glcoud 명령으로 GCP를 컨트롤할 수 있다. cloud SDK 설치는 다음 링크를 참고한다.

2020/07/01 - [Cloud Platforms] - [Cloud Platforms] Google Container Registry API 사용하기

 

3.GCP 웹브라우저의 cloud shell을 사용하여  gcloud 명령 사용

cloud shell은 클라이언트 단말에 cloud SDK 등의 툴을 설치하지 않아도 gcloud 명령을 사용할 수 있는 웹브라우저 어플리케이션이다. 또한 cloud shell에는 java, go, python 등의 주요 언어 개발환경이 도입되어 있고 파일의 업로드/다운로드 기능과 코드 에디터드 제공되어 브라우저에서 파일을 편집할 수 있다.  참고 : https://cloud.google.com/shell/ 

 

아래와 같이 붉은 아이콘을 클릭하면, 아래와 같이 프롬프트가 나온다. 여기서 GCP를 컨트롤할 수 있다.

 

* cloud shell의 주요 툴

linux shell

bash, sh

google sdk, tool

google app engine sdk , google cloud sdk, gsutil for cloud storage

텍스트 에디터

emacs, vim, nano

빌드와 패키지를 위한 툴

gradle, make, maven, npm, nvm, pip

버전관리

git, mercurial

기타

docker, ipython, mysql 클라이언트, gRPC 컴파일러

 

 

'Cloud Platforms' 카테고리의 다른 글

[Cloud Platforms] Google Container Registry API 사용하기  (0) 2020.07.01

+ Recent posts