쿠버네티스 저번 포스팅에 이어서 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으로 브라우저에서 테스트 한다.

쿠버네티스 3티어 연동 성공

Reference

https://syhwang.tistory.com/56

https://bo20cy.tistory.com/20

Leave a Reply

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다