Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- codepresso
- AWS Route53
- MongoDB 참조
- SpringProject
- AWS VPC
- VPC EC2
- 몽고DB
- codepreosso
- 코드프레소
- MongoDB DataModel
- JPA연관관계
- 레디스설치
- ubuntu 배포
- AWS NAT gateway
- EC2 배포
- 소프트웨어 개발과 테스트
- EC2 생성
- AWS 요금
- MongoDB
- aws ec2
- AWS #CloudTrail #AWS로그
- SrpingBoot
- AWS
- Amazon Web Service
- Datamodel
- 스프링 게시판
- Loard Balancer
- AWS NAT
- AWS CloudTrail
- MongoDB Reference
Archives
- Today
- Total
정환타 개발노트
GKE를 활용한 웹어플리케이션 배포 본문
GKE를 활용한 배포
이번에는 gke를 통해 웹 어플리케이션을 배포하려 한다.
1. GCP에서 console로 이동 후 새 프로젝트 생성 후 Cloud shell 활성화
2. Cloud shell 에서 Dockerfile과 애플리케이션을 가져온다. 필자는 git에 모두 업로드
#cloud shell
git clone 자신의 repository 프로젝트
cd 프로젝트명
3. google cloud config에 등록된 프로젝트 ID 를 등록하고 이미지를 빌드해준다.
$ export PROJECT_ID="$(gcloud config get-value project -q)"
$ docker build -t gcr.io/${PROJECT_ID}/<project-name>:<tag> .
4. Container Registry에 이미지를 업로드한다.
먼저 Container Registry에 대한 인증을 진행한다.
$ gcloud auth configure-docker
$ docker push gcr.io/${PROJECT_ID}/<project-name>:<tag>
다음으로 Google cloud platform에서 Container Registry를 검색 후 들어간다.
Push가 정상적으로 처리 되었다면 다음과 같이 이미지가 보인다.
5. 컨테이너 클러스터 생성하기
먼저 노드가 3개인 클러스터를 생성한다.
gcloud container clusters create jungstagram-cluster --num-nodes=3 --region=asia-northeast2
다음으로 static ip를 생성한다.
$ gcloud compute addresses create jungstagram-static-ip --region asia-northeast2
$ gcloud compute addresses list
6. 애플리케이션 배포
먼저 설정 파일을 생성한다.
#프로젝트 단(DOCKERFILE 위치)
vi jungstagram-service-static-ip.yaml
apiVersion: v1
kind: Service
metadata:
name: jungstagram
labels:
app: jungstagram-app
spec:
selector:
app: jungstagram-app
tier: web
ports:
- port: 80
targetPort: 8080
type: LoadBalancer
loadBalancerIP: "<위에서 생성한 static ip>"
vi jungstagram-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: jungstagram
labels:
app: jungstagram
spec:
selector:
app: jungstagram
tier: web
template:
metadata:
labels:
app: jungstagram
tier: web
spec:
containers:
- name: jungstagram-app
image: gcr.io/jungstagram/jungstagram:v1
ports:
- containerPort:8080
vi jungstagram-ingress-static-ip.yaml
apiVersion: extensions/vibetal
kind: Ingress
metadata:
name: jungstagram
annotations:
kubernetes.io/ingress.global-static-ip-name: jungstagram-static-ip
labels:
app: jungstagram
spec:
backend:
serviceName: jungstagram-backend
servicePort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: jungstagram-backend
labels:
app: jungstagram
spec:
type: NodePort
selector:
app: jungstagram
tier: web
ports:
- port: 8080
targetPory: 8080
containers:
- name: jungstagram-app
image: gcr.io/jungstagram/jungstagram:v1
ports:
- containerPort:8080
다음으로 yaml 파일을 적용해준다.
kubectl apply -f jungstagram-deployment.yaml # deployments 를 설정해준다.
$ kubectl create -f jungstagram-service-static-ip.yaml # 서비스를 생성
$ kubectl apply -f jungstagram-ingress-static-ip.yaml # ingress 적용
설정이 완료되면 이전에 생성한 static ip를 이용해 접속하여 테스트한다.
'DevOps' 카테고리의 다른 글
Docker-compose를 이용한 다중 컨테이너 실행(Dockerfile 활용) (0) | 2021.02.27 |
---|---|
Kubernetes의 아키텍처에 대하여 (0) | 2020.04.08 |
Kubernetes(k8s)에 대하여 (0) | 2020.04.08 |
Docker/Jenkins를 활용한 웹서버 자동 배포 & Docker Image 자동 배포 (2) | 2020.04.03 |
Jenkins를 활용한 빌드&배포(Spring Boot) (0) | 2020.02.25 |
Comments