Ver código fonte

添加生产配置

yangliu 2 meses atrás
pai
commit
040f3bd702

+ 74 - 2
Jenkinsfile

@@ -4,6 +4,7 @@ pipeline {
     parameters {
         choice(name: 'env', choices: ['dev', 'test', 'prod'], description: '部署环境(dev/test/prod)')
         string(name: 'NAMESPACE', defaultValue: 'hfln-dev', description: 'Kubernetes 命名空间')
+        string(name: 'INGRESS_HOST', defaultValue: '', description: 'Ingress 域名(为空则不创建Ingress)')
     }
 
     environment {
@@ -27,7 +28,7 @@ pipeline {
                         env.HARBOR_PROJECT = 'dev'
                     }
 
-                    echo ">>> 使用环境:${params.env},HARBOR 项目:${env.HARBOR_PROJECT},K8S 命名空间:${params.NAMESPACE}"
+                    echo ">>> 使用环境:${params.env},HARBOR 项目:${env.HARBOR_PROJECT},K8S 命名空间:${params.NAMESPACE},Ingress 域名:${params.INGRESS_HOST ?: '无'}"
                 }
             }
         }
@@ -78,7 +79,78 @@ pipeline {
 
                     sh """
                         export KUBECONFIG=${KUBECONFIG_PATH}
-                        kubectl set image deployment/${PROJECT_NAME} ${PROJECT_NAME}=${imageTag} -n ${params.NAMESPACE}
+
+                        # 创建命名空间(如果不存在)
+                        kubectl get ns ${params.NAMESPACE} || kubectl create ns ${params.NAMESPACE}
+
+                        # 部署 Deployment(2 副本)
+                        kubectl apply -n ${params.NAMESPACE} -f - <<EOF
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: ${PROJECT_NAME}
+spec:
+  replicas: 2
+  selector:
+    matchLabels:
+      app: ${PROJECT_NAME}
+  template:
+    metadata:
+      labels:
+        app: ${PROJECT_NAME}
+    spec:
+      containers:
+      - name: ${PROJECT_NAME}
+        image: ${imageTag}
+        ports:
+        - containerPort: 8092
+        env:
+        - name: SPRING_PROFILES_ACTIVE
+          value: "${params.env}"
+EOF
+
+                        # 部署 Service
+                        kubectl apply -n ${params.NAMESPACE} -f - <<EOF
+apiVersion: v1
+kind: Service
+metadata:
+  name: ${PROJECT_NAME}
+spec:
+  selector:
+    app: ${PROJECT_NAME}
+  ports:
+  - protocol: TCP
+    port: 80
+    targetPort: 8092
+  type: ClusterIP
+EOF
+
+                        # 判断是否有域名,有则部署Ingress
+                        if [ -n "${params.INGRESS_HOST}" ]; then
+                            cat <<EOT | kubectl apply -n ${params.NAMESPACE} -f -
+apiVersion: networking.k8s.io/v1
+kind: Ingress
+metadata:
+  name: ${PROJECT_NAME}-ingress
+  annotations:
+    nginx.ingress.kubernetes.io/rewrite-target: /
+spec:
+  ingressClassName: nginx
+  rules:
+  - host: ${params.INGRESS_HOST}
+    http:
+      paths:
+      - path: /
+        pathType: Prefix
+        backend:
+          service:
+            name: ${PROJECT_NAME}
+            port:
+              number: 80
+EOT
+                        else
+                            echo ">>> 未配置 Ingress 域名,跳过 Ingress 部署"
+                        fi
                     """
                     echo ">>> 部署完成 ✅"
                 }

+ 60 - 31
device-service-server/src/main/resources/bootstrap-prod.yml

@@ -1,43 +1,41 @@
 spring:
   config:
-    import: "optional:nacos:"
+    import: "optional:nacos:device-service-dev.yaml"
+  main:
+    allow-circular-references: true
   cloud:
     nacos:
