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