본문 바로가기

K8S

Mysql DB pod로 생성하고 WAS(tomcat) 에서 접속하기 - 1

반응형

이번 포스트에서는 mysql DB 를 pod 로 생성하고 WAS(tomcat) pod 에서 접속하는 것을 테스트하도록 한다.

 

포스트에 정리하기전 실패사례를 먼저 소개하자면,

 

WAS(Tomcat) -> DB(mysql) 로 접속하기 위한 pod를 생성할 때,

일반적인 mysql 에서 제공해주는 pod를 사용할 경우 TLS 관련 오류가 발생한다.

 

에러메세지 : Unsupported protocol version: 11. Likely connecting to an X Protocol port.

 

mysql container 내의 /usr/lib/ssl/openssl.cnf 파일의 내용을 수정해주어야 한다.

본 포스트에서는 openssl.cnf 파일을 아래와 같이 생성한 후,

Dockerfile 에 해당 파일을 /usr/lib/ssl 디렉토리에 복사하게 하여 반영한 후 해당 컨테이너를 생성하도록 하였다.

 

- openssl.cnf 파일 수정 부분

[system_default_sect]
MinProtocol = TLSv1

해당 부분이 8.x 버전이상은 TLSv1.2 혹은 1.1 등으로 설정되어있는데 해당 값을 TLSv1로 변경해주고,

아래 적혀있는 내용이 있다면 삭제한다.

 

- DB Dockerfile 부분

FROM mysql:8.0.26
MAINTAINER bless

WORKDIR /usr/lib/ssl

COPY openssl.cnf.txt openssl.cnf

ENV MYSQL_ROOT_PASSWORD=root

ENV MYSQL_DATABASE=mysql

openssl.cnf 파일 작성 후 Dockerfile 을 이용하여 컨테이너를 생성한다.

docker build -t blessleecb/bless-db .

컨테이너가 정상적으로 생성되면 해당 컨테이너를 pod 에서 사용하기 위해 docker hub 에 push 한다.

docker push blessleecb/bless-db

WAS 컨테이너는 기존에 사용한 Dockerfile 을 사용하되, 

압축파일내의 내용을 수정하도록 한다.

 

기존 WAS 파일만 openjdk:11 이미지에 업로드하여 압축해제하고 tomcat 을 실행하는 경우와 달리,

이번에는 mysql db 서버와 연동하기 위해서 몇가지 작업이 필요하다.

 

1. DB 접속을 위한 jsp 소스 작성

   

String url = "jdbc:mysql://192.168.56.202:3333/mysql"; // 접속할 DB 정보

String id = "root";                     //MySQL에 접속을 위한 계정의 ID

String pwd = "root";            //MySQL에 접속을 위한 계정의 암호

DB 접속 소스를 작성하여 tomcat/webapps/ROOT 디렉토리에 넣는다.

DB 접속 IP와 포트는 소스 작성전에 k8s 대시보드에서 DB 접속용 service 를 생성하여 미리 ip와 포트를 확인한다.

 

2. mysql-connector-java-디비버전.jar 파일 업로드

생성할 DB 버전에 맞는 jar 파일을 다운받아 tomcat/lib 디렉토리에 넣어준다.

 

두가지 파일이 모두 준비되면 tomcat 디렉토리를 tar 로 압축한 후 tomcat Dockerfile 이 존재하는 경로에 업로드 한 후,

Dockerfile 을 업로드한 tar 파일에 맞도록 수정한다.

FROM openjdk:11
MAINTAINER bless

WORKDIR /usr/local

COPY apache-tomcat-9.0.8.tar apache-tomcat-9.0.8.tar

RUN tar -xvf apache-tomcat-9.0.8.tar
RUN mv apache-tomcat-9.0.8 tomcat9

WORKDIR /usr/local/tomcat9

EXPOSE 8080

ENTRYPOINT ["./bin/catalina.sh", "run"]

was 컨테이너도 build 후 push 하여 docker hub 에 업로드 한다.

docker build -t blessleecb/bless-was .
docker push blessleecb/bless-was

작성한 컨테이너들을 pod와 service 를 이용하여 연결하는 방법은 다음 포스트에서 진행한다.

반응형