【k8s安装nacos 2.0.4 ,seata 1.5.2集群】

---
apiVersion: v1
kind: Service
metadata:
  name: nacos-headless
  namespace: ruoyi
  labels:
    app: nacos
spec:
  publishNotReadyAddresses: true 
  ports:
    - port: 8848
      name: server
      targetPort: 8848
    - port: 9848
      name: client-rpc
      targetPort: 9848
    - port: 9849
      name: raft-rpc
      targetPort: 9849
    ## 兼容1.4.x版本的选举端口
    - port: 7848
      name: old-raft-rpc
      targetPort: 7848
  clusterIP: None
  selector:
    app: nacos
---
apiVersion: v1
kind: ConfigMap
metadata:
  namespace: ruoyi
  name: nacos-cm
data:
  mysql.host: "mysql-svc-hls.ruoyi.svc.cluster.local"
  mysql.db.name: "nacos"
  mysql.port: "3306"
  mysql.user: "root"
  mysql.password: "root"
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  namespace: ruoyi
  name: nacos
spec:
  selector:
    matchLabels:
      app: nacos
  podManagementPolicy: Parallel
  serviceName: nacos-headless
  replicas: 1
  template:
    metadata:
      labels:
        app: nacos
      annotations:
        pod.alpha.kubernetes.io/initialized: "true"
    spec:
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            - labelSelector:
                matchExpressions:
                  - key: "app"
                    operator: In
                    values:
                      - nacos-headless
              topologyKey: "kubernetes.io/hostname"
      imagePullSecrets:
        - name: docker-secret-aliyun    
      volumes:
        - name: nacos-pv
          persistentVolumeClaim:
            claimName: nacos-pvc
        - configMap:
            name: mysql-conf
          name: nacos-cm           
      tolerations:
      - key: "CriticalAddonsOnly"
        value: "true"
        effect: "NoExecute"
        operator: "Equal"        
      containers:
        - name: nacos
          imagePullPolicy: Always
          image: registry.cn-shenzhen.aliyuncs.com/dylan-ns/nacos-server:2.0.4
          ports:
            - containerPort: 8848
              name: client-port
            - containerPort: 9848
              name: client-rpc
            - containerPort: 9849
              name: raft-rpc
            - containerPort: 7848
              name: old-raft-rpc
          env:
            - name: MODE
              value: "cluster"
            - name: NACOS_REPLICAS
              value: "3"
            - name: SERVICE_NAME
              value: "nacos-headless"
            - name: DOMAIN_NAME
              value: "cluster.local"
            - name: MYSQL_SERVICE_HOST
              valueFrom:
                configMapKeyRef:
                  name: nacos-cm
                  key: mysql.host
            - name: MYSQL_SERVICE_DB_NAME
              valueFrom:
                configMapKeyRef:
                  name: nacos-cm
                  key: mysql.db.name
            - name: MYSQL_SERVICE_PORT
              valueFrom:
                configMapKeyRef:
                  name: nacos-cm
                  key: mysql.port
            - name: MYSQL_SERVICE_USER
              valueFrom:
                configMapKeyRef:
                  name: nacos-cm
                  key: mysql.user
            - name: MYSQL_SERVICE_PASSWORD
              valueFrom:
                configMapKeyRef:
                  name: nacos-cm
                  key: mysql.password
            - name: SPRING_DATASOURCE_PLATFORM
              value: "mysql"
            - name: NACOS_SERVER_PORT
              value: "8848"
            - name: NACOS_APPLICATION_PORT
              value: "8848"
            - name: PREFER_HOST_MODE
              value: "hostname"
            - name: NACOS_SERVERS
              value: "nacos-0.nacos-headless.ruoyi.svc.cluster.local:8848"
          volumeMounts:
            - name: nacos-pv
              mountPath: /home/nacos/data
            - name: nacos-pv
              mountPath: /home/nacos/logs
---
apiVersion: v1
kind: PersistentVolume
metadata:
  namespace: ruoyi
  name: nacos-pv
spec:
  capacity:
    storage: 2Gi # pv 的容量
  volumeMode: Filesystem # 存储类型为文件系统
  accessModes: # 访问模式:ReadWriteOnce、ReadWriteMany、ReadOnlyMany
    - ReadWriteMany  # 可被单节点独写
  persistentVolumeReclaimPolicy: Delete # 回收策略
  storageClassName: master-nfs-storage # 创建 PV 的存储类名,需要与 pvc 的相同
  nfs: # 连接到 nfs
    path: /data/nfs/nacos/data
    server: 192.168.229.205
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  namespace: ruoyi
  name: nacos-pvc
