Google Cloud Platform

3 minute read

Google Cloud Platform

GCP란 https://www.edureka.co/blog/what-is-google-cloud-platform/

지역 https://cloud.google.com/about/locations/

GCP 시작하기

https://cloud.google.com/free

zone = google cloud data center peoject 과금단위 12개

orgainization -> foldr -> project -> resource

gcp interacting / web console, cloud shell cloud sdk, mobile app, rest api

iass: 인프라제공 pass: 응용프로그램 개발환경 제공 sass: 응용프로그램 제공 https://medium.com/google-cloud/gcp-the-google-cloud-platform-compute-stack-explained-c4ebdccd299b

compute services

• app engine

app enigne은 서버 애플리케이션을 관리해주는 engine으로 서버 프로비저닝을 관리해줍니다. (PASS - 코드만 있으면 됨) 표준환경과 가변환경이 있습니다. https://cloud.google.com/appengine/docs

프로비저닝: https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%EB%B9%84%EC%A0%80%EB%8B%9D

• compute engine

compute engine은 linux, window 가상 머신을 만들고 실행하는 engine입니다. (IASS) https://cloud.google.com/compute/docs

- 디스크
vm 실행을 위한 디스크 공간입니다. - 스냅샷
스냅샷은 영구 디스크의 백업입니다. (백업에 필요한 정보만 담고 있기에 디스크보다 용량이 작습니다.)
- 이미지
이미지는 vm을 실행하는데 필요한 os 및 application이 포함된 디스크의 복제본입니다.
https://cloud.google.com/compute/docs/images?hl=ko
- 인스턴스 템플릿
인스턴스 템플릿은 vm 인스턴스를 만들기 위한 템플릿입니다. 템플릿을 통핸 같은 vm 인스턴스 여러개를 만들 거나, 인스턴스 그룹을 만들 수 있습니다.
https://cloud.google.com/compute/docs/instance-templates/?hl=ko
- 인스턴스 그룹
인스턴스 그룹은 부하분산 및 자동확장/복구를 위한 vm 인스턴스의 집합입니다.
https://cloud.google.com/compute/docs/instance-templates/?hl=ko

• kubernetes engine

kubernetes로 컨테이너화된 서버 애플리케이션을 관리합니다. (IASS & CASS) https://cloud.google.com/kubernetes-engine/docs

• cloud functions

서버 애플리케이션 없이, cloud 이벤트 기반으로 실행되는 함수입니다. (PASS, FASS) https://cloud.google.com/functions/docs

storage services

• cloud storage (bucket인듯)

다양한 데이터를 저장할 수 있는 저장소입니다. https://cloud.google.com/storage/docs?hl=ko storage 종류 standard nearline coldline

가격 https://cloud.google.com/storage/pricing?hl=ko&_ga=2.111727620.-1811355943.1631629246&_gac=1.262478334.1631716187.Cj0KCQjws4aKBhDPARIsAIWH0JUXkL3ysTUGd1q7AP9fqEZVC8jSDFzaNUWWZKqBhuLJTDEvEIX7yoEaAtj4EALw_wcB#asia

• persistent disk

(cloud storage랑 차이가 모지…) 블록 저장소..? https://cloud.google.com/compute/docs/disks?hl=ko gce vm에 붙어있음 (서버애플리케이션실행을 위한 저장공간이라…)

• cloud filestore?

다양한 데이터를 저장할 수 있는 저장소입니다. https://cloud.google.com/filestore/docs?hl=ko

network services

https://cloud.google.com/network-tiers/docs/overview?hl=ko

• load balancer

https://cloud.google.com/load-balancing/docs?hl=ko load balancer 종류 http(s) load balancer network loadbalancer 위 둘다 external/internal 로드밸러ㄴ서러 분리됨

• hybrid connectivity

vm의 사설 네트워크망입니다. https://cloud.google.com/vpc/docs?hl=ko

identity management

IAM(Identity Access Management)은 누가(identity) 어떤 Access(role) 권한을 가지는 지 관리하는 것을 의미합니다. https://cloud.google.com/iam/docs

members[who] roles[what] permission[which]

• identity

- google account
개인 계정(user)입니다.
- sevice account
application 또는 vm에 속한 계정입니다.
- google group
개인 계정(user)들의 집합입니다.
- g suite domain
- cloud identity domain
- allAuthenticatedUsers
- allUsers

• permission

rosource에 허용 가능한 작업을 정의합니다. <service>.<resource>.<verb>
pubsub.subsriptions.consume
compute.instances.insert

• role

role은 permission의 집합입니다. primitive role - owner
- editor
- viewer

predefined role -roles/pubsub.publisher -roles/compute.admin -roles/storage.objectAdmin

