Google Cloud Platform
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 공짜