# 在K8S上部署auth-server
本文假设您已经完成了 在Kubernetes 上部署 Spring Cloud - OCP 系列教程的前面部分,并已经完成了 eureka-server、auth-center-mysql、redis 在 K8S 上的部署。
# 理解auth-server
auth-server 是一个 Spring Boot 项目,其配置文件位于路径 oauth-center/auth-server/src/main/resources
,该目录内容如下所示:
├── application.yml
├── bootstrap.yml
└── mybatis.cfg.xml
2
3
# 监听端口
参考 bootstrap.yml
的如下代码片段,auth-server 监听 8000 端口
#端口
server:
port: 8000
# port: ${randomServerPort.value[8000,8000]} #随机端口
2
3
4
# 依赖项
auth-server 的部署依赖有:
- eureka-server
- mysql
- redis
上述依赖在教程的前面部分都已经完成部署。
- eureka-server 依赖项
参考 bootstrap.yml
的如下代码片段,auth-server 中默认配置的 eureka-server 的地址为 http://127.0.0.1:1111/eureka
#eureka client 配置
eureka:
client:
serviceUrl:
defaultZone: http://127.0.0.1:1111/eureka #http://130.75.131.241:8761/eureka,http://130.75.131.248:8762/eureka
#http://134.224.249.33:1111/eureka/ 正式库
#http://134.224.249.33:1111/eureka/ 测试库
2
3
4
5
6
7
- mysql 依赖项
参考 application.yml
的如下代码片段,auth-server 中默认配置的 mysql 的连接参数如下:
spring:
session:
store-type: redis
datasource:
dynamic:
enable: true
druid:
# JDBC 配置(驱动类自动从url的mysql识别,数据源类型自动识别)
core:
url: jdbc:mysql://59.110.164.254:3306/oauth-center?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
log:
url: jdbc:mysql://59.110.164.254:3306/log-center?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
- redis 依赖项
参考 application.yml
的如下代码片段,auth-server 中默认配置的 redis 的连接参数如下:
spring:
# ... ... ...
redis:
################### redis 单机版 start ##########################
host: 59.110.164.254
port: 6379
timeout: 6000
database: 3
2
3
4
5
6
7
8
# 确定部署方案
auth-server 为无状态服务,使用 Deployment 部署。
根据 在K8S上部署eureka-server、 在K8S上部署mysql、 在K8S上部署redis 的部署结果,我们应该通过环境变量覆盖 auth-server 的如下参数:
eureka.client.serviceUrl.defaultZone
http://cloud-eureka-0.cloud-eureka.ocp.svc.cluster.local:1111/eureka,http://cloud-eureka-1.cloud-eureka.ocp.svc.cluster.local:1111/eureka,http://cloud-eureka-2.cloud-eureka.ocp.svc.cluster.local:1111/eureka
1spring.datasource.druid.core.url
jdbc:mysql://db-auth-center:3306/oauth-center?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
1spring.datasource.druid.core.username
root
与默认配置相同spring.datasource.druid.core.password
root
与默认配置相同spring.datasource.druid.log.url
jdbc:mysql://db-log-center:3306/log-center?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
1spring.datasource.druid.log.username
root
与默认配置相同spring.datasource.druid.log.password
root
与默认配置相同spring.redis.host
cloud-redis
spring.redis.port
6379
与默认配置相同
# 部署auth-server
在 Kuboard 界面进入
ocp
名称空间,点击 创建工作负载 按钮,并填写表单,如下图所示:字段名称 填写内容 备注 服务类型Deployment 服务分层 服务层 服务名称 auth-server 服务描述 认证中心 副本数 1 容器名称 auth-server 镜像 ocpsample/auth-server:latest 抓取策略 Always 环境变量 eureka.client.serviceUrl.defaultZone=http://cloud-eureka-0.cloud-eureka.ocp.svc.cluster.local:1111/eureka,http://cloud-eureka-1.cloud-eureka.ocp.svc.cluster.local:1111/eureka,http://cloud-eureka-2.cloud-eureka.ocp.svc.cluster.local:1111/eureka
spring.datasource.druid.core.url=jdbc:mysql://db-auth-center:3306/oauth-center?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
spring.datasource.druid.log.url=jdbc:mysql://db-log-center:3306/log-center?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
spring.redis.host=cloud-redis填入 kuboard 时
环境变量名后面不带=
此处的内容与前面的mysql 和 redis 的部署匹配,请谨慎修改Service ClusterIP(集群内访问)
协议TCP
服务端口8000
容器端口8000
Ingress 域名 svc-auth-server.ocp.demo.kuboard.cn
URL/
服务端口8000
请使用您自己的Ingress域名 域名
- 该域名由
工作负载名
.名称空间
.集群名字
.一级域名
组成,这种命名规则下,只需要将*.demo.kuboard.cn
的域名解析指向集群 Ingress Controller 的地址就可以 - 在测试环境,为了更好地测试,才为 svc 配置 Ingress
- 关于 Ingress,请参考 Ingress通过互联网访问您的应用
- 服务层的服务通过 eureka-server 进行服务发现,因此,原则上不需要为 Spring Cloud 在服务层的 Pod 配置 Kubernetes Service,此处是为了配置 Ingress 才启用 Kubernetes Service
- 该域名由
# 检查部署结果
在浏览器访问 http://svc-auth-server.ocp.demo.kuboard.cn/swagger-ui.html (opens new window)
此处请使用您自己的 url
🎉 🎉 🎉 您已在 K8S 上完成了 auth-server 的部署