Minikube 실행
$ minikube start --driver=podman --container-runtime=cri-o
Minikube 배포 확인
$ kubectl get node
$ kubectl get pods -n kube-system
CoreDNS 스크립트 적용
$ cd ~/edu-msa-file
$ chmod +x coredns-apply.sh
$ ./coredns-apply.sh
CoreDNS 적용 확인
$ kubectl get cm coredns -n kube-system -o yaml
Minikube IP 주소 조회
$ minikube ip
Redis 배포 준비
$ vim ~/edu-msa-file/Kubernetes/redis-msa-ui.yaml
${REDIS_MSA_UI}를 "30801"로 수정
Redis 배포
$ cd ~/edu-msa-file/Kubernetes/
$ kubectl apply -f redis-msa-ui.yaml
MySql 배포 준비
$ vim ~/edu-msa-file/Kubernetes/mysql-msa-board.yaml
${MYSQL_MSA_BOARD}을 "30501"로 수정
$ vim ~/edu-msa-file/Kubernetes/mysql-msa-comment.yaml
${MYSQL_MSA_COMMENT}을 "30601"로 수정
$ vim ~/edu-msa-file/Kubernetes/mysql-msa-user.yaml
${MYSQL_MSA_USER}을 "30701"로 수정
MySql 배포 및 DB 구축 (board, comment, user)
$ cd ~/edu-msa-file/Kubernetes/
$ kubectl apply -f mysql-msa-board.yaml -f mysql-msa-comment.yaml -f mysql-msa-user.yaml
MySql 배포 확인
$ kubectl get pods
Board DB 접속, DB 구축
# kubectl exec -it ${POD_NAME} -- /bin/bash
#조회한 파드의 이름을 아래와 같이 입력하시면 됩니다.
예시) $ kubectl exec -it mysql-msa-board-85bb55fb4f-gpj9f -- /bin/bash
# mysql -u root -p
Enter password: password
mysql> CREATE DATABASE msa_board default CHARACTER SET UTF8;
mysql> USE msa_board;
mysql> CREATE TABLE `TB_BOARD` (
`board_seq` int(11) NOT NULL AUTO_INCREMENT,
`board_title` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`board_text` mediumtext COLLATE utf8_unicode_ci,
`write_user_id` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
`write_user_name` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
`use_yn` varchar(1) COLLATE utf8_unicode_ci DEFAULT 'Y',
`create_dt` datetime NOT NULL,
`update_dt` datetime NOT NULL,
PRIMARY KEY (`board_seq`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
> exit
# exit
Comment DB 접속, DB 구축
# kubectl exec -it ${POD_NAME} -- /bin/bash
#조회한 파드의 이름을 아래와 같이 입력하시면 됩니다.
예시) $ kubectl exec -it mysql-msa-comment-694d68d4ff-562wk -- /bin/bash
# mysql -u root -p
Enter password: password
mysql> CREATE DATABASE msa_comment default CHARACTER SET UTF8;
mysql> USE msa_comment;
mysql> CREATE TABLE `TB_COMMENT` (
`comment_seq` int(11) NOT NULL AUTO_INCREMENT,
`board_seq` int(11) NOT NULL,
`comment` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`write_user_id` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
`write_user_name` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
`use_yn` varchar(1) COLLATE utf8_unicode_ci DEFAULT 'Y',
`create_dt` datetime NOT NULL,
`update_dt` datetime NOT NULL,
PRIMARY KEY (`comment_seq`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
> exit
# exit
User DB 접속, DB 구축
# kubectl exec -it ${POD_NAME} -- /bin/bash
#조회한 파드의 이름을 아래와 같이 입력하시면 됩니다.
예시) $ kubectl exec -it mysql-msa-user-6c5499bbb5-29skb -- /bin/bash
# mysql -u root -p
Enter password: password
mysql> CREATE DATABASE msa_user default CHARACTER SET UTF8;
mysql> USE msa_user;
mysql> CREATE TABLE `TB_USER` (
`user_seq` int(11) NOT NULL AUTO_INCREMENT,
`user_id` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
`user_passwd` varchar(256) COLLATE utf8_unicode_ci NOT NULL,
`user_name` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
`use_yn` varchar(1) COLLATE utf8_unicode_ci DEFAULT 'Y',
`create_dt` datetime NOT NULL,
`update_dt` datetime NOT NULL,
PRIMARY KEY (`user_seq`),
UNIQUE KEY `id_key` (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
> exit
# exit
🚨 (참고) 실습 시 유의사항
VM 재시작 시 CoreDNS 스크립트 적용, Mysql DB 재구축 필요
JDK 8 다운로드
eGovFrameDev 다운로드
API 소스 다운로드
edu-msa-ui, edu-msa-zuul, edu-msa-user, edu-msa-comment, edu-msa-board
API 소스 파일 다운로드프로젝트 추가 후 설정 파일 수정
각 프로젝트(board, comment, ui, user, zuul) Maven build를 통해 war 파일 생성
각 war 파일을 서버의 /edu-msa-file/Docker/
폴더 안의 edu-msa-*
각 폴더로 이동
war 파일과 server.xml이 같은 폴더 안에 구성되어 있는지 확인 (board, comment, ui, user)
war 파일과 application.yml이 같은 폴더 안에 구성되어 있는지 확인 (zuul)
Docker hub
계정 생성 후, Repositories 클릭하여 Repository Name 입력 후 이미지 저장소 생성 (board, comment, ui, user, zuul)
이미지 저장소 로그인
$ podman login docker.io
Username: 아이디 입력
Password: 패스워드 입력
이미지 빌드, 태그, 업로드 (board, comment, ui, user, zuul)
$ cd ~/edu-msa-file/Docker/edu-msa-board/
$ podman build --tag edu-msa-board:latest .
$ podman tag edu-msa-board ${도커허브 ID}/edu-msa-board
$ podman push ${도커허브 ID}/edu-msa-board
$ cd ~/edu-msa-file/Docker/edu-msa-comment/
$ podman build --tag edu-msa-comment:latest .
$ podman tag edu-msa-comment ${도커허브 ID}/edu-msa-comment
$ podman push ${도커허브 ID}/edu-msa-comment
$ cd ~/edu-msa-file/Docker/edu-msa-ui/
$ podman build --tag edu-msa-ui:latest .
$ podman tag edu-msa-ui ${도커허브 ID}/edu-msa-ui
$ podman push ${도커허브 ID}/edu-msa-ui
$ cd ~/edu-msa-file/Docker/edu-msa-user/
$ podman build --tag edu-msa-user:latest .
$ podman tag edu-msa-user ${도커허브 ID}/edu-msa-user
$ podman push ${도커허브 ID}/edu-msa-user
$ cd ~/edu-msa-file/Docker/edu-msa-zuul/
$ podman build --tag edu-msa-zuul:latest .
$ podman tag edu-msa-zuul ${도커허브 ID}/edu-msa-zuul
$ podman push ${도커허브 ID}/edu-msa-zuul
edu-msa-[board, comment, ui, user, zuul] yaml 파일 수정
$ vim ~/edu-msa-file/Kubernetes/edu-msa-board.yaml
${DOCKER_HUB_ID}을 "도커허브계정"로 입력
${EDU_MSA_BOARD}을 "30201"로 수정
$ vim ~/edu-msa-file/Kubernetes/edu-msa-comment.yaml
${DOCKER_HUB_ID}을 "도커허브계정"로 입력
${EDU_MSA_COMMENT}을 "30301"로 수정
$ vim ~/edu-msa-file/Kubernetes/edu-msa-ui.yaml
${DOCKER_HUB_ID}을 "도커허브계정"로 입력
${EDU_MSA_UI}을 "30001"로 수정
$ vim ~/edu-msa-file/Kubernetes/edu-msa-user.yaml
${DOCKER_HUB_ID}을 "도커허브계정"로 입력
${EDU_MSA_USER}을 "30401"로 수정
$ vim ~/edu-msa-file/Kubernetes/edu-msa-zuul.yaml
${DOCKER_HUB_ID}을 "도커허브계정"로 입력
${NAMESPACE}을 "default"로 입력 (총 3줄)
${EDU_MSA_ZULL}을 "30101"로 수정
edu-msa-[board, comment, ui, user, zuul] yaml 파일 API 배포
$ cd ~/edu-msa-file/Kubernetes/
$ kubectl apply -f edu-msa-board.yaml -f edu-msa-comment.yaml -f edu-msa-ui.yaml -f edu-msa-user.yaml -f edu-msa-zuul.yaml
Pod 및 Service 배포 확인
$ kubectl get pods
$ kubectl get service
MSA Application 포털 접속