1. CDN on GKE
How to build CDN on GKE ?
1. GKE에서 CDN 설정하는 법
GKE에서 Ingress로 노출될 때 backend에 대해서 CDN을 설정할 수 있습니다.
1.1 테스트용 Deployment 생성
kubectl create deploy chk-hn --image=sysnet4admin/chk-hn
2. 1.2 LB로 노출된 것에 대한 앱 성능
1.2.1 LoadBalancer로 노출
kubectl expose deploy chk-hn --port=80 --type=LoadBalancer --name=chk-hn-lb
1.2.2 LB Ext IP 확인 (IP는 안되는 걸로 변경함)
hj@cloudshell:~$ (poc) k get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
chk-hn NodePort 10.104.14.55 <none> 80:30964/TCP 22m
kubernetes ClusterIP 10.104.0.1 <none> 443/TCP 30m
lb-chk-hn LoadBalancer 10.104.10.17 34.n.n.n 80:32290/TCP 85s
1.2.3 리전을 다르게 2개의 VM 생성
hj@cloudshell:~ $ (poc) gcloud compute instances create oregon-test --zone us-west1-a
Created
[https://www.googleapis.com/compute/v1/projects/20210628/zones/us-west1-a/instances/oregon-t
est].
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
oregon-test us-west1-a n1-standard-1 10.138.0.2 34.v.v.v RUNNING
hj@cloudshell:~$ (poc) gcloud compute instances create japan-test --zone asia-northeast1-a
Created
[https://www.googleapis.com/compute/v1/projects/20210628/zones/asia-northeast1-a/instances/j
apan-test].
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP
STATUS
japan-test asia-northeast1-a n1-standard-1 10.146.0.5 34.v.v.v RUNNING
1.2.4 각 VM에서 한국 리전에 생성한 GKE pod의 LB 도달 성능 측정
From 일본
gcloud compute ssh japan-test --zone asia-northeast1-a
mz01-hj@japan-test:~$ curl -s -w 'Testing Website Response Time for
2
4. 1.3 Ingress로 노출된 것에 대한 앱 성능
1.3.1 Ingress를 위한 노드포트 생성
kubectl expose deploy chk-hn --type=NodePort --port=80
1.3.2 Ingress 생성 (w/ 코드)
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: chk-hn-ingress
spec:
backend:
serviceName: chk-hn
servicePort: 80
1.3.3 생성된 Ingress IP 확인
hj@cloudshell:~$ (poc) k get ing
NAME CLASS HOSTS ADDRESS PORTS AGE
chk-hn-ingress <none> * 34.g.g.g 80 37m
1.3.4 Ingress의 Backend에 CDN 설정
BACKEND=$(kubectl get ing chk-hn-ingress -o json | jq -j
'.metadata.annotations."ingress.kubernetes.io/backends"' | jq -j 'keys[0]')
gcloud compute backend-services update $BACKEND --enable-con
그림 1-1 CND을 enable한 후에 Cloud CDN 상태
4
5. 1.3.5 오레곤 VM에서 Ingress IP로 성능 테스트
mz01-hj@oregon-test:~$ curl -s -w 'Testing Website Response Time for
:%{url_effective}nnLookup Time:tt%{time_namelookup}nConnect
Time:tt%{time_connect}nAppCon Time:tt%{time_appconnect}nRedirect
Time:tt%{time_redirect}nPre-transfer
Time:t%{time_pretransfer}nStart-transfer
Time:t%{time_starttransfer}nnTotal Time:tt%{time_total}n' -o
/dev/null 34.g.g.g
Testing Website Response Time for :34.g.g.g
Lookup Time: 0.000026
Connect Time: 0.001129
AppCon Time: 0.000000
Redirect Time: 0.000000
5