custom role -collection of assorted set of permissions -fine-grained access to resources

database services

• cloud sql

rdbms(mysql, postgresql)를 관리하는 cloud 저장소/서버입니다. https://cloud.google.com/sql/docs

• cloud bigtable

nosql을 관리하는 cloud 저장소/서버입니다. https://cloud.google.com/bigtable/docs

• cloud spanner

https://cloud.google.com/spanner/docs

• cloud memorystore

in-memory store(redis)를 관리하는 cloud 저장소/서버입니다. https://cloud.google.com/memorystore/docs/redis

https://medium.com/@jwlee98/gcp-dns-%EB%B6%80%ED%84%B0-%ED%95%98%EB%82%98%EC%94%A9-google-cloud-%EB%A1%9C-%EC%84%9C%EB%B9%84%EC%8A%A4-%ED%95%B4%EB%B3%B4%EA%B8%B0-2%ED%83%84-google-cloud-load-balancing-gclb-56151d9efe0e

gcp 로드밸런싱 https://ozofweird.tistory.com/entry/GCP-%EC%9B%90%EB%8D%B0%EC%9D%B4-%EB%AC%B4%EC%A4%91%EB%8B%A8-%EB%B0%B0%ED%8F%AC-%ED%99%98%EA%B2%BD?category=942810

gcp 로드밸런싱 https://www.bespinglobal.com/gcp-autoscaling-webserver/

gcp로 infra 만들기

🔎 ubuntu 기반으로 설명됩니다.

• compute engine 만들기 및 설정

- vm 만들기
vm instance에서 compute engine을 만듭니다.

🔎 ssh 설정하기
1. ssh key 만들기 아래 명령어를 실행하면, 비밀키(gcp_key)와 공개키(gcp_public_key)가 만들어집니다.

$ ssh-keygen -t rsa -f ~/ssh/gcp_key -C skunkworksflightcontrol@gmail.com
# $ ssh-keygen -t rsa -f [키를 만들 경로] -C [GCP계정@gmail.com]

2. 공개키 등록
메타데이터에 공개키를 추가합니다.

3. 원격 접속
gcp 계정

ssh -i gcp_key skunkworksflightcontrol@34.64.241.214
# $ ssh -i [공개키] [GCP계정] @[vm ip 주소]

메타데이터에 공개키를 추가합니다.

📔 참고자료 • gcp ssh 설정 https://kibua20.tistory.com/100

- docker 설치하기 - centos https://docs.docker.com/engine/install/centos/ 이전에 설치된 docker를 정리(제거)합니다.

$sudo yum remove docker \
                docker-client \
                docker-client-latest \
                docker-common \
                docker-latest \
                docker-latest-logrotate \
                docker-logrotate \
                docker-engine

yum-utils를 설치합니다.

$sudo yum install -y yum-utils

docker 저장소를 추가합니다.

$sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

docker를 설치합니다.

 sudo yum install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker

- ubuntu https://docs.docker.com/engine/install/ubuntu/ 기존에 있는 docker를 삭제합니다.

$ sudo apt-get remove docker docker-engine docker.io containerd runc
$ sudo apt-get update
$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
$ echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

- docker compose 설치하기 https://docs.docker.com/compose/install/

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose

- node 설치하기

- yarn 설치하기

- jenkins 설치하기 jenkins는 docker 이미지로 설치합니다.

docker pull jenkins/jenkins

🔎 docker private repository에서 image를 가져온다면, docker 저장소에 로그인합니다.

dokcker login --username [dokcer hub 계정]

- snapshot 만들기 - image 만들기 - instance template 만들기 - instance group 만들기

• network

- load balancer 만들기

kms https://ichi.pro/ko/google-cloud-kmsleul-sayonghayeo-bimil-eul-bohohago-gwanlihaneun-bangbeob-70233660978329 kms https://console.cloud.google.com/marketplace/product/google/secretmanager.googleapis.com?returnUrl=%2Fsecurity%2Fsecret-manager%3Fauthuser%3D2%26hl%3Dko%26project%3Dperceptive-net-326014&authuser=2&hl=ko&project=perceptive-net-326014

https://puzzle-puzzle.tistory.com/entry/%EA%B5%AC%EA%B8%80-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%ED%94%8C%EB%9E%AB%ED%8F%BC-GCP-load-balancing-and-autoscailing

쿠버네티스 https://ithub.tistory.com/249

gcp https://www.edureka.co/blog/google-cloud-services/

vpc

방화벽은 vpc별로 설정해야, 외부에서 접속가능

redis

vpc가 같은 인스턴스에서 redis에 접근 가능

https://cloud.google.com/free?hl=ko 공짜

Updated: