# 目的
ESB Server 和 ESB Governor 进行容器化部署(本文档只提供按照以下操作方案实现容器化部署,生产环境需要根据具体情况去适配)。
- 找售后拿到ESB Server和ESB Governor的基础镜像包:esb-server-base-image.tar,esb-governor-base-image.tar。
- 本文档只提供k8s相关配置,ESB Server和ESB Governor的介质内配置文件配置,请参考 01 产品安装指南
- 提供的ESB Server和ESB Governor的基础镜像包 内置基础镜像是 centos:latest,生产环境有其他基操作系统础镜像要求,请根据具体情况适配。
基础镜像包是将服务进行容器化构建后导出的镜像包,该镜像不包含JDK,数据库驱动,以及必要的ip地址并未设置,不是一个可直接使用的镜像包。因此,需要根据实际使用情况,设置JDK路径,数据库驱动包,必要的IP之后,才可以使用。
# 1.ESB Server容器化部署
# 1.1.基础镜像的导入
拿到基础镜像包:esb-server-base-image.tar之后,将镜像包上传到服务器指定目录,如:/opt/esb/base-image下。 使用如下命令,将/opt/esb/base-image目录下的镜像包导入到Docker容器中
docker load -i /opt/esb/base-image/esb-server-base-image.tar |
---|
1.2.上传JDK和数据库驱动包 这里以jdk1.8,和mysql数据驱动作为示例,将其上传至服务器指定目录,如:/home/apigateway目录下。
# 1.3.构建镜像
# 1.3.1.编写Dockerfile
在esb目录下创建并编写Dockerfile文件,Dockerfile文件内容如下:
基础镜像名:标签 FROM esb-server-base-image:V1 COPY ./mysql-connector-java-5.1.45.jar /opt/Primeton_ESB_Server/server/libs/ COPY ./jdk1.8/ /opt/jdk1.8/ ENV RP_JAVA_HOME=/opt/jdk1.8/ ENTRYPOINT /opt/Primeton_ESB_Server/startServer.sh
# 1.3.2.构建镜像
进入到/home/esb目录,执行以下命令:
docker build -t esb-server-image:V1 ./ |
---|
至此,镜像构建完成。
# 1.4.部署ESB Server镜像
# 1.4.1.上传镜像到私有镜像库(可选)
使用如下命令,将1.3.2中构建成功的镜像,上传至私有镜像库中
tag制作,da7fa4ac97be4:镜像ID,192.168.16.221:9800:仓库地址,esb-server-image:8分别表示镜像名和版本号 docker tag da7fa4ac97be4 192.168.16.221:9800/esb-server-image:8 #推送至私有仓库 docker push 192.168.16.221:9800/esb-server-image:8
# 1.4.2.创建esb-server.yml
创建一个名为esb-server.yml文件,内容如下,
---
apiVersion: v1
kind: Service
metadata:
name: esb-server-svc
namespace: primeton-poc
spec:
type: NodePort
ports:
- name: pas
protocol: TCP
nodePort: 30001
port: 7007
targetPort: 7007
- name: http
protocol: TCP
nodePort: 30002
port: 9999
targetPort: 9999
selector:
app: esb-serve
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: esb-serve
namespace: primeton-poc
spec:
replicas: 1
selector:
matchLabels:
app: esb-serve
strategy:
type: Recreate
template:
metadata:
labels:
app: esb-serve
spec:
nodeName: node03
containers:
- name: esb-serve
image: esb-server-image:8.7
imagePullPolicy: IfNotPresent
ports:
- containerPort: 7007
- containerPort: 9999
volumeMounts:
- name: conf-volume
mountPath: "/opt/Primeton_APIGateway_Server/server/conf"
- name: log-volume
mountPath: "/opt/Primeton_APIGateway_Server/server/logs"
- name: eos-volume
mountPath: "/opt/Primeton_APIGateway_Server/server/EOS/_srv"
volumes:
- name: eos-volume
hostPath:
path: /home/primeton/poc/esb-serve-eos
type: DirectoryOrCreate
- name: conf-volume
hostPath:
path: /home/primeton/poc/esb-serve-conf
type: DirectoryOrCreate
- name: log-volume
hostPath:
path: /home/primeton/poc/esb-serve-log
type: DirectoryOrCreate
# 1.4.5.部署服务
1.4.5.1.部署 可以在部署的时候,根据实际需要修改,部署示例:
kubectl apply -f esb-server.yml
# 1.4.5.2.查看日志
部署完成后,可以查看pod日志,确保部署后,服务启动成功,先找到部署的pod,再查看日志
#获取pod service
kubectl get pod,svc -n primeton-poc
#查看日志
kubectl logs ${pod-name}
# 2.ESB Governor容器化部署
# 2.1.基础镜像的导入
拿到基础镜像包:esb-governor-base.tar之后,将镜像包上传到服务器指定目录,如:/opt/esb/base-image下。 使用如下命令,将/opt/esb/base-image目录下的镜像包导入到Docker容器中
docker load -i /opt/esb/base-image/esb-server-base-image.tar
# 2.2.上传JDK和数据库驱动包
这里以jdk1.8,和mysql数据驱动作为示例,将其上传至服务器指定目录,如:opt/source/下。
# 2.3.构建镜像
# 2.3.1.编写Dockerfile
在source目录下创建并编写Dockerfile文件,Dockerfile文件内容如下:
#基础镜像名:标签
FROM esb-server-base-image:V1
COPY ./mysql-connector-java-5.1.45.jar /opt/Primeton_ESB_Server/server/libs/
COPY ./jdk1.8/ /opt/jdk1.8/
ENV RP_JAVA_HOME=/opt/jdk1.8/
ENTRYPOINT /opt/Primeton_ESB_Server/startServer.sh
# 2.3.2.构建镜像
进入到source目录,执行以下命令:
docker build -t esb-server-image:V1 ./
至此,镜像构建完成。
# 2.4.部署ESB-Governor镜像
# 2.4.1.上传镜像到私有镜像库(可选)
使用如下命令,将2.3.2中构建成功的镜像,上传至私有镜像库中
#tag制作,da7fa4ac97be4:镜像ID,192.168.16.221:9800:仓库地址,esb-server-image:8分别表示镜像名和版本号
docker tag da7fa4ac97be4 192.168.16.221:9800/esb-server-image:8
#推送至私有仓库
docker push 192.168.16.221:9800/esb-server-image:8
# 2.4.2.创建esb-governor.yml
创建一个名为application.yml文件,示例内容如下,根据实际情况,修改配置
---
apiVersion: v1
kind: Service
metadata:
name: esb-console-svc
namespace: primeton-poc
spec:
type: NodePort
ports:
- protocol: TCP
nodePort: 30000
port: 29091
targetPort: 29091
selector:
app: esb-console
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: esb-console
namespace: primeton-poc
spec:
replicas: 1
selector:
matchLabels:
app: esb-console
strategy:
type: Recreate
template:
metadata:
labels:
app: esb-console
spec:
nodeName: node03
containers:
- name: esb-console
image: esb-governor-image:V1
command:
[
"sh",
"-c",
"sh bin/startup.sh",
]
imagePullPolicy: IfNotPresent
ports:
- containerPort: 29091
volumeMounts:
- name: conf-volume
mountPath: "/opt/governor/config"
- name: logs-volume
mountPath: "/opt/governor/logs"
volumes:
- name: logs-volume
hostPath:
path: /home/primeton/poc/esb-console-logs
type: DirectoryOrCreate
- name: conf-volume
hostPath:
path: /home/primeton/poc/esb-console-conf
type: DirectoryOrCreate
spring:
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
jpa:
hibernate:
ddl-auto: none
database-platform: org.hibernate.dialect.MySQLDialect
datasource:
druid:
username: root
password: root
url: jdbc:mysql://127.0.0.1:3306/esb8?useUnicode=true&characterEncoding=UTF-8
driver-class-name: com.mysql.jdbc.Driver
max-active: 20
min-idle: 10
query-timeout: 5
max-wait: 5000
max-wait-thread-count: 10
validation-query-timeout: 3
transaction-query-timeout: 5
http:
multipart:
maxFileSize: 50Mb
maxRequestSize: 100Mb
esb:
business: true
database:
init: false
#强制初始化
enforceInit: false
auth:
lock:
enable: true
lockCount: 5
lockTime: 1800000
maxErrorTime: 1800000
feign:
hystrix:
enabled: false
management:
security:
enabled: false
security:
iam:
enabled: true
login-url: /login
logout-url: /logout
basic:
enabled: false
ignored:
- favicon.ico
- /swagger-resources/**
- /swagger-ui.html
- /v2/api-docs
- /webjars/**
- /functions/functionCode/**
- /index.html
- /static/**
- /
enable-csrf: false
elasticsearch:
enabled: true
ioThreadCount: 50
connectTimeout: 60000 #单位ms
maxTotal: 10000
maxPerRoute: 1000
numberOfShards: 1
numberOfReplicas: 0
refreshInterval: 10s
username:
password:
hosts:
- ip: 127.0.0.1
port: 9200
protocol: http
# 2.4.5.部署服务
# 2.4.5.1.部署
可以在部署的时候,根据实际需要修改,部署示例:
kubectl apply -f esb-governor.yml
# 2.4.5.2.查看日志
部署完成后,可以查看pod日志,确保部署后,服务启动成功,先找到部署的pod,再查看日志
#获取pod ,svc
kubectl get pod,svc -n primeton-poc
#查看日志
kubectl logs ${pod-name}