[TOC]
# 一、安装git&
~~~
$ yum install -y git
$ git clone --branch kubernetes https://gitee.com/wells2333/sg-exam.git
$ cd sg-exam
~~~
![](https://img.kancloud.cn/1d/6a/1d6aad3080f728cdecab99be91143521_1280x504.png)
# 二、配置
## 数据库
分为本地环境和生产环境,区别主要是数据库的配置不一样
本地环境默认采用内嵌数据库,并且自动初始化脚本**不需要额外安装MySQL**
生产环境建议采用外部数据库服务,默认通过域名访问`sg.exam.mysql.com`数据库的,可以配置host,配置成对应的IP地址,如:
```
192.168.31.89 sg.exam.mysql.com
```
MySQL的用户名和密码配置在`mysql-credentials`里,具体见`deploy-prod.bash`,可根据实际情况修改
本地环境的运行脚本:`deploy-dev.bash`
生产环境的运行脚本:`deploy-prod.bash`
两个脚本主要逻辑:
* 创建namespace、configmap、secret
* 启动服务
## Redis
默认内嵌Redis服务,不需要额外安装
如有需要,可参考MySQL的配置,增加一个`type=ExternalName`的服务,详见`mysql-prod.yml`
Redis的配置见`deploy-dev.bash`、`deploy-prod.bash`
# 三、打包、构建镜像
构建服务镜像,包括后端微服务、前端服务、数据库镜像,构建时间可能有点长,耐心等待即可,构建命令:
```
./gradlew build && docker-compose build
```
![](https://img.kancloud.cn/98/96/9896722c3e1aa14a8deb258c9285c59e_1180x726.png)
构建成功:
![](https://img.kancloud.cn/09/5d/095dde6dd0cc37627e639cd74261aa3b_1194x738.png)
# 四、部署
镜像构建完成后,执行部署脚本:
```
./kubernetes/scripts/deploy-prod.bash
```
该脚本的执行创建namespace `sg-exam`,创建`configmap`、`secret`,部署各个服务
![](https://img.kancloud.cn/e7/31/e7313bd408b8c37541c6852c4d2ef738_1772x1472.png)
# 查看容器启动
执行脚本后,登录k8s控制台查看启动情况,首先启动k8s控制台:
```
kubectl proxy --port=8001
```
![](https://img.kancloud.cn/9a/2f/9a2f3744de9ee6f90c51a2383099626b_532x98.png)
访问:[http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
](http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/)
命名空间选择sg-exam,看到如下界面即表示服务正常启动:
![](https://img.kancloud.cn/d5/b9/d5b915d7bf6425c5c1ca24f0f7ecc4fd_2812x1346.png)
# 五、访问系统
服务正常启动后,即可访问后台或前台进入系统:
前台:http://localhost/
后台:http://localhost/admin
可用以下账号登录:
| 单位ID | 账号 | 密码 | 角色 |
| --------- | -------- | -------- | -------- |
| gitee | admin | 123456 | 管理员 |
| gitee | student | 123456 | 学生 |
| gitee | teacher | 123456 | 老师 |
前台首页:
![](https://img.kancloud.cn/7b/1a/7b1a655eeb5f5ed29a6e0943f9032f29_2880x1598.png)
后台首页:
![](https://img.kancloud.cn/4f/f4/4ff4afa70b0d5d52dee6dba07fcc6f3b_1000x555.jpg)
# 六、系统监控
主要介绍部署并启动相关监控组件
## 部署kiali
```
$ cd /usr/local/istio-1.11.2
$ kubectl apply -f samples/addons
```
![](https://img.kancloud.cn/b2/21/b221331bde67486183d4c3f60aa8cbf8_1214x574.png)
可能pod会起不来,一般是因为pull镜像失败,重试几次或者手动pull一下失败镜像就行了,如我本机kiali起不来,手动pull镜像就行了`docker pull quay.io/kiali/kiali:v1.38`
检查pod运行状况
```
$ kubectl get pod -n istio-system
```
![](https://img.kancloud.cn/f0/7e/f07e32907ae679bf3b3376c6d69af0b1_1216x374.png)
启用kiali
```
$ istioctl dashboard kiali
```
访问[http://localhost:2978/kiali](http://localhost:2978/kiali)
![](https://img.kancloud.cn/63/f0/63f0156cce61d2c2b15ac1690243b8e5_2858x1434.png)
![](https://img.kancloud.cn/02/df/02dfe579780ffdbc6ef832f58551f455_2840x1574.png)
参考资料:[可观察性工具 kiali](https://jimmysong.io/istio-handbook/setup/istio-observability-tool-kiali.html)
## jaeger
```
istioctl dashboard jaeger
```
访问[http://localhost:16686/jaeger/search](http://localhost:16686/jaeger/search)
![](https://img.kancloud.cn/a6/cc/a6cc2817e05ababb69bb765a4edb9113_2850x1498.png)
## prometheus
```
istioctl dashboard prometheus
```
访问[http://localhost:9090](http://localhost:9090)
## 其它监控
istioctl dashboard
```
$ istioctl dashboard
```
![](https://img.kancloud.cn/84/6a/846a17fb103c742dc6e9202da4b9d8e6_1144x628.png)