微服务部署
1.SpringBoot 微服务工程做成(过程略),可以参照http://123.57.164.21/?p=4053

- 这里把微服务和网关都打到一个工程里面,mircoservice是微服务,SringCloud是网关。

- ※注意修改工程Pom文件中的modules,把微服务模块添加进去。
2.微服务目录结构如下。
微服务的目录结构,用到了mybatis

注意mybatis Mapper.xml 文件,数据库有schema时的写法。

3.SpringBoot最重要的配置文件(application.yml)
- 微服务的配置文件[application.yml]
app.postgres-server: localhost
server.port: 8001
spring.application.name: abc
logging:
file.path: logs
level:
com.ibm.xxxcloud: debug
mybatis:
configuration:
map-underscore-to-camel-case: true
mapper-locations: classpath:mapper/**/*.xml
pagehelper:
helper-dialect: postgresql
params: countSql
reasonable: true
support-methods-arguments: true
# 本地数据库连接的配置
spring:
datasource:
driver-class-name: org.postgresql.Driver
password: 1qazxsw2
url: jdbc:postgresql://${app.postgres-server}:5432/abc_db
username: postgres
servlet:
multipart:
max-file-size: 10MB
max-request-size: 10MB
#---
#spring.config.activate.on-profile: docker
#server.port: 80
#spring:
# datasource:
# url: jdbc:postgresql://postgres:5432/abc_db
---
# OpenShift上的数据库连接配置,需要在部署时设定Secret信息(spring.profiles.active,POSTGRES_PASSWORD, POSTGRES_DB, POSTGRES_USER)。
spring.config.activate.on-profile: openshift
server.port: 8080
spring:
datasource:
password: ${POSTGRES_PASSWORD}
#非常重要!!!!,这里需要注意第二个postgresql是openshift pod 数据库节点的名称,在openshift中都是内网,可以通过节点名称内部连接。
url: jdbc:postgresql://postgresql:5432/${POSTGRES_DB}
username: ${POSTGRES_USER}
logging:
file.path: logs
level:
com.ibm.xxxcloud.productapi.mapper: debug
4.网关的配置文件
- application.yaml
spring.application.name: gateway
server.port: 8080
spring:
cloud:
gateway:
default-filters:
- DedupeResponseHeader=Access-Control-Allow-Credentials Access-Control-Allow-Origin
globalcors:
corsConfigurations:
'[/**]':
allowedOrigins: "*"
allowedMethods: "*"
allowedHeaders: "*"
add-to-simple-url-handler-mapping: true
#本地环境的路由
routes:
- id: abc-api
uri: http://localhost:8001
predicates:
- Path=/abc/**
filters:
- RewritePath=/abc/(?<path>.*), /$\{path}
logging:
level:
org.springframework.cloud.gateway: debug
springdoc:
api-docs:
enabled: true
version: 1.0.0
#---
#spring.config.activate.on-profile: docker
#
#spring:
# cloud:
# gateway:
# routes:
# - id: abc-api
# uri: http://abc:8080
# predicates:
# - Path=/abc/**
# filters:
# - RewritePath=/abc/(?<path>.*), /$\{path}
---
spring.config.activate.on-profile: openshift
spring:
cloud:
gateway:
#openshift环境的路由
routes:
- id: abc-api
#非常重要!!!!,这里需要注意abc是openshift pod 微服务节点的名称,在openshift中都是内网,可以通过节点名称内部连接。
uri: http://abc:8080
predicates:
- Path=/abc/**
filters:
- RewritePath=/abc/(?<path>.*), /$\{path}
- pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ibm</groupId>
<artifactId>abccloud</artifactId>
<version>1.0.0</version>
<packaging>pom</packaging>
<properties>
<java.version>11</java.version>
<maven.compiler.target>11</maven.compiler.target>
<maven.compiler.source>11</maven.compiler.source>
</properties>
<modules>
<module>spring-cloud/gateway</module>
<module>microservices/abc-api</module>
</modules>
</project>
- 5.OpenShift控制台的配置
注意下面Context Dir要填微服务文件夹的路径

注意名称修改

注意不要创建公共的路由,点击部署

设置好环境变量

注意查看微服务是否启动成功,特别是端口号,注意端口号是不是8080,因为按咱们的设置来说,应该是8080启动。


GateWay部署
过程大体跟微服务相同,下面是需要注意的地方
Context dir输入GateWay的文件夹路径


通过TLS Termination启用Https,有三种类型:edge、passthrough、reencrypt
- edge 访问route使用https协议,route到内部网络为非加密的,如未配置证书则使用默认证书。
- reencrypt 全部访问路径均是加密的
- passthrough 加密通信直接发送到目标,route不需提供TLS Termination。

配置LogDNA服务
1.打开 cluster 页面,向下滚动找到 Integrations > Logging, 点击 Connect

2.可以选择一个现有的 IBM Log Analysis 实例,如果没有则创建一个新的 Instance, (Lite Plan 可以免费使用 1 个月)


3. 使用 IBM Log Analysis
- Instance 创建成功后, 点击 Cluster 页面 Integrations Logging 下的 Launch 按钮打开 IBM Log Analysis 控制台.

- 在 Apps 下拉菜单中可以看到集群内所有 app,如下图所示,我们可以通过输入 app 的名字,比如
product定位到我们的微服务:

- 此处我们勾选
product-composite和product这两个 app,点击 Apply 按钮

- 我们可以将当前的视图保存起来, 如下图所示,我保存了一个名为 jrecloud 的视图,用来查看与 jrecloud 相关的 app 日志。
