k8s에서 seata 단일 서버 배포 설정

1. Seata 데이터베이스 초기화

curl -o mysql.sql https://raw.githubusercontent.com/apache/incubator-seata/1.3.0/script/server/db/mysql.sql
mysql -uroot -p

CREATE DATABASE IF NOT EXISTS seata CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
USE seata;
SOURCE /root/mysql.sql;

CREATE USER 'seata'@'%' IDENTIFIED BY 'MXl#GX8hw0wEv!ID';
GRANT ALL PRIVILEGES ON seata.* TO 'seata'@'%';
FLUSH PRIVILEGES;
EXIT;

2. Seata 구성 파일 생성

apiVersion: v1
kind: ConfigMap
metadata:
  name: t1-zdbl-seata-registry-config
  namespace: t1-zdbl
data:
  registry.conf: |
    registry {
        type = "nacos"
        nacos {
          application = "seata-server"
          serverAddr = "t1-zdbl-nacos.t1-zdbl.svc.cluster.local:8848"
          group = "SEATA_GROUP"
          namespace = "seata"
          cluster = "default"
          username = "nacos"
          password = "m5LqrxYsD7N1F6Cb"
        }
    }
    config {
      type = "file"
      file {
        name = "file:/seata-server/resources/file.conf"
      }
    }
apiVersion: v1
kind: ConfigMap
metadata:
  name: t1-zdbl-seata-file-config
  namespace: t1-zdbl
data:
  file.conf: |
    store {
        mode = "db"
        db {
           datasource = "druid"
           dbType = "mysql"
           driverClassName = "com.mysql.cj.jdbc.Driver"
           url = "jdbc:mysql://t1-zdbl-mysql.t1-zdbl.svc.cluster.local:3306/t1_zdbl_seata?useUnicode=true&characterEncoding=UTF-8"
           user = "seata"
           password = "xxxxx"
           minConn = 5
           maxConn = 100
           globalTable = "global_table"
           branchTable = "branch_table"
           lockTable = "lock_table"
           queryLimit = 100
           maxWait = 5000
        }
    }

3. 배포 매니페스트 생성

apiVersion: apps/v1
kind: Deployment
metadata:
  name: t1-zdbl-seata-service
  namespace: t1-zdbl
  labels:
    app: t1-zdbl-seata
spec:
  replicas: 1
  selector:
    matchLabels:
      app: t1-zdbl-seata
  template:
    metadata:
      labels:
        app: t1-zdbl-seata
    spec:
      containers:
        - name: seata-node
          image: seataio/seata-server:1.3.0
          env:
            - name: SEATA_PORT
              value: "8091"
          ports:
            - containerPort: 8091
              protocol: TCP
              name: http
          volumeMounts:
            - mountPath: /seata-server/resources/file.conf
              name: config-file
              subPath: file.conf
            - mountPath: /seata-server/resources/registry.conf
              name: config-registry
              subPath: registry.conf
      volumes:
        - name: config-file
          configMap:
            name: t1-zdbl-seata-file-config
            defaultMode: 420
        - name: config-registry
          configMap:
            name: t1-zdbl-seata-registry-config
            defaultMode: 420

4. 서비스 노드 노출 설정

apiVersion: v1
kind: Service
metadata:
  name: t1-zdbl-seata-service
  namespace: t1-zdbl
  labels:
    app: t1-zdbl-seata
spec:
  type: ClusterIP
  ports:
    - port: 8091
      targetPort: 8091
      protocol: TCP
      name: http
  selector:
    app: t1-zdbl-seata
데이터베이스 초기화 후, 위의 구성 파일을 적용하면 Seata 단일 서버가 정상적으로 실행됩니다.

태그: seata kubernetes nacos MySQL distributed-tracing

6월 19일 01:41에 게시됨