spec:
  accessModes:
    - ReadWriteMany # 权限需要与对应的 pv 相同
  volumeMode: Filesystem
  resources:
    requests:
      storage: 2Gi # 资源可以小于 pv 的,但是不能大于,如果大于就会匹配不到 pv
  storageClassName: master-nfs-storage # 名字需要与对应的 pv 相同
---

注意,nacos如果节点数只有一个则环境变量中的 MODE 必须设置成 standalone

seata资源清单,不包括 外部 网络访问

apiVersion: apps/v1
kind: Deployment
metadata:
  name: seata-server
  namespace: ruoyi
  labels:
    app: seata-server
spec:
  replicas: 1
  selector:
    matchLabels:
      app: seata-server
  template:
    metadata:
      labels:
        app: seata-server
    spec:
      imagePullSecrets:
        - name: docker-secret-aliyun   
      containers:
        - name: seata-server
          image: registry.cn-shenzhen.aliyuncs.com/dylan-ns/seata-server:1.5.2
          imagePullPolicy: IfNotPresent
          ports:
            - name: service
              containerPort: 8091
              protocol: TCP
            - name: console
              containerPort: 7091
              protocol: TCP
          volumeMounts:
            - name: seata-config
              mountPath: /seata-server/resources/application.yml
              subPath: application.yml
      volumes:
        - name: seata-config
          configMap:
            name: seata-server-config

---
apiVersion: v1
kind: ConfigMap
metadata:
  namespace: ruoyi
  name: seata-server-config
data:
  application.yml: |
    server:
      port: 7091
    
    spring:
      application:
        name: seata-server
    
    logging:
      config: classpath:logback-spring.xml
      file:
        path: ${user.home}/logs/seata
    
    console:
      user:
        username: seata
        password: seata
    
    seata:
      config:
        # support: nacos, consul, apollo, zk, etcd3
        type: nacos
        nacos:
          server-addr: nacos-headless.ruoyi:8848
          group: SEATA_GROUP
          username: nacos
          password: nacos
          data-id: seataServer.properties
      registry:
        # support: nacos, eureka, redis, zk, consul, etcd3, sofa
        type: nacos
        nacos:
          application: seata-server
          server-addr: nacos-headless.ruoyi:8848
          group: SEATA_GROUP
          cluster: default
          username: nacos
          password: nacos
      store:
        # support: file 、 db 、 redis
        mode: db
        db:
          datasource: druid
          db-type: mysql
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://mysql-svc-hls.ruoyi.svc.cluster.local:3306/seata
          user: root
          password: root
          min-conn: 5
          max-conn: 100
      security:
        secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017
        tokenValidityInMilliseconds: 1800000
        ignore:
          urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/api/v1/auth/login

注意,不知道是不是版本原因 SEATA_CONFIG_NAME 设置无效,所以采用 subPath直接挂在到 /seata-server/resource/application.yml

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Seata 1.5.2是一个开源的分布式事务解决方案,而Nacos则是一个开源的动态服务发现、配置管理和服务管理平台。集成Seata 1.5.2与Nacos可以使得我们在应用程序中更方便地使用分布式事务功能,并且能够动态地管理配置和服务。 首先,集成Seata 1.5.2和Nacos需要进行一些准备工作。我们需要在应用程序中引入Seata 1.5.2和Nacos的相关依赖包,并进行相应的配置。在Seata 1.5.2的配置中,我们需要指定Nacos作为注册中心和配置中心。 其次,集成Seata 1.5.2和Nacos需要对应用程序进行适当的修改。在应用程序中,我们需要使用Seata 1.5.2提供的事务管理接口来控制分布式事务的开始、提交和回滚。同时,我们还需要修改数据库连接配置,确保Seata 1.5.2能够正确地拦截和管理数据库操作。 最后,集成Seata 1.5.2和Nacos还需要进行一些额外的配置。我们需要在Nacos中注册Seata 1.5.2提供的事务协调器服务,并将其配置信息与应用程序进行关联。这样,当应用程序启动时,Seata 1.5.2将会自动从Nacos中获取事务协调器的地址,并与其建立连接。 总结而言,集成Seata 1.5.2和Nacos可以使得我们更方便地使用分布式事务功能,并且能够动态地管理配置和服务。通过适当的配置和修改,我们可以在应用程序中使用Seata 1.5.2提供的事务管理接口,并且将事务协调器的地址信息存储在Nacos中,进一步简化了分布式事务的使用和管理。这样的集成方案可以提高应用程序的可靠性和可伸缩性,同时也减轻了开发和维护的工作量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值