关于kubernetes:10分钟在-Rainbond-上部署-mall-电商项目

25次阅读

共计 4165 个字符,预计需要花费 11 分钟才能阅读完成。

很多小伙伴在学习 mall 电商我的项目时,都会在部署上折腾许久,尽管目前曾经提供了很多种部署形式,比方 在 Linux 上部署 mall 应用 Docker 或 DockerCompose 部署 mall,但对于正在学习的咱们都显得比较复杂,须要了解并学习这些容器技术。而本文将应用 Rainbond 部署 mall 电商我的项目,通过 Rainbond 部署 mall 商城我的项目十分不便、简略,让咱们专一于代码,Rainbond 是一个云原生利用治理平台,应用简略,不须要懂容器、Kubernetes 和底层简单技术,轻松的在 Kubernetes 上部署利用并体验 Kubernetes 带来的能力。

本文介绍在 Rainbond 上的两种部署 mall 电商我的项目的形式:

  1. 通过 Rainbond 开源利用商店疾速部署 mall
  2. 从 0 开始部署 mall 我的项目所有服务

前提

装置可用的 Rainbond 环境,Linux、Mac、Win 上均可装置,参阅 Rainbond 疾速装置

通过利用商店疾速部署 mall

mall 电商我的项目已公布到 Rainbond 开源利用商店,能够通过开源利用商店一键部署,在 平台治理 -> 利用市场 -> 开源利用商店 中搜寻 mall 并装置。

此时 Rainbond 会主动构建、启动 mall 所有服务,只需期待即可,部署实现后拓扑图如下:

拜访 mall-admin-web 前端我的项目验证部署,默认用户明码:admin / macro123

mall-portalmall-search 临时没有前端,能够拜访后端 swagger 验证部署 http://xxx/swagger-ui/,如下:

从零开始部署 mall

中间件部署

mall 须要用到的中间件有:Mysql Redis RabbitMQ MongoDB ElasticSearch,这些中间件都能够通过 Rainbond 开源利用商店部署。

装置 Redis

在开源利用商店中搜寻 Redis 并装置 5.x 版本

装置 MongoDB

在开源利用商店中搜寻 MongoDB 并装置 4.x 版本

装置 RabbitMQ

在开源利用商店中搜寻 RabbitMQ 并装置

装置 MySQL

在开源利用商店中搜寻 MySQL 并装置 5.7 版本

  1. 在 Mysql 组件 -> 端口 关上对外端口服务,通过 IP:PORT 连贯,默认用户明码 root / root
  2. 通过工具连贯并导入 mall sql 数据。

装置 ElasticSearch

在开源利用商店中搜寻 ElasticSearch 并装置 7.15.2 版本

  • ElasticSearch 利用蕴含了 Kinbana,如不须要可删除 Kinbana 组件
  • ElasticSearch 默认开启了明码验证,在 组件 -> 环境配置 -> 配置文件设置 编辑配置文件将 xpack.security.enabled 设置为 false 并更新组件失效。

装置中文分词器 IK Analyzer

  1. 首先在 团队视图 -> 插件 -> 新增插件 -> 通过利用商店装置插件 搜寻 ES-IK-Analysis 并装置插件
  2. 为 ElasticSearch 组件增加存储, 组件 -> 存储 -> 增加存储

    • 名称:自定义
    • 挂载门路:/usr/share/elasticsearch/plugins
    • 类型:共享存储
  3. 进入 组件 -> 插件 -> 未开明 ,开明 ES-IK-Analysis 插件
  4. 更新或重启 ElasticSearch 组件即可失效。

部署 mall 后端服务

批改我的项目代码配置

正文主 pom.xml 文件中的 execution 局部,不须要在我的项目中配置 Docker 打包我的项目,打包工作交给 Rainbond 解决,pom.xml 配置如下:

<!-- 
<execution>
  <id>build-image</id>
  <phase>package</phase>
  <goals>
    <goal>build</goal>
  </goals>
</execution>
-->

批改 mall-admin 服务的 application-dev.yml 文件,内容如下:

spring:
  datasource:
    url: jdbc:mysql://${MYSQL_HOST}:${MYSQL_PORT}/${MYSQL_DATABASE}?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false #MySQL 连贯地址
    username: ${MYSQL_USERNAME} #MySQL 用户
    password: ${MYSQL_PWD} #MySQL 明码
  ......
  redis:
    host: ${REDIS_HOST} #Redis 连贯地址
  ......

批改 mall-portal 服务的 application-dev.yml 文件,内容如下:

