Skip to content

Latest commit

 

History

History
208 lines (161 loc) · 6.17 KB

CONTRIBUTING.adoc

File metadata and controls

208 lines (161 loc) · 6.17 KB

开发指南

Dew 基于 Apache 2.0 license 分发,如果您要向 Dew 贡献代码或 Fork 为自己的分支项目请遵循许可证要求。

代码要求

本项目使用修改版的Google CheckStyle做为代码规范,规则文件见 framework/checkstyle/checkstyle.xml

代码的变更需要有有对应的单元/集成测试。

目前项目中只有DevOps部分用到集成测试,对应的需要修改 devops/devops-test.properties 为自己的支撑环境,但请不要提交此文件。

/devops/devops-test.properties示例
link:./devops/devops-test-example.properties[role=include]

提交前请运行 mvn clean test -P qa,确认代码通过CheckStyle检查和测试。

发起 Pull Request 后会调用 travis-cicodacy 进行自动化代码检查,如有问题不会执行 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] 完成了测试环境的安装配置, 那么可部分使用这一环境进行调试, 否则请按以下流程完成调试环境的安装配置。

调试环境安装配置(TBD)

Important

Kubernetes、Docker环境要求使用代理。

详见 [proxies]

Kubernetes安装
# 使用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
RabbitMQ安装
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
Opentracing Jaeger安装
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
Prometheus、Grafana安装
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
Windows10 WSL设置
# 开启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
Helm安装
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get | bash
helm init
# 查询tiller是否部署完成
kubectl -n kube-system get po | grep tiller
helm list