Side Project/PCA 자격증 준비

Challenge Lab 2) Deploy and Manage Cloud Environments with Google Cloud

hj_. 2020. 7. 14. 01:17

PCA 자격증 취득을 목표한지 어느덧 2주차 

퇴근하고 부랴부랴하니 실습한게 머리에 잘 남아있지 않다..ㅋㅋ

그래서 이번주는 지금까지 배운 내용을 정리해보려고 한다.

 

퀵랩에서 단순히 따라하는 실습만 하는 줄 알았는데,, 

이번에 모집한 스터디에 속한 실습은 난이도가 있었다.

따라하는 실습 뒤에 마지막엔 시험이 기다리고 있었다.

 

스터디 링크 : inthecloud.withgoogle.com/certification-preparation/register.html

(링크가 언제까지 유효할지는 모르겠다. 작성일 2020-07-14 기준으로는 아직 신청 가능하다.) 

 

Google Cloud Certification

 

inthecloud.withgoogle.com

용어 및 기초개념 :

  1) VPC(Virtual Private Cloud) : 사용자의 클라우드 계정 전용 가상 네트워크

 

 

Topics tested:

  • Complete the production application environment.
  • Ensure monitoring and alerts enabled on key development components.
  • Test the Spinnaker CI/CD deployed environment is working as expected.

 

 

[Start Lab] : 테스트 환경 구축에 약 13분정도 소요된다

: kraken-prod-vpc, kraken-prod-subnet은 기본 세팅에 생성 되어있다.

 

Task 1: Create the production environment (네트워크 환경 구축)

 

메뉴 : [Compute Engine] > [VM instance] > jumphost라는 이름으로 vm이 기본세팅으로 생성되어 있다.

 

1) jumphost SSH 접속

// Step1 : prod-network.yaml 파일 존재여부 확인
projectID@kraken-jumphost:~$ cd /work/dm
projectID@kraken-jumphost:/work/dm$ ls

// Step 2: pro-network.yaml 파일 내 SET_REGION을 제시된 us-east1로 세팅
projectID@kraken-jumphost:/work/dm$ sed -i s/SET_REGION/us-east1/g prod-network.yaml

// Step 3: 
projectID@kraken-jumphost:/work/dm$ gcloud deployment-manager deployments create prod-network \
> --config=prod-network.yaml
projectID@kraken-jumphost:/work/dm$ gcloud config set compute/zone us-east1-b

/* Step 4: kraken-prod cluster 생성, 
 조건 1) Node 2개
 조건 2) 네트워크 설정 kraken-prod-vpc
 조건 3) 네트워크 서브넷 kraken-prod-subnet */
projectID@kraken-jumphost:/work/dm$ gcloud container clusters create kraken-prod \
> --num-nodes 2 
> --network kraken-prod-vpc 
> --subnetwork kraken-prod-subnet

/* Step 5: kraken-prod 클러스터는 외부 IP 주소가 엔드포인트로 설정, 
VPC 환경에서는 Private 네트워크이므로 외부에서 접속하기 위한 Endpoint 설정이 필요하다.*/
projectID@kraken-jumphost:/work/dm$ gcloud container clusters get-credentials kraken-prod

// Step 6: Frontend, Backend 인스턴스 생성
projectID@kraken-jumphost:/work/dm$ cd /work/k8s
projectID@kraken-jumphost:/work/k8s$ for F $(ls *.yaml); \
> do kubectl create -f $F; done



 

Task 2: Setup the Admin instance 

 

Once you create the kraken-prod-vpc, you will need to add an instance called kraken-admin, a network interface in kraken-mgmt-subnet and another in kraken-prod-subnet.

/* Step 1: 
  조건 1) Region us-east1
  조건 2) Zone us-east1-b */
projectID@kraken-jumphost:work/k8s$ gcloud config set compute/zone us-east1-b

/* Step 2: Setup the Admin instance
  조건 1) 2개의 서브넷을 구성할 것
  조건 2) kraken-mgmt-subnet, kraken-prod-subnet */
projectID@kraken-jumphost:work/k8s$ gcloud compute instances create kraken-admin \
> --network-interface="subnet=kraken-mgmt-subnet" 
> --network-interface="subnet=kraken-prod-subnet"

 

You need to monitor kraken-admin and if 

 

 조건 1) CPU utilization is over 50% for more than a minute

 조건 2) you need to send an email to yourself, as admin of the system.

 (noti 이메일 설정 안해서 2번 풀었다...)

 

메뉴 : [Monitoring] > [Alert] 

 

 

Task 3: Verify the Spinnaker deployment

(Continuous Integetion & Continuous Development, Tool : Spinnaker)

The previous architect set up Spinnaker in kraken-build-vpc.

Please connect to the Spinnaker console and verify that the built resources are working.

 

To access the Spinnaker console use Cloud Shell and kubectl to port forward the spin-deck pod from port 9000 to 8080 and then use Cloud Shell's web preview.

 

 

- Cloud Shell 에서 아래 명령어 수행

gcloud config set compute/zone us-east1-b

gcloud container clusters get-credentials spinnaker-tutorial

DECK_POD=$(kubectl get pods --namespace default \
-l "cluster=spin-deck" -o jsonpath="{.items[0].metadata.name}")

kubectl port-forward --namespace default $DECK_POD 8080:9000 >> /dev/null &

 

You must test that a change to the source code will result in the automated deployment of the new build. You should pull the sample-app repository to make the changes. Make sure you push a new, updated, tag.

 

- Cloud Shell 에서 아래 명령어 수행

gcloud config set compute/zone us-east1-b
gcloud source repos clone sample-app
cd sample-app
touch a
git config --global user.email "$(gcloud config get-value account)"
git config --global user.name "Student"
git commit -a -m "change"
git tag v1.0.1
git push --tags

 

Cloud Shell에서 Preview Web Port 8080(카메라 렌즈모양..?) 을 선택하면 Spinnaker 관리 페이지에 접속할 수 있다.

 

- Spinnaker > Application > Pipline > Deploy(Build가 정상적으로 완료되면 주황색 표시) Continue 버튼 클릭

 

 

 

@오탈자나 잘못된 내용이 있으면 댓글 부탁드립니다.

 

Reference: Qwiklab, Deploy and Manage Cloud Environments with Google Cloud: Challenge Lab

https://www.qwiklabs.com/focuses/10417?parent=catalog