[TOC]
# 一、安装git&
~~~
$ yum install -y git
$ git clone --branch kubernetes https://gitee.com/wells2333/sg-exam.git
$ cd sg-exam
~~~

# 二、配置
## 数据库
分为本地环境和生产环境,区别主要是数据库的配置不一样
本地环境默认采用内嵌数据库,并且自动初始化脚本**不需要额外安装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
```

构建成功:

# 四、部署
镜像构建完成后,执行部署脚本:
```
./kubernetes/scripts/deploy-prod.bash
```
该脚本的执行创建namespace `sg-exam`,创建`configmap`、`secret`,部署各个服务

# 查看容器启动
执行脚本后,登录k8s控制台查看启动情况,首先启动k8s控制台:
```
kubectl proxy --port=8001
```

访问:[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,看到如下界面即表示服务正常启动:

# 五、访问系统
服务正常启动后,即可访问后台或前台进入系统:
前台:http://localhost/
后台:http://localhost/admin
可用以下账号登录:
| 单位ID | 账号 | 密码 | 角色 |
| --------- | -------- | -------- | -------- |
| gitee | admin | 123456 | 管理员 |
| gitee | student | 123456 | 学生 |
| gitee | teacher | 123456 | 老师 |
前台首页:

后台首页:

# 六、系统监控
主要介绍部署并启动相关监控组件
## 部署kiali
```
$ cd /usr/local/istio-1.11.2
$ kubectl apply -f samples/addons
```

可能pod会起不来,一般是因为pull镜像失败,重试几次或者手动pull一下失败镜像就行了,如我本机kiali起不来,手动pull镜像就行了`docker pull quay.io/kiali/kiali:v1.38`
检查pod运行状况
```
$ kubectl get pod -n istio-system
```

启用kiali
```
$ istioctl dashboard kiali
```
访问[http://localhost:2978/kiali](http://localhost:2978/kiali)


参考资料:[可观察性工具 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)

## prometheus
```
istioctl dashboard prometheus
```
访问[http://localhost:9090](http://localhost:9090)
## 其它监控
istioctl dashboard
```
$ istioctl dashboard
```

