'Server/GCP'에 해당하는 글 3건

IaaS PaaS SaaS

Server/GCP 2019. 5. 23. 21:14


IaaS (Infrastructure as a Service)

PaaS (Platform as a Service)

SaaS (Software as a Service)


셋다 주로 가상의 클라우드 환경에서 사용하는 용어들이다. 


 IaaS  는 개발할 수 있는 기반 즉, 서버, 스토리지, 네트워크 등의 인프라들을 가상화하여, 인프라를 쉽게 사용할 수 있도록 서비스 형태로 구축해 놓은 시스템을 말한다. AWS EC2 나 구글의 Compute Engine 등이 IaaS 에 속한다. 


 PaaS  는 어플리케이션에 필요한 개발, 실행 등을 통합하여 관리할 수 있게 하는 플랫폼을 말한다. 관련 리소스 들의 유지관리를 할 필요가 없으며 어플리케이션 로직에만 집중할 수 있게 하는 시스템으로 AWS BeansTalk, 구글의 App Engine 등이 PaaS 에 속한다. 


 SaaS  는 웹을 통해 어플리케이션에 접속하여 서비스를 바로 이용할 수 있게끔 만든 시스템을 말한다. 오피스 프로그램, 파일 스토리지 등 주로 기존에는 다운로드 받고 PC 에 설치해서 사용하던 소프트웨어를 요즘은 웹에서 로그인만으로 대부분 누릴 수 있으며 이러한 것들을 SaaS 라고 한다.




WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

Google Cloud Platform 에서 쿠버네티스를 운영하기 위한 방법으로 Kubernetes Engine 과 Kubernetes API 를 사용하여 어플리케이션을 배포 및 관리 할 수 있다. 간단하게 쿠버네티스를 이용하여 어플리케이션을 테스트 해보자.


GKE(Google Kubernetes Engine) 를 사용하여 쿠버네티스 클러스터 생성

kubectl 를 사용하여 Docker 컨테이너를 배포 및 관리

쿠버네티스의 Deployment 와 Service 를 사용하여 마이크로 서비스로 어플리케이션 분리



1. 구성 연결


GCP 콘솔의 APIs & services 에서 Kubernetes Engine API 와 Container Registry API 이 활성화 되어 있는지 체크하고, Cloud Shell 이나 Cloud SDK 를 사용하여 GCP 계정, 프로젝트, zone 설정 등을 확인한다.


> gcloud config list



2. 클러스터-노드 생성


> gcloud container clusters create bootcamp --num-nodes 5 --scopes "https://www.googleapis.com/auth/projecthosting,storage-rw"


NAME      LOCATION       MASTER_VERSION  MASTER_IP     MACHINE_TYPE   NODE_VERSION   NUM_NODES  STATUS

bootcamp  us-central1-a  1.11.7-gke.12   35.202.79.78  n1-standard-1  1.11.7-gke.12  5          RUNNING


위의 명령으로 클러스터(bootcamp) 와 node 가 5개 생성된다. --scopes 인수는 나중에 사용할 프로젝트 호스팅과 Google Cloud Storage API 에 대한 액세스를 제공한다.


> kubectl get nodes

NAME                                      STATUS    ROLES     AGE       VERSION

gke-bootcamp-default-pool-654208f7-2pc5   Ready     <none>    8m        v1.11.7-gke.12

gke-bootcamp-default-pool-654208f7-4hbc   Ready     <none>    8m        v1.11.7-gke.12

gke-bootcamp-default-pool-654208f7-9wxw   Ready     <none>    8m        v1.11.7-gke.12

gke-bootcamp-default-pool-654208f7-qf9k   Ready     <none>    8m        v1.11.7-gke.12

gke-bootcamp-default-pool-654208f7-x9vz   Ready     <none>    8m        v1.11.7-gke.12


GCP 콘솔에서 확인하고 싶다면 클러스터는 [Kubernetes Engine > Cluster], 노드는 [Compute Engine > VM Instances] 에서 확인할 수 있다. 아래 예제처럼 GCP 콘솔에서 직접 클러스터를 생성할 수도 있다.






3. 어플리케이션 배포


> kubectl create deployment nginx --image=nginx:1.10.0

deployment.apps/nginx created


> kubectl get pods -o wide

NAME                     READY   STATUS    RESTARTS  IP          NODE

nginx-7d79bd4478-86289   1/1     Running   0         10.48.1.5   gke-bootcamp-default-pool-654208f7-4hbc


위 명령으로 nginx 컨테이너를 담은 파드가 생성되고 노드에 배치됐다.



4. 서비스 생성 (외부IP 노출)


> kubectl expose deployment nginx --port 80 --type LoadBalancer

service/nginx exposed


> kubectl get services

NAME         TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)        AGE

kubernetes   ClusterIP      10.51.240.1     <none>          443/TCP        18m

