이번 포스트에서는 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 를 이용하여 연결하는 방법은 다음 포스트에서 진행한다.
'K8S' 카테고리의 다른 글
Minikube 에서 서비스 접속 사용하기 (0) | 2023.04.27 |
---|---|
Mysql DB pod로 생성하고 WAS(tomcat) 에서 접속하기 - 2 (0) | 2023.02.27 |
Docker Image 만들고 K8s Pod 로 생성 - 2 (0) | 2023.02.24 |
Docker Image 만들고 K8s Pod 로 생성 - 1 (0) | 2023.02.24 |
SERVICE - 1 (0) | 2023.02.14 |