목차
쿠버네티스 저번 포스팅에 이어서 Tomcat의 디플로이먼트, 서비스 파일의 내용은 변경하지 않고, ConfigMap을 변경하고, MariaDB 파드를 생성하는 부분을 작성한다.
MariaDB Deployment 작성
Deployment: mariadb-deployment로 MariaDB 서버의 배포를 정의한다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: mariadb-deployment
spec:
selector:
matchLabels:
app: mariadb000ex99
strategy:
type: Recreate
template:
metadata:
labels:
app: mariadb000ex99
spec:
containers:
- name: mariadb000con01
image: mariadb:latest
ports:
- containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
value: "dbpassword"
- name: MYSQL_DATABASE
value: "my3tier000db"
- name: MYSQL_USER
value: "korjsh"
- name: MYSQL_PASSWORD
value: "dbpassword"
mariadb:latest 이미지를 사용해 컨테이너 파드를 생성하고, 3306 포트에서 데이터베이스 서비스를 제공한다.
레플리카셋은 마찬가지로 1로 한다.
env(Environment Variables) : MariaDB 컨테이너는 환경 변수를 통해 데이터베이스 설정을 구성한다.
여기에는 데이터베이스 사용자, 비밀번호, 데이터베이스 이름 등이 포함됩니다. 이 설정은 데이터베이스 초기화 및 액세스 권한 부여에 사용 된다.
MYSQL_ROOT_PASSWORD
: 이 환경 변수는 MariaDB 데이터베이스의 ‘root’ 사용자의 비밀번호를 설정한다.
여기서"dbpassword"
는 데이터베이스의 root 계정에 대한 접근 비밀번호로 사용된다. 보안상 중요한 정보이므로 실제 운영 환경에서는 더 강력하고 안전한 비밀번호를 사용해야 한다.MYSQL_DATABASE
: 이 환경 변수는 MariaDB 컨테이너가 시작될 때 생성될 데이터베이스의 이름을 지정한다.
여기서"my3tier000db"
로 애플리케이션에서 사용할 데이터베이스의 이름을 지정한 것이다.MYSQL_USER
: 이 환경 변수는 애플리케이션에서 사용할 데이터베이스 사용자 계정의 이름을 설정한다."korjsh"
는 데이터베이스에 접근할 때 사용할 사용자 이름이다. 이 사용자는 데이터베이스에서 데이터를 쿼리하거나 수정할 수 있는 권한을 가진다.MYSQL_PASSWORD
: 이 환경 변수는MYSQL_USER
에 대한 비밀번호를 설정한다.
여기서"dbpassword"
는korjsh
사용자의 비밀번호로 사용된다. 이 비밀번호는 데이터베이스 사용자 인증에 사용되며, 마찬가지로 보안상의 이유로 강력하고 안전한 비밀번호를 선택해야 한다.
MariaDB Service 작성
Service: mariadb-service라는 이름으로 MariaDB 서버에 대한 쿠버네티스 서비스를 정의한다. MariaDB의 디폴트 포트번호인 3306을 지정했다.
apiVersion: v1
kind: Service
metadata:
name: mariadb-service
spec:
selector:
app: mariadb000ex99
ports:
- port: 3306
targetPort: 3306 <-- 3306 포트에서 데이터베이스 서버에 대한 네트워크 액세스를 가능하게 함
Tomcat ConfigMap 작성
전 포스팅에서 index.jsp를 ConfigMap으로 바꾼 것과 같은 원리로 MariaDB와 연동하는 코드를 작성했다.
apiVersion: v1
kind: ConfigMap
metadata:
name: tomcat-index
data:
index.jsp: |
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ page import="java.sql.*" %>
<html>
<head>
<title>WEB-WAS 연동 성공</title>
</head>
<body>
<h1>WEB-WAS 연동 성공</h1>
<p>이 페이지는 엔진엑스와 톰캣, MariaDB가 성공적으로 연동되었습니다.</p>
<%
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String jdbcUrl = "jdbc:mysql://10.102.112.149:3306/my3tier000db";
String username = "korjsh";
String password = "dbpassword";
Connection conn = DriverManager.getConnection(jdbcUrl, username, password);
Statement stmt = conn.createStatement();
try {
ResultSet rs = stmt.executeQuery("SELECT * FROM your_table_name");
while (rs.next()) {
// Do something with the data from the database
}
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
stmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
%>
</body>
</html>
Tomcat 디플로이먼트
마찬가지로 Tomcat 파드에 tomcat-index-volume을 정의하여 위의 ConfigMap에서 작성한 index.jsp 파일을 /usr/local/tomcat/webapps/ROOT/ 경로에 마운트한다.
ConfigMap에서 정의된 사용자 정의 index.jsp 파일이 웹 페이지에 뜨도록 하는 것이다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: tomcat-deployment
spec:
selector:
matchLabels:
app: tomcat000ex99
replicas: 1
template:
metadata:
labels:
app: tomcat000ex99
spec:
containers:
- name: tomcat000con01
image: tomcat:latest
ports:
- containerPort: 8080
volumeMounts:
- name: tomcat-index-volume
mountPath: /usr/local/tomcat/webapps/ROOT/index.jsp
subPath: index.jsp
volumes:
- name: tomcat-index-volume <-- 볼륨 마운트
configMap:
name: tomcat-index
쿠버네티스 메니페스트 파일을 실행한다.
kubectl apply -f C:\DockerANDk8s\kube_folder\nginx-tomcat_v2_folder\nginx-tomcat-deployment.yaml
쿠버네티스 연동 테스트
앞선 포스팅에서 NginX의 노드 포트를 30080으로 설정했으므로 localhost:30080으로 브라우저에서 테스트 한다.

Reference