diff --git a/.vuepress/config.js b/.vuepress/config.js index 5673bf8..ef9f0df 100644 --- a/.vuepress/config.js +++ b/.vuepress/config.js @@ -1,7 +1,7 @@ let dateFns = require('date-fns') module.exports = { - title: 'Kuboard官网_Kubernetes管理界面', + title: 'Kuboard官网', description: '一款Kubernetes_Dashboard_简化Kubernetes的学习和使用_帮助您快速落地Kubernetes_提供_Kubernetes_免费中文教程_国内安装文档', head: [ ['meta', {name: 'keywords', content: 'Kubernetes教程,Kubernetes安装,K8S教程,K8S安装,Kubernetes管理界面'}], @@ -360,6 +360,8 @@ module.exports = { 'k8s-practice/ocp/redis', 'k8s-practice/ocp/auth-server', 'k8s-practice/ocp/user-center', + 'k8s-practice/ocp/api-gateway', + 'k8s-practice/ocp/back-center', ] }, ] diff --git a/.vuepress/theme/components/PageVssue.vue b/.vuepress/theme/components/PageVssue.vue index 8504149..4c77d71 100644 --- a/.vuepress/theme/components/PageVssue.vue +++ b/.vuepress/theme/components/PageVssue.vue @@ -10,6 +10,12 @@ + diff --git a/README.md b/README.md index 0dc91ab..87e7b00 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ --- home: false layout: HomePage -title: Kuboard官网_Kubernetes教程_k8s国内安装_部署_入门_学习_实践_中文文档_微服务管理界面 +title: Kuboard官网_Kubernetes教程_K8S安装_管理界面 description: Kuboard官网首页_Kubernetes_k8s_国内安装_部署_入门_免费中文教程_实践_微服务管理界面 actionText: 在线体验 actionText2: 开始使用 → @@ -15,7 +15,7 @@ features: details: 资源层监控、中间件层监控、链路层监控 --- -# 简介 +## 简介 Kuboard 是一款基于 Kubernetes 的微服务管理界面。 @@ -28,11 +28,11 @@ Kuboard 是一款基于 Kubernetes 的微服务管理界面。 ![Kubernetes教程:Kuboard在线演示](./overview/README.assets/1564841972085.gif) -# Kubernetes免费教程 +## Kubernetes免费教程 Kubernetes教程的主要依据是:Kubernetes 官网文档,以及使用 Kuboard 落地 Spring Cloud 微服务的实战经验 -## **Kubernetes入门** +### Kubernetes入门 * [0. 学习Kubernetes基础知识](https://kuboard.cn/learning/k8s-basics/kubernetes-basics.html) (10分钟) * [1. 部署第一个应用程序](https://kuboard.cn/learning/k8s-basics/deploy-app.html) (5分钟) * [2. 查看 Pods / Nodes](https://kuboard.cn/learning/k8s-basics/explore.html) (10分钟) @@ -41,7 +41,7 @@ Kubernetes教程的主要依据是:Kubernetes 官网文档,以及使用 Kubo * [5. 执行滚动更新](https://kuboard.cn/learning/k8s-basics/update.html) (10分钟) * [6. 复习Kubernetes核心概念](https://kuboard.cn/learning/k8s-basics/k8s-core-concepts.html) (10分钟) -## **Kubernetes进阶** +### Kubernetes进阶 * [使用私有 registry 中的 docker 镜像](https://kuboard.cn/learning/k8s-intermediate/private-registry.html) * 工作负载 * [容器组 - 概述](https://kuboard.cn/learning/k8s-intermediate/workload/pod.html) @@ -72,13 +72,13 @@ Kubernetes教程的主要依据是:Kubernetes 官网文档,以及使用 Kubo * [污点和容忍 taints and toleration](https://kuboard.cn/learning/k8s-intermediate/config/taints-toleration/) * [Secrets](https://kuboard.cn/learning/k8s-intermediate/config/secrets/) -## **Kubernetes高级** +### Kubernetes高级 * Kubernetes 日志可视化 * Kubernetes 监控 * Kubernetes 联邦 -## **Kubernetes实战** +### Kubernetes实战 在 Kubernetes 上部署 Spring Cloud 微服务: diff --git a/learning/k8s-practice/ocp/api-gateway.assets/image-20190930100229660.png b/learning/k8s-practice/ocp/api-gateway.assets/image-20190930100229660.png new file mode 100644 index 0000000..7875ffa Binary files /dev/null and b/learning/k8s-practice/ocp/api-gateway.assets/image-20190930100229660.png differ diff --git a/learning/k8s-practice/ocp/api-gateway.assets/image-20190930101052438.png b/learning/k8s-practice/ocp/api-gateway.assets/image-20190930101052438.png new file mode 100644 index 0000000..4b30e92 Binary files /dev/null and b/learning/k8s-practice/ocp/api-gateway.assets/image-20190930101052438.png differ diff --git a/learning/k8s-practice/ocp/api-gateway.md b/learning/k8s-practice/ocp/api-gateway.md new file mode 100644 index 0000000..8c3d27b --- /dev/null +++ b/learning/k8s-practice/ocp/api-gateway.md @@ -0,0 +1,117 @@ +--- +vssueId: 100 +layout: LearningLayout +description: Kubernetes教程_使用Kuboard在Kubernetes上部署Spring_Cloud微服务平台OCP_open_capacity_platform微服务能力开放平台_部署api-gateway +--- + +# 在K8S上部署api-gateway + +本文假设您已经完成了 [在Kubernetes 上部署 Spring Cloud - OCP](./) 系列教程的前面部分,并已经完成了 eureka-server、api-gateway-mysql、log-center-mysql、redis、auth-server、user-center 在 K8S 上的部署。 + +## 理解api-gateway + +api-gateway 是一个 Spring Boot 项目,其配置文件位于路径 `api-gateway/src/main/resources`,该目录内容如下所示: + +``` sh +├── application.yml +├── bootstrap.yml +└── mybatis.cfg.xml +``` + +### 监听端口 + +参考 `bootstrap.yml` 的如下代码片段,api-gateway监听 7000 端口 + +``` yaml {3} +#端口配置 +server: + port: 9200 +``` + +### 依赖项 + +api-gateway 的部署依赖有: +* eureka-server +* mysql +* redis + +上述依赖在教程的前面部分都已经完成部署。 + +这些依赖项的情况与 [auth-server依赖项](./auth-server.html#依赖项) 的情况大致相同,此处不再重复描述 + + +## 确定部署方案 + +api-gateway 为无状态服务,使用 Deployment 部署。 + +根据 [在K8S上部署eureka-server](./eureka-server.html)、 [在K8S上部署mysql](./mysql.html)、 [在K8S上部署redis](./redis.html) 的部署结果,我们应该通过环境变量覆盖 api-gateway 的如下参数: + +* 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.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 + ``` +* spring.datasource.druid.log.username + + `root` 与默认配置相同 +* spring.datasource.druid.log.password + + `root` 与默认配置相同 +* spring.redis.host + + `cloud-redis` +* spring.redis.port + + `6379` 与默认配置相同 + +## 部署api-gateway + +* 在 Kuboard 界面进入 `ocp` 名称空间,点击 **创建工作负载** 按钮,并填写表单,如下图所示: + + | 字段名称 | 填写内容 | 备注 | + | -------- | ------------------------------------------------------------ | ------------------------------------------- | + |
服务类型
| Deployment | | + | 服务分层 | 服务层 | | + | 服务名称 | api | | + | 服务描述 | 接口网关 | | + | 副本数 | 1 | | + | 容器名称 | api-gateway | | + | 镜像 | ocpsample/api-gateway: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` 服务端口`9200` 容器端口 `9200` | | + | Ingress | 域名 `api-gateway.ocp.demo.kuboard.cn`
URL `/` 服务端口 `9200` | 请使用您自己的Ingress域名 | + + ::: tip 域名 + * 该域名由 `工作负载名`.`名称空间`.`集群名字`.`一级域名` 组成,这种命名规则下,只需要将 `*.demo.kuboard.cn` 的域名解析指向集群 Ingress Controller 的地址就可以 + * 接口网关直接 + * 服务层的服务通过 eureka-server 进行服务发现,因此,原则上不需要为 Spring Cloud 在服务层的 Pod 配置 Kubernetes Service,此处是为了配置 Ingress 才启用 Kubernetes Service + ::: + + ![Kubernetes教程_部署SpringCloud微服务_OCP_api-gateway](./api-gateway.assets/image-20190930100229660.png) + + ## 检查部署结果 + +* 在浏览器访问 [http://api-gateway.ocp.demo.kuboard.cn/doc.html](http://api-gateway.ocp.demo.kuboard.cn/doc.html) + > 此处请使用您自己的 url + + ![Kubernetes教程_部署SpringCloud微服务_OCP_api-gateway_检查部署结果](./api-gateway.assets/image-20190930101052438.png) + + +* :tada: :tada: :tada: 您已在 K8S 上完成了 api-gateway 的部署 diff --git a/learning/k8s-practice/ocp/auth-server.md b/learning/k8s-practice/ocp/auth-server.md index d7bb531..03dba92 100644 --- a/learning/k8s-practice/ocp/auth-server.md +++ b/learning/k8s-practice/ocp/auth-server.md @@ -146,7 +146,7 @@ auth-server 为无状态服务,使用 Deployment 部署。 | 容器名称 | 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
| 此处的内容与前面的mysql 和 redis 的部署匹配,请谨慎修改 | + | 环境变量 |
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域名 | diff --git a/learning/k8s-practice/ocp/back-center.md b/learning/k8s-practice/ocp/back-center.md new file mode 100644 index 0000000..b89893e --- /dev/null +++ b/learning/k8s-practice/ocp/back-center.md @@ -0,0 +1,12 @@ +--- +vssueId: 101 +layout: LearningLayout +description: Kubernetes教程_使用Kuboard在Kubernetes上部署Spring_Cloud微服务平台OCP_open_capacity_platform微服务能力开放平台_部署back-center +meta: + - name: keywords + content: Kubernetes部署SpringCloud,Kubernetes部署OCP +--- + +# 在K8S上部署back-center + +正在撰写 diff --git a/learning/k8s-practice/ocp/eureka-server.md b/learning/k8s-practice/ocp/eureka-server.md index 06fc843..78a347a 100644 --- a/learning/k8s-practice/ocp/eureka-server.md +++ b/learning/k8s-practice/ocp/eureka-server.md @@ -80,7 +80,7 @@ description: Kubernetes教程_使用Kuboard在Kubernetes上部署Spring_Cloud微 | 字段名称 | 填写内容 | 备注 | | -------- | ------------------------------------------------------------ | ---- | - | 服务类型 | StatefulSet | | + |
服务类型
| StatefulSet | | | 服务分层 | 中间件 | | | 服务名称 | eureka | | | 服务描述 | 服务注册中心 | | @@ -88,7 +88,7 @@ description: Kubernetes教程_使用Kuboard在Kubernetes上部署Spring_Cloud微 | 容器名称 | eureka-server | | | 镜像 | ocpsample/eureka-server:latest | 也可以使用自己构建的镜像 | | 抓取策略 | Always | | - | 环境变量 |
eureka.client.service-url.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
eureka.instance.prefer-ip-address=false
| | + | 环境变量 |
eureka.client.service-url.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
eureka.instance.prefer-ip-address=false
| 填入 kuboard 时
环境变量名后面不带 `=` | | Service | NodePort:
协议 `TCP` 服务端口 `1111`节点端口 `31111` 容器端口 `1111` | 可从节点端口访问 | | Ingress | 域名:cloud-eureka.ocp.demo.kuboard.cn
路由配置: 映射URL `/` 服务端口 `1111` | 可通过域名访问 | diff --git a/learning/k8s-practice/ocp/user-center.md b/learning/k8s-practice/ocp/user-center.md index 6c454f9..6777c40 100644 --- a/learning/k8s-practice/ocp/user-center.md +++ b/learning/k8s-practice/ocp/user-center.md @@ -95,7 +95,7 @@ user-center 为无状态服务,使用 Deployment 部署。 | 容器名称 | user-center | | | 镜像 | ocpsample/user-center: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-user-center:3306/user-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
| 此处的内容与前面的mysql 和 redis 的部署匹配,请谨慎修改 | + | 环境变量 |
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-user-center:3306/user-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` 服务端口`7000` 容器端口 `7000` | | | Ingress | 域名 `svc-user-center.ocp.demo.kuboard.cn`
URL `/` 服务端口 `7000` | 请使用您自己的Ingress域名 |