-      discovery:
-        server-addr: node02:8848
-        group: DEFAULT_GROUP
-        namespace: public
       config:
-        server-addr: ${spring.cloud.nacos.discovery.server-addr}
-        group: ${spring.cloud.nacos.discovery.group}
-        namespace: ${spring.cloud.nacos.discovery.namespace}
+        import-check:
+          enabled: false
+        server-addr: 47.121.135.46:8848
+        group: DEFAULT_GROUP
+        namespace: dev
         file-extension: yaml
+        data-id: device-service-dev.yaml
+        prefix: device-service
+      discovery:
+        server-addr: 47.121.135.46:8848
+        group: DEFAULT_GROUP
+        namespace: dev
+        service: device-service
   redis:
-    # 地址
-    host: node03
-    # 端口
+    host: 47.121.135.46
     port: 6379
-    # 数据库索引
     database: 5
-    # 密码
-    password: 123456
-    # 连接超时时间
     timeout: 10s
     lettuce:
       pool:
-        # 连接池中的最小空闲连接
-        min-idle: 0
-        # 连接池中的最大空闲连接
-        max-idle: 8
-        # 连接池的最大数据库连接数
-        max-active: 8
-        # #连接池最大阻塞等待时间(使用负值表示没有限制)
-        max-wait: -1ms
+        min-idle: 0   # 连接池中的最小空闲连接
+        max-idle: 8   # 连接池中的最大空闲连接
+        max-active: 8  # 连接池的最大数据库连接数
+        max-wait: -1ms    # #连接池最大阻塞等待时间(使用负值表示没有限制)
+    password: Hfln@1024
   datasource:
     driver-class-name: com.mysql.cj.jdbc.Driver
-    url: jdbc:mysql://node05:3306/tenant?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+    url: jdbc:mysql://47.121.135.46:3306/lnxx_dev?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
     username: root
-    password: Wideth@123
+    password: Hfln@1024
     druid:
       initial-size: 5
       min-idle: 10
@@ -47,12 +45,43 @@ spring:
       stat-view-servlet:
         login-username: druid
         login-password: druid
+
 lnxx:
   knife4j:
     doc:
-      basePackage: com.hfln.portal.application.controller
-      title: TENANTRY-SERVICE-SERVER
-      description: 业务服务
-wechat:
-  appid: wx1a783618d97d999d
-  secret: db43538fbd86e946c9798fed18a91df1
+      basePackage: com.hfln.device.application.controller
+      title: DEVICE-SERVICE-SERVER
+      description: 设备服务
+  # 微信小程序
+  wechat:
+    appid: wx60b2cd643b46d5eb
+    secret: 15ebd7bed7b73d806eba2944f4e07592
+  # 短信验证码相关
+  sms:
+    tencent:
+      secretId: AKID40jFYdUCqMqFUXO2SecOvKYYKsGRP9rT
+      secretKey: Y3RcbMtO0V0bI2gzFShpocHjy1qSq0xf
+      loginId: 2368397
+      registerId: 2368393
+      notifyId: 2368474
+      region: ap-guangzhou
+      sdkAppId: 1400966707
+
+mqtt:
+  broker: tcp://47.121.135.46:1883
+  client:
+    id: hfln-device-service-${random.uuid}
+  username: admin
+  password: public
+
+# 设备配置
+device:
+  keepalive:
+    timeout: 90000  # 设备保活超时时间,单位毫秒
+  alarm:
+    ack:
+      timeout: 300000  # 设备告警确认超时时间,单位毫秒
+    retention:
+      time: 60  # 滞留时间阈值,单位秒
+      keep-time: 30  # 滞留持续时间,单位秒
+      alarm-time: 180  # 滞留告警时间,单位秒

+ 1 - 1
device-service-server/src/main/resources/bootstrap.yml

@@ -7,7 +7,7 @@ spring:
     pathmatch:
       matching-strategy: ant_path_matcher
   profiles:
-    active: local
+    active: prod
   application:
     name: device-service-server