diff --git a/learning/k8s-practice/ocp/api-gateway.md b/learning/k8s-practice/ocp/api-gateway.md index 8c3d27b..512d5ba 100644 --- a/learning/k8s-practice/ocp/api-gateway.md +++ b/learning/k8s-practice/ocp/api-gateway.md @@ -100,8 +100,7 @@ api-gateway 为无状态服务,使用 Deployment 部署。 ::: tip 域名 * 该域名由 `工作负载名`.`名称空间`.`集群名字`.`一级域名` 组成,这种命名规则下,只需要将 `*.demo.kuboard.cn` 的域名解析指向集群 Ingress Controller 的地址就可以 - * 接口网关直接 - * 服务层的服务通过 eureka-server 进行服务发现,因此,原则上不需要为 Spring Cloud 在服务层的 Pod 配置 Kubernetes Service,此处是为了配置 Ingress 才启用 Kubernetes Service + * 关于 Ingress,请参考 [Ingress通过互联网访问您的应用](/learning/k8s-intermediate/service/ingress.html) :::  diff --git a/learning/k8s-practice/ocp/auth-server.md b/learning/k8s-practice/ocp/auth-server.md index 03dba92..38d22cb 100644 --- a/learning/k8s-practice/ocp/auth-server.md +++ b/learning/k8s-practice/ocp/auth-server.md @@ -153,6 +153,7 @@ auth-server 为无状态服务,使用 Deployment 部署。 ::: tip 域名 * 该域名由 `工作负载名`.`名称空间`.`集群名字`.`一级域名` 组成,这种命名规则下,只需要将 `*.demo.kuboard.cn` 的域名解析指向集群 Ingress Controller 的地址就可以 * 在测试环境,为了更好地测试,才为 svc 配置 Ingress + * 关于 Ingress,请参考 [Ingress通过互联网访问您的应用](/learning/k8s-intermediate/service/ingress.html) * 服务层的服务通过 eureka-server 进行服务发现,因此,原则上不需要为 Spring Cloud 在服务层的 Pod 配置 Kubernetes Service,此处是为了配置 Ingress 才启用 Kubernetes Service ::: diff --git a/learning/k8s-practice/ocp/back-center.assets/image-20190930230236651.png b/learning/k8s-practice/ocp/back-center.assets/image-20190930230236651.png new file mode 100644 index 0000000..a9b0aa9 Binary files /dev/null and b/learning/k8s-practice/ocp/back-center.assets/image-20190930230236651.png differ diff --git a/learning/k8s-practice/ocp/back-center.md b/learning/k8s-practice/ocp/back-center.md index b89893e..dace104 100644 --- a/learning/k8s-practice/ocp/back-center.md +++ b/learning/k8s-practice/ocp/back-center.md @@ -4,9 +4,123 @@ layout: LearningLayout description: Kubernetes教程_使用Kuboard在Kubernetes上部署Spring_Cloud微服务平台OCP_open_capacity_platform微服务能力开放平台_部署back-center meta: - name: keywords - content: Kubernetes部署SpringCloud,Kubernetes部署OCP + content: Kubernetes部署SpringCloud,Kubernetes部署OCP,Kuboard部署OCP --- # 在K8S上部署back-center -正在撰写 +本文假设您已经完成了 [在Kubernetes 上部署 Spring Cloud - OCP](./) 系列教程的前面部分,并已经完成了 eureka-server、user-center-mysql、log-center-mysql、redis、auth-server、user-center 在 K8S 上的部署。 + +## 理解back-center + +back-server 是一个前端项目,OCP中,将其运行在一个 SpringBoot 中。 + +该项目中,与服务端连接的参数,请参考 `web-portal/back-center/src/main/view/static/module/config.js` 中的如下代码片段,OCP需要在前端项目中引用: +* `base_server` 即 api-gateway 的 URL 地址,`http://api-gateway.ocp.demo.kuboard.cn/` +* `eureka_server` 即 eureka-server 的 URL 地址 `http://cloud-eureka.ocp.demo.kuboard.cn/` (经确认,实际并没用到,我们在此处仍然修改该取值) + +### 依赖项 + +back-center 的部署依赖有: +* api-gateway + +上述依赖在教程的前面部分都已经完成部署。 + +## 确定部署方案 + +back-center 为无状态服务,使用 Deployment 部署。 + +前端项目中需要替换的两个参数都是 js 代码中的内容,执行点是客户端浏览器,因此,不能够通过环境变量注入该参数。由于我们只需要 `web-portal/back-center/src/main/view/static` 目录下的静态内容,且 js 中的变量不能像 java 一样,通过环境变量覆盖,此时,我们使用 nginx 部署该项目显得更为合理一些。 + +因此,我们为其构建一个 nginx 的 docker 镜像。 + +### 构建docker镜像 + +* 在 master 节点上执行本章节 “构建docker镜像” 的内容 + +* 创建文件 `/root/open-capacity-platform/web-portal/back-center/entry-point.sh`,内容如下所示: + + 该文件在启动 nginx 前,从环境变量获得参数,并以此为依据,使用 sed 命令修改 config.js 中对应字段的取值,以便我们能够获得一个可以适应测试环境、生产环境部署的 docker 镜像。 + + ``` sh + #!/bin/sh + echo "GATEWAY_API_URL 为 ${GATEWAY_API_URL}" + echo "CLOUD_EUREKA_URL 为 ${CLOUD_EUREKA_URL}" + sed -i "s#base_server.*#base_server: '${GATEWAY_API_URL}',#g" /usr/share/nginx/html/module/config.js + sed -i "s#eureka_server.*#eureka_server: '${CLOUD_EUREKA_URL}',#g" /usr/share/nginx/html/module/config.js + echo "参数修改完毕,如下所示:" + cat /usr/share/nginx/html/module/config.js + echo "" + echo "启动 nginx" + nginx -g "daemon off;" + ``` + +* 创建文件 `/root/open-capacity-platform/web-portal/back-center/dockerfile`,内容如下所示: + + ``` dockerfile + FROM nginx:1.17.1 + LABEL maintainer="kuboard.cn" + + ADD ./entry-point.sh /entry-point.sh + RUN chmod +x /entry-point.sh && rm -rf /usr/share/nginx/html + + # 创建环境变量的默认内容,防止 sed 脚本出错 + ENV GATEWAY_API_URL http://gateway_api_url_not_set/ + ENV CLOUD_EUREKA_URL http://cloud_eureka_url_not_set/ + ADD ./src/main/view/static /usr/share/nginx/html + + EXPOSE 80 + CMD ["/entry-point.sh"] + ``` + +* 构建 docker 镜像并推送 + + ``` sh + # 切换到 back-center 目录 + cd /root/open-capacity-platform/web-portal/back-center + # 使用你自己的 docker 用户名登录 + docker login + # 构建镜像 + docker build -t ocpsample/back-center:latest . + # 推送镜像 + docker push ocpsample/back-center:latest + ``` + + +## 部署back-center + +* 在 Kuboard 界面进入 `ocp` 名称空间,点击 **创建工作负载** 按钮,并填写表单,如下图所示: + + | 字段名称 | 填写内容 | 备注 | + | -------- | ------------------------------------------------------------ | ------------------------------------------- | + |