티스토리 뷰

target/broker-1.0-SNAPSHOT.jar가 존재한다고 생각합니다. 

Docker 설정 

먼저 아래와 같이 Dockerfile 만들겠습니다. 

FROM openjdk:8
COPY target/broker-1.0-SNAPSHOT.jar /app.jar
EXPOSE 9000/tcp
ENTRYPOINT ["java", "-jar", "/app.jar"]

docker에 login하고 build 후 run해봅니다. 

docker login
docker build -t asia.gcr.io/test-142514/test-broker:v1 .

docker run -ti --rm -p 9000:9000 asia.gcr.io/test-142514/test-broker:v1

Docker Image GCR에 Push하기 

google cloud에 push합니다.

gcloud docker -- push asia.gcr.io/test-142514/test-broker:v1

Compute > Container Engine > Container Registry에서 확인이 가능해집니다.

GKE와 연동

그럼 우리 Application이 동작할 Cluster를 만들어봅시다. 

아래 화면에서 CREATE CLUSTER를 클릭하여 생성할수도 있지만 CLI로 만들어 보겠습니다. 

machine-type은 https://cloud.google.com/compute/docs/machine-types 에서 참고하세요.

gcloud container clusters create test-broker-cluster --num-nodes 2 \

--machine-type n1-standard-1 --zone asia-northeast1-a

kubectl을 사용하기 위해서 아래와 같이 component를 install해야 합니다. 

$ gcloud components install kubectl

WARNING: Accessing a Container Engine cluster requires the kubernetes commandline client [kubectl]. To install, run $ gcloud components install kubectl Creating cluster test-broker-cluster...done. Created [https://container.googleapis.com/v1/projects/test-142514/zones/asia-northeast1-a/clusters/test-broker-cluster]. kubeconfig entry generated for test-broker-cluster. NAME ZONE MASTER_VERSION MASTER_IP MACHINE_TYPE NODE_VERSION NUM_NODES STATUS test-broker-cluster asia-northeast1-a 1.7.8-gke.0 35.192.91.27 n1-standard-1 1.7.8-gke.0 2 RUNNING


kubectl run test-broker --image=gcr.io/test-142514/test-broker:v1 --port=9000

배포가 잘되었는지 확인해볼까요? 

$ kubectl get deployments

NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE test-broker 1 1 1 1 2m

$ kubectl get pods NAME READY STATUS RESTARTS AGE test-broker-540561889-jjl1s 1/1 Running 0 30m

자 그런데 여기까지 해서는 해당 ip와 port로 접근해서는 접속이 되지 않습니다. 

아래와 같은 절차로 External Traffic을 허용해줘야 합니다. 

kubectl expose deployment test-broker --type=LoadBalancer

개방된 External IP를 확인해서 해당 IP, Port로 Application을 호출해봅시다. 

⇒ kubectl get services NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes 10.7.240.1 <none> 443/TCP 49m test-broker 10.7.249.27 104.193.123.118 9000:30103/TCP 1m

GKE Scale Up

$ kubectl scale deployment hello-java --replicas=3
deployment "hello-java" scaled

$ kubectl get deployment
NAME         DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
hello-java   3         3         3            3           22m

Service Update 시 Roll-Out Deployment

docker build -t asia.gcr.io/test-142514/test-broker:v2 .
gcloud docker -- push asia.gcr.io/test-142514/test-broker:v2

$ kubectl set image deployment/test-broker test-broker=asia.gcr.io/test-142514/test-broker:v2

deployment "test-broker" image updated

Rollback

$ kubectl rollout undo deployment/test-broker


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

kubernetes pod의 redis-cli 접근하기  (0) 2017.11.23
pod restart하기  (0) 2017.11.23
Kubernetes 참고자료  (0) 2017.11.15
GCP Instance에 ssh 연결하기  (0) 2017.10.23
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함