Dew
基于 Apache 2.0 license 分发,如果您要向 Dew
贡献代码或 Fork 为自己的分支项目请遵循许可证要求。
本项目使用修改版的Google CheckStyle做为代码规范,规则文件见 framework/checkstyle/checkstyle.xml
。
代码的变更需要有有对应的单元/集成测试。
目前项目中只有DevOps
部分用到集成测试,对应的需要修改 devops/devops-test.properties
为自己的支撑环境,但请不要提交此文件。
link:./devops/devops-test-example.properties[role=include]
提交前请运行 mvn clean test -P qa
,确认代码通过CheckStyle检查和测试。
发起 Pull Request
后会调用 travis-ci
和 codacy
进行自动化代码检查,如有问题不会执行 Merge
。
开发
环境没有特别要求,如果需要服务间调用可使用 <服务名>.ribbon.listOfServers=<host:port>
的方式,详见 examples/tracing-invokeX-example
。
调试
环境部分模块需要Kubernetes、Docker等服务的支持。
环境 | 模块 | 备注 |
---|---|---|
RabbitMQ |
cluster-rabbit |
测试RabbitMQ |
Kubernetes Docker |
tracing-invokeX-example |
测试服务间调用 |
Kubernetes Docker |
dew-maven-plugin |
DevOps插件 |
Kubernetes Docker |
helloworld-backend helloworld-frontend helloworld-library todo |
测试自动化部署 |
Opentracing Jaeger |
todo |
测试追踪日志 |
Fluentd |
todo |
测试日志采集 |
Prometheus Grafana |
todo |
测试Metrics |
Note
|
如果已按 [devops-env-install] 完成了测试环境的安装配置, 那么可部分使用这一环境进行调试, 否则请按以下流程完成调试环境的安装配置。 |
Important
|
Kubernetes、Docker环境要求使用代理。 详见 [proxies] |
# 使用minikube # 各版本的安装见此 # https://kubernetes.io/docs/tasks/tools/install-minikube/ # 代理设置见此 # https://github.com/kubernetes/minikube/blob/master/docs/http_proxy.md # !!!特别说明!!! # 以上说明有问题,export HTTP_PROXY或set HTTP_PROXY只会设置到宿主环境,但在vm环境不会带入, # 故代理的地址要直接写到 minikube start 的启动参数中 # 代理地址不能写成127.0.0.1,vm中无法解析 # windows 10 示例 minikube start \ --registry-mirror=https://registry.docker-cn.com \ --vm-driver=hyperv --hyperv-virtual-switch=public --memory=4096 \ --docker-env=HTTP_PROXY=http://10.200.20.147:1080 \ --docker-env=HTTPS_PROXY=http://10.200.20.147:1080 \ --docker-env=NO_PROXY=localhost,127.0.0.1,10.96.0.0/12,192.168.99.1/24 # 查询kubernetes IP minikube ip # 安装 dashboard minikube dashboard
minikube ssh docker run -d --hostname rabbit --name rabbit \ --restart=always \ -e RABBITMQ_DEFAULT_USER=dew \ -e RABBITMQ_DEFAULT_PASS=dew123456 \ -p 15672:15672 \ -p 25672:25672\ -p 5671:5671 \ -p 5672:5672 \ -p 4369:4369 \ rabbitmq:management # 访问页面 # Visit: http://<minikube ip>:15672
minikube ssh docker run -d --name jaegertracing \ --restart=always \ -p 5775:5775/udp \ -p 6831:6831/udp \ -p 6832:6832/udp \ -p 5778:5778 \ -p 16686:16686 \ -p 14268:14268 \ -p 9411:9411 \ jaegertracing/all-in-one:latest # 访问页面 # Visit: http://<minikube ip>:16686
minikube ssh # 参考 https://prometheus.io/docs/prometheus/latest/getting_started/#configuring-prometheus-to-monitor-itself # 示例监控的是 web-example 工程,对应的配置: framework/examples/web-example/src/main/resources/application.yml # prometheus使用pull的方式,需要配置应用运行服务器的IP cat >>./prometheus.yml <<EOF scrape_configs: - job_name: 'dew-web-example-actuator' metrics_path: '/actuator/prometheus' scrape_interval: 5s static_configs: - targets: ['10.200.20.147:80'] EOF docker run -d --name prometheus \ --restart=always \ -p 9090:9090 \ -v $PWD/prometheus.yml:/etc/prometheus/prometheus.yml \ prom/prometheus # 访问页面 # Visit: http://<minikube ip>:9090 docker run -d --name=grafana \ --restart=always \ -p 3000:3000 \ -e GF_SECURITY_ADMIN_USER=dew \ -e GF_SECURITY_ADMIN_PASSWORD=dew123456 \ grafana/grafana # 访问页面 # Visit: http://<minikube ip>:3000
Note
|
Windows10请开启 WSL ,不支持WSL的Windows请安装 cygwin
|
# 开启WSL,使用linux环境操作kubernetes,以WSL ubuntu为例 # windows下的用户名 export WIN_USERNAME=i # 为kubernetes IP,使用 ``minikube ip`` 查询 export KUBE_IP=10.200.20.220 # 为linux添加代理 export HTTP_PROXY=http://127.0.0.1:1080 export HTTPS_PROXY=http://127.0.0.1:1080 export NO_PROXY=localhost,127.0.0.1,10.96.0.0/12,192.168.99.1/24,$KUBE_IP # 安装kubectl curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl \ && chmod +x ./kubectl \ && sudo mv ./kubectl /usr/local/bin/kubectl # 配置kubernetes集群信息 kubectl config set-cluster minikube \ --server=https://$KUBE_IP:8443 \ --certificate-authority=/mnt/c/Users/$WIN_USERNAME/.minikube/ca.crt kubectl config set-credentials minikube \ --client-certificate=/mnt/c/Users/$WIN_USERNAME/.minikube/client.crt \ --client-key=/mnt/c/Users/$WIN_USERNAME/.minikube/client.key kubectl config set-context minikube \ --cluster=minikube \ --user=minikube kubectl config use-context minikube kubectl get node
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get | bash helm init # 查询tiller是否部署完成 kubectl -n kube-system get po | grep tiller helm list