Cloud/GCP

Google Cloud Essentials Challenge Lab

달빛궁전- 2023. 1. 26. 11:28

GCP Qwkilab의 Google Cloud Essentials:Challenge Lab 챌린지 랩이다.

💡
작업 1: 프로젝트 jumphost 인스턴스 만들기

프로젝트에 대한 유지보수를 실행하기 위해 이 인스턴스를 사용할 것입니다.

요구사항:

  • 인스턴스 이름을 nucleus-jumphost-*** (으)로 지정합니다.
  • f1-micro 머신 유형을 사용합니다.
  • 기본 이미지 유형(Debian Linux)을 사용합니다.

jumphost (host)생성을 요청하는 것

프로젝트를 생성할 곳으로 변경하고

gcloud config set project qwiklabs-gcp-04-a8858df420c7

예제 : gcloud compute instances create instance --machine-type n1-standard-2 --zone [your_zone]

실제 : gcloud compute instances create nucleus-jumphost-251 --machine-type f1-micro --zone us-west4-b

💡
작업 2: Kubernetes 서비스 클러스터 만들기

프로젝트에서 만들 수 있는 리소스에는 한도가 있습니다. 예상한 결과를 얻지 못한 경우 또 다른 클러스터를 만들기 전에 이 클러스터를 삭제하세요. 삭제하지 않으면 실습이 종료되며 계정이 차단될 수 있습니다. 계정 차단을 해제하려면 Qwiklabs 지원팀에 문의해야 합니다.

팀이 Kubernetes에서 실행되는 서비스를 사용할 애플리케이션을 빌드하고 있습니다. 다음 작업을 수행해야 합니다.

  • 서비스를 호스팅할 클러스터(us-east1-b 영역)를 만듭니다.
  • Docker 컨테이너 hello-app(gcr.io/google-samples/hello-app:2.0)을 자리표시자로 사용하세요. 팀에서 나중에 컨테이너를 팀의 작업으로 대체할 것입니다.
  • 앱을 포트 8081 에 노출시킵니다.

cluster와 resource가 위치할 compute zone을 지정

gcloud config set compute/zone us-west4-b

cluster을 생성

gcloud container clusters create nucleus-cluster

cluster에 대한 권한 얻기

gcloud container clusters get-credentials nucleus-cluster

Docker container중 Hello-app를 place-holder(자리표시자)로 생성 kubectl명령어를 이용해서 배포한다.

kubectl create deployment hello-server --image=gcr.io/google-samples/hello-app:2.0

이후에 Lab에서 요청하는대로 (포트번호가 작성되어 있음) 노출한다.

kubectl expose deployment hello-server --type=LoadBalancer --port 8082

💡
작업 3: HTTP 부하 분산기 설정하기

사이트는 nginx 웹 서버를 통해 서비스되지만, 내결함성을 지닌 환경을 제공하려고 합니다. 2개의 nginx 웹 서버로 구성된 관리형 인스턴스 그룹이 있는 HTTP 부하 분산기를 만드세요. 다음 코드를 사용하여 웹 서버를 구성합니다. 팀에서 나중에 이를 팀의 구성으로 대체할 것입니다.

프로젝트에서 만들 수 있는 리소스에는 한도가 있으므로 관리형 인스턴스 그룹에 인스턴스를 2개 이상 만들면 안 됩니다. 2개 이상 만들 경우 실습이 종료되며 계정이 차단될 수 있습니다.

cat << EOF > startup.sh #! /bin/bash apt-get update apt-get install -y nginx service nginx start sed -i -- 's/nginx/Google Cloud Platform - '"\$HOSTNAME"'/' /var/www/html/index.nginx-debian.html EOF

Instance template 생성

gcloud compute instance-templates create nginx-template --metadata-from-file startup-script=startup.sh

Instance group 생성

gcloud compute target-pools create nginx-pool

instance group에 intacne들 생성

gcloud compute instance-groups managed create nginx-group \
         --base-instance-name nginx \
         --size 2 \
         --template nginx-template \
         --target-pool nginx-pool

instances 확인

gcloud compute instances list

외부에서 80으로 접속하도록 firewall rule생성

gcloud compute firewall-rules create www-firewall --allow tcp:80

gcloud compute firewall-rules create allow-tcp-rule-780 --allow tcp:80

상태체크 (instance가 제대로 동작하는지 체크)

gcloud compute http-health-checks create http-check

http서비스를 만들고 포트를 매핑한다.

gcloud compute instance-groups managed \
       set-named-ports nginx-group \
       --named-ports http:80

gcloud compute backend-services create nginx-backend \
      --protocol HTTP --http-health-checks http-check --global

백엔드 서비스에 위에서 만든 instance들을 추가한다.

gcloud compute backend-services add-backend nginx-backend \
    --instance-group nginx-group \
    --instance-group-zone us-wast4-b \
    --global

URL맵을 만들고, URL맵에 요청을 라우팅할 대상 HTTP프록시를 만든다.

gcloud compute url-maps create web-map \
    --default-service nginx-backend
gcloud compute target-http-proxies create http-lb-proxy \
    --url-map web-map

전달(forwarding rule)설정

gcloud compute forwarding-rules create http-content-rule \
        --global \
        --target-http-proxy http-lb-proxy \
        --ports 80

이번실습하면서 느끼 것은 아직까지 나는 GCP console로 접속해서 GUI로 하는 것이 더 직관적이고 편하다. 명령어로 하는게 정확하지만, 옵션 명령어가 많아서 그런지 옵션도 GUI화면에서 보면 설명이 되어있어 알 수 있는데, 좀 답답했다. 쉘스크립트를 좋아하는데도 좀 어려웠다. 어째든 주된 목적은 인스턴스 생성, Kubernetes생성(배포), 부하분산(인스턴스그룹까지 포함)을 구성해보라는 것이었고, 괜찮은 실습이었다.


Uploaded by N2T

'Cloud > GCP' 카테고리의 다른 글

App Engine  (0) 2023.02.01
Cloud RUN  (0) 2023.02.01
GKE  (0) 2023.02.01
Compute Engine  (0) 2023.01.20
GCP 키 관리(KMS, EKM, CMEK)  (0) 2023.01.17
CloudShell  (0) 2023.01.17
VPC Network  (0) 2023.01.17