다음과 같은 Qwiklabs 과정을 거치면서 배우고 한 내용들이다:
- Getting Started: Create and Manage Cloud Resources: Challenge Lab
Getting Started: Create and Manage Cloud Resources: Challenge Lab는 퀘스트에 있는 다른 Qwiklabs들을 실행하면서 배워온 내용을 간단하게 시험해보는 내용이다.
주어진 시간은 1시간
Task 1: Create a project jumphost instance
Make sure you:
- name the instance nucleus-jumphost
- use the default region/zone → us-east1-b
- use the machine type of f1-micro
- use the default image type (Debian Linux)
Jumphost instance가 뭔지 몰라서 쳐봤는데 다음과 같이 설명했다:
A jumphost is an intermediary host to a remote network. → A system on a network used to access and manage devices in a separate security zone.
즉 이 작업을 하는 것은 "중간 지점"을 만들어주기 위함이다.
방법은 간단하다. 지금까지 해왔던데로 VM Instance를 만들면 되는데, VM Instance Create에서 다음과 같은 작업만 하고 바로 생성을 누르면 된다.
Task 2: Create a Kubernetes service cluster
- Create a cluster (in the us-east1-b zone) to host the service
- Use the Docker container hello-app ('gcr.io/google-samples/hello-app:2.0') as a place holder, the team will replace the container with their own work later
- Expose the app on port 8080
여기서부터는 잘 기억이 안난다. 그래서 기존에 했던 Qwiklabs 들을 참고하면서 실행을 했다.
우선 default compute zone 을 us-east1-b로 해주어야 한다:
gcloud config set compute/zone us-central1-a
그 다음, kubernetes cluster을 만들어주어야 한다.
gcloud container clusters create nucleus-backend
cluster의 authentication credential들을 얻어야하므로,
gcloud container clusters get-credential nucleus-backend
Cluster에 Application을 Deploy 해주어야 한다
kubectl create deployment hello-app --image=gcr.io/google-samples/hello-app:2.0
※ 참고로 여기서 kubectl이 뭔지 궁금해서 찾아봤었다. kubectl 같은 경우, kubernetes cluster을 제어하기 위한 명령어이다. kubectl은 config 파일을 $HOME/.kube 에서 찾는다.
마지막으로, application을 port8080에 expose 시켜주어야한다.
kubectl expose deployment hello-app --type=LoadBalancer --port8080
Task 3: Setup and HTTP load balancer:
- Create an instance template
- Create a target pool
- Create a managed instance grou
- Create a firewall rule to allow traffic (80/tcp)
- Create a health check
- Create a backend service and attach the managed instance group
- Create a URL map and target HTTP proxy to route requests to your URL map
- Create a forwarding rule
조금 요구하는게 많다. 이 부분도 아직 처음 배우는 단계라 잘 몰라서, 이전에 했던 Qwiklabs들을 참고하면서 했다.
처음에는 모든 VM instance에서 사용될 startup script를 만들어주어야한다. 이 script가 startup에서 nginx server을 셋업시켜준다:
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을 만들어준다. (startup script를 이용함):
gcloud compute instance-templates create web-server-template \
--metadata-from-file startup-script=startup.sh
Target Pool을 이제 만들어준다:
gcloud compute target-pools create nginx-pool
Instance template을 이요해서 managed instance group을 만들어준다;
gcloud compute instance-groups managed create web-server-group \
--base-instance-name web-server \
--size 2 \
--template web-server-template \
--target-pool nginx-pool
이 size 2로 인해 nginx- 가 붙여진 2개의 VM instance가 생긴다.
방화벽을 이제 만들어준다:
gcloud compute firewall-rules create web-server-firewall --allow tcp:80
HTTPS load balancer을 만들기 전에, health check을 해야한다:
gcloud compute http-health-checks create http-basic-check
HTTP service를 define 해준다:
gcloud compute instance-groups managed \
set-named-ports web-server-group \
--named-ports http:80
Backend Service를 만들어준다:
gcloud compute backend-service create web-server-backend \
--protocol HTTP \
http-health-checks http-basic-check \
--global
Backend Service에 instance group을 넣어준다:
gcloud compute backend-services add-backend web-server-backend
--instance-group web-server-group \
--instance-group-region us-east1 \
--global
들어오는 요청들을 instances로 안내하는 URL map을 만든다:
gcloud compute url-maps create web-map \
--default-service web-server-backend
URL map으로 요청들을 안내한 타켓 HTTP 프록시를 설정한다:
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
지금 진행한 instance groups → backend service → url map→ target HTTPS proxy → forwarding rule은 다음과 같은 구조를 가지고 있다:
이 url map를 가지고 direct requests to a destination을 이루어낸다.
마지막으로 확인작업을 한다.
gcloud compute forwarding-rules list
이제는 끝이다. 다음과 같은 화면이 나타나면 성공이다.
이렇게 되는게 정상인데...
왜 나는 이런 현상이 나왔을까:
이유가 뭔지 아직도 못찾았다. 세번이나 시도를 하긴 했는데도 저렇게 된거라 무엇을 잘못했는지는 잘 모르겠다
아마도 잘못 친 것 같다.