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에 게시됨