nginx        LoadBalancer   10.51.250.242   34.66.113.107   80:32693/TCP   1m


위 명령으로 LoadBalancer 타입의 서비스를 생성하여 nginx 컨테이너를 외부에서 접근할 수 있게 한다. 생성된 External-IP 와 port 는 서비스가 유지되는 동안만 유효하다. (External-IP 생성에 일정 시간이 소요될 수 있음)



5. pod 수 확장


> kubectl scale deployment nginx --replicas 3

deployment.extensions/nginx scaled


> kubectl get pods -o wide

NAME                     READY   STATUS    RESTARTS  IP          NODE                                      NOMINATED NODE

nginx-7d79bd4478-86289   1/1     Running   0         10.48.1.5   gke-bootcamp-default-pool-654208f7-4hbc

nginx-7d79bd4478-j6wql   1/1     Running   0         10.48.2.4   gke-bootcamp-default-pool-654208f7-9wxw

nginx-7d79bd4478-zznhd   1/1     Running   0         10.48.3.5   gke-bootcamp-default-pool-654208f7-2pc5


위 명령은 생성해 놓은 nginx 배포(deployment) 의 pod 수를 3 개로 늘린다. 마스터는 요청에 따라 적절한 노드를 찾아 2개의 파드를 각각 추가로 배치한다. 트래픽이 많거나 적을 경우 위와 같이 파드 수를 늘리거나 줄일 수 있다.



6. 어플리케이션 테스트


> curl http://<External IP>:80





7. 삭제


파드나 서비스를 더 이상 사용하지 않을 경우 아래와 같이 삭제한다.


> kubectl delete deployment nginx

deployment.extensions "nginx" deleted


> kubectl get pods

No resources found.


> kubectl delete service nginx




WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

Google Cloud SDK

Server/GCP 2019. 4. 2. 22:02

GCP 의 핵심 도구인 Google Cloud SDK 는 GCP 에 호스팅 중인 컴퓨팅 리소스와 어플리케이션을 관리할 수 있는 도구이다. 이 도구를 사용하는 이유는 GCP 콘솔에 접속하지 않고 로컬에서 바로 GCP 의 서비스들을 사용할 수 있다는 것이다. gcloud 명령을 사용하면 Compute Engine 의 VM 인스턴스/네트워크/방화벽/디스크 등의 생성, 시작, 관리가 가능하고 인스턴스에 ssh 로 접속할 수도 있다.



Windows 설치





gcloud 초기화


설치가 끝나면 Google Cloud SDK Shell 을 시작하고 SDK 를 초기화 해야 한다. SDK 초기화란 구글 계정의 인증 정보를 사용하여 GCP 에 접근이 가능하도록 설정하는 작업이다. 


> gcloud init


위 명령을 실행하면 브라우저에 구글 계정 로그인 화면이 나타나고 로그인 후에는 Google Cloud SDK 앱이 GCP 리소스를 관리할 수 있도록 접근을 허용한다. 그 다음엔 프로젝트 목록에서 연결할 프로젝트를 선택하고 기본 Region 과 Zone 을 설정한다. (가장 가까운 곳은 Tokyo 리전이다 : asia-northeast1)


Pick cloud project to use:

 [1] ace-ellipse-186706

 [2] api-project-527566519947

 [3] gcp-test-209108

 [4] Create a new project

Please enter numeric choice or text value (must exactly match list

item):  3


Do you want to configure a default Compute Region and Zone? (Y/n)?  y


Which Google Compute Engine zone would you like to use as project

default?

If you do not specify a zone via a command line flag while working

with Compute Engine resources, the default is assumed.

...

 [32] asia-northeast1-b

 [33] asia-northeast1-c

 [34] asia-northeast1-a

...

Please enter numeric choice or text value (must exactly match list

item):  34


모든 설정이 끝났으면 활성화 된 구성(configuration) 을 확인할 수 있다.


> gcloud config list

[compute]

region = asia-northeast1

zone = asia-northeast1-a

[core]

account = ggamzzak__@gmail.com

disable_usage_reporting = True

project = gcp-test-209108


Your active configuration is: [default]


처음 초기화를 진행하며 생성된 구성(configuration) 의 이름은 default 이다. 


추후 프로젝트나 리전 등의 구성을 수정할 수도 있다.  gcloud config set 


> gcloud config set project [PROJECT]

> gcloud config set compute/zone us-east1-b



다중 구성


다른 계정이나 프로젝트에 대한 구성(configuration) 을 더 추가하거나 삭제할 수도 있다.  gcloud config configurations 


> gcloud config configurations create [NAME]

> gcloud config configurations delete [NAME]


구성(configuration) 간에 전환도 가능하다.


> gcloud config configurations list

> gcloud config configurations activate [configuration name]




WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,