spring:
  datasource:
    url: jdbc:mysql://${MYSQL_HOST}:${MYSQL_PORT}/${MYSQL_DATABASE}?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false #MySQL 连贯地址
    username: ${MYSQL_USERNAME} #MySQL 用户
    password: ${MYSQL_PWD} #MySQL 明码
  ......
  data:
    mongodb:
      host: ${MONGODB_HOST} #MySQL 连贯地址为环境变量
      port: 27017
      database: mall-port
  redis:
    host: ${REDIS_HOST} #Redis 服务器地址
  ......
  rabbitmq:
    host: ${AMQP_HOST} #RabbitMQ 连贯地址
    virtual-host: ${RABBITMQ_DEFAULT_VHOST} #RabbitMQ virtual host
    username: ${RABBITMQ_DEFAULT_USER} #RabbitMQ 用户
    password: ${RABBITMQ_DEFAULT_PASS} #RabbitMQ 明码
  ......

批改 mall-search 服务的 application-dev.yml 文件,内容如下:

spring:
  datasource:
    url: jdbc:mysql://${MYSQL_HOST}:${MYSQL_PORT}/${MYSQL_DATABASE}?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false #MySQL 连贯地址
    username: ${MYSQL_USERNAME} #MySQL 用户
    password: ${MYSQL_PWD} #MySQL 明码
  ......
  elasticsearch:
    uris: ${ES_HOST}:${ES_PORT} #ElasticSearch 连贯地址
  ......

为什么都要改成环境变量的形式呢,因为这样更灵便,只需批改简略的变量配置能够让 mall 我的项目在任何环境中运行。而在 Rainbond 中,组件之间建设了依赖关系之后,会主动注入被依赖组件的环境变量,这样咱们连环境变量都不必配置,更加不便,原理可参阅 Rainbond 组件之间的环境变量注入。

部署后端组件

在团队视图或利用视图 新增从源码创立组件:

  • 组件名称:自定义
  • 组件英文名称:自定义
  • 仓库地址:https://github.com/zzzhangqi/mall.git
  • 代码版本:master

以上仓库曾经批改了上述的代码配置

此时 Rainbond 会检测到我的项目为多模块我的项目,进入多模块我的项目构建:勾选 mall-admin、mall-portal、mall-search 并构建。

进入每个组件内 -> 端口,删除默认的 5000 端口,增加新的组件对应端口:

  • mall-admin:8080
  • mall-portal:8085
  • mall-search:8081

建设组件间的依赖关系

在利用内,切换到编辑模式,依照以下依赖关系并建设连贯:

给组件之间增加依赖

部署 mall 前端服务

很多时候咱们的后端服务个别是不对外提供拜访的,如果采纳当初的配置那么在部署的时候,config/prod.env.js 中后端的地址就必须与前端的拜访地址一样,如果不一样则会产生跨域,如下:

module.exports = {
  NODE_ENV: '"production"',
  BASE_API: '"https://admin-api.xxx.com"'
}

如何不裸露后端服务的同时又能解决跨域,能够应用 Nginx 反向代理后端服务。

config/prod.env.js 定义一个不存在的接口,比方 /api

module.exports = {
  NODE_ENV: '"production"',
  BASE_API: '"/api"'
}

比方当初前端拜访登陆接口的 URL 是 /api/admin/login,显然 /api 不是咱们的接口,/admin/login 才是,那么通过 Nginx URL 重写,把 /api 重写,拜访到后端的接口就是 /admin/login 此时接口正确就能够失常返回数据,也能解决跨域问题同时后端服务也不必对外裸露。

server {
    listen 80;

    location / {
      root /app/www;
      index index.html index.htm;
    }

    location  /api {rewrite ^/api/(.*)$ /$1 break;
        proxy_pass http://127.0.0.1:8080;
    }
}

部署前端组件

在团队视图或利用视图 新增从源码创立组件:

  • 组件名称:自定义
  • 组件英文名称:自定义
  • 仓库地址:https://github.com/zzzhangqi/mall-admin-web.git
  • 代码版本:master

以上仓库曾经增加了上述配置

增加 mall-admin-web 依赖于 mall-admin

验证部署

拜访 mall-admin-web 前端我的项目验证部署,默认用户明码:admin / macro123。mall-portalmall-search 临时没有前端,能够拜访后端 swagger 验证部署 http://xxx/swagger-ui/

最初

下一期出在 Rainbond 上部署 mall-swarm 微服务项目实际。

正文完
 0