티스토리 뷰
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
- MongoDB
- 은전한닢
- git
- spring #lombok
- PubSub
- docker
- pycharm
- pymongo
- Python
- Redis
- GCP
- scrapy
- PIP
- Paw
- IntelliJ
- AWS
- MacOS
- TDD
- xpath
- zsh
- X-Pack
- ansible-container
- Netty
- kubernetes
- docker-machine
- mecab
- Elasticsearch
- Spring Boot
- boot2docker
- Ansible
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |