Make Admin easier to deploy (#940)
diff --git a/README.md b/README.md
index 20b1122..8f83010 100644
--- a/README.md
+++ b/README.md
@@ -7,48 +7,183 @@
[![Percentage of issues still open](http://isitmaintained.com/badge/open/apache/dubbo-admin.svg)](http://isitmaintained.com/project/apache/dubbo-admin "Percentage of issues still open")
[中文说明](README_ZH.md)
-### Quick start
-* prebuilt docker image https://hub.docker.com/r/apache/dubbo-admin
-* quick start a live demo with [play-with-docker](https://labs.play-with-docker.com/?stack=https://raw.githubusercontent.com/apache/dubbo-admin/develop/docker/stack.yml#) (version:0.3.0)
-
-### Screenshot
+Dubbo Admin is a console for better visualization of Dubbo services, it provides fully support for Dubbo3 and is compatible with 2.7.x, 2.6.x and 2.5.x.
![index](https://raw.githubusercontent.com/apache/dubbo-admin/develop/doc/images/index.png)
-### Service Governance
-service governance follows the version of Dubbo 2.7, and compatible for Dubbo 2.6, please refer to [here](https://github.com/apache/dubbo-admin/wiki/The-compatibility-of-service-governance)
-### admin UI
+# 1 Quick start
+There are 4 methods to run Dubbo Admin in production:
+
+1. [Run With Helm (Recommended)](#11-Run-With-Helm)
+2. [Run With Kubernetes](#12-Run-With-Kubernetes)
+3. [Run With Docker](#13-Run-With-Docker)
+4. [Run From Source Code](#14-Compile-From-Source)
+
+You can choose any of the above methods to run Admin based on your environment. Helm is recommended if your plan to run Admin in a Kubernetes cluster because it will have all the dependencies managed with only one command.
+
+## 1.1 Run With Helm
+
+There are two ways to deploy Dubbo Admin with helm depending on how you get the helm chart resources, both of them have the same effect.
+
+### 1.1.1 Run from helm chart sources
+**1. Get helm chart sources**
+
+Clone the Dubbo Admin repo:
+
+```sh
+$ git clone https://github.com/apache/dubbo-admin.git
+```
+
+From the repo's root directory, change your working directory to `deploy/helm/dubbo-admin`
+```sh
+$ cd /dubbo-admin/deploy/helm/dubbo-admin
+```
+**2. Install helm chart**
+
+```sh
+$ helm install dubbo-admin .
+```
+
+Or, if you need to customize the configuration Admin uses to let it connecting to the real registries or configuration centers, specify a customized configuration file using the `-f` helm option, for example, the following `value file` specifies registry, config-center and metadata addresses:
+
+Content of `properties.xml`:
+
+```xml
+properties: |
+ admin.registry.address=zookeeper://30.221.144.85:2181
+ admin.config-center=zookeeper://30.221.144.85:2181
+ admin.metadata-report.address=zookeeper://30.221.144.85:2181
+```
+
+`zookeeper://30.221.144.85:2181` should be a real address that is accessible from inside the kubernetes cluster.
+
+```sh
+$ helm install dubbo-admin -f properties.yaml .
+```
+
+The values specified in `properties` will override those in [application.properties](./dubbo-admin-server/src/main/resources/application.properties) of the Admin image. Despite `properties`, you can also set other values defined by Dubbo Admin helm.
+
+**3. Visit Dubbo Admin**
+
+Dubbo Admin should now has been successfully installed, run the following command:
+
+```sh
+$ kubectl --namespace default port-forward service/dubbo-admin 8080:8080
+```
+
+Or, you can choose to follow the command instructions from the helm installation process, it should be similar to the following:
+```sh
+export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/name=dubbo-admin,app.kubernetes.io/instance=dubbo-admin" -o jsonpath="{.items[0].metadata.name}")
+export CONTAINER_PORT=$(kubectl get pod --namespace default $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
+echo "Visit http://127.0.0.1:8080 to use your application"
+kubectl --namespace default port-forward $POD_NAME 8080:$CONTAINER_PORT
+```
+
+Open browser and visit http://127.0.0.1:8080, default username and password are `root`
+
+### 1.1.2 Run from helm chart repository
+**1. Add helm chart repository (Currently not available)**
+
+```sh
+$ helm repo add dubbo-charts https://dubbo.apache.org/dubbo-charts
+$ helm repo update
+```
+
+**2. Install helm chart**
+```sh
+$ helm install dubbo-admin dubbo-charts/dubbo-admin
+```
+
+Check the corresponding chapter in [1.1.1 Run from helm chart sources](111-Run-from-helm-chart-sources) to see how to customize helm value.
+
+```sh
+$ helm install dubbo-admin -f properties.yaml dubbo-charts/dubbo-admin
+```
+
+**3. Visit Dubbo Admin**
+
+Dubbo Admin should now has been successfully installed, run the following command:
+
+```sh
+$ kubectl --namespace default port-forward service/dubbo-admin 8080:8080
+```
+
+Open browser and visit http://127.0.0.1:8080, default username and password are `root`
+
+## 1.2 Run With Kubernetes
+
+**1. Get Kubernetes manifests**
+```sh
+$ git clone https://github.com/apache/dubbo-admin.git
+```
+
+All we need from this step is the Admin kubernetes manifests in `deploy/k8s`
+
+But before you can apply the manifests, override the default value defined in [application.properties](./dubbo-admin-server/src/main/resources/application.properties) by adding items in `configmap.yaml`.
+
+```sh
+$ cd /dubbo-admin/deploy/k8s
+```
+
+**2. Deploy Dubbo Admin**
+```sh
+# Change configuration in ./deploy/application.yml before apply if necessary
+$ kubectl apply -f ./
+```
+
+**3. Visit Admin**
+```sh
+$ kubectl port-forward service dubbo-admin 8080:8080
+```
+
+Open web browser and visit `http://localhost:8080`, default username and password are `root`
+
+## 1.3 Run With Docker
+The prebuilt docker image is hosted at: https://hub.docker.com/repository/docker/apache/dubbo-admin
+
+You can run the image directly by mounting a volume from the host that contains an `application.properties` file with the accessible registry and config-center addresses specified.
+
+```sh
+$ docker run -it --rm -v /the/host/path/containing/properties:/config -p 8080:8080 apache/dubbo-admin
+```
+
+Replace `/the/host/path/containing/properties` with the actual host path (must be an absolute path) that points to a directory containing `application.properties`.
+
+Open web browser and visit `http://localhost:8080`, default username and password are `root`
+
+## 1.4 Compile From Source
+1. Clone source code on `develop` branch `git clone https://github.com/apache/dubbo-admin.git`
+2. Specify registry address in `dubbo-admin-server/src/main/resources/application.properties`
+3. Build
+ - `mvn clean package -Dmaven.test.skip=true`
+4. Start
+ * `mvn --projects dubbo-admin-server spring-boot:run`
+ OR
+ * `cd dubbo-admin-distribution/target`; `java -jar dubbo-admin-0.1.jar`
+5. Visit `http://localhost:8080`, default username and password are `root`
+
+# 2. Want To Contribute
+
+Below contains the description of the project structure for developers who want to contribute to make Dubbo Admin better.
+
+## 2.1 Admin UI
- [Vue.js](https://vuejs.org) and [Vue Cli](https://cli.vuejs.org/)
- [dubbo-admin-ui/README.md](dubbo-admin-ui/README.md) for more detail
- Set npm **proxy mirror**:
- if you have network issue, you can set npm proxy mirror to speedup npm install:
+ If you have network issue, you can set npm proxy mirror to speedup npm install:
add `registry=https://registry.npmmirror.com` to ~/.npmrc
-### admin Server
+## 2.2 Admin Server
* Standard spring boot project
* [configurations in application.properties](https://github.com/apache/dubbo-admin/wiki/Dubbo-Admin-configuration)
-### Production Setup
-
-1. Clone source code on develop branch `git clone https://github.com/apache/dubbo-admin.git`
-2. Specify registry address in `dubbo-admin-server/src/main/resources/application.properties`
-3. Build
- - `mvn clean package -Dmaven.test.skip=true`
-4. Start
- * `mvn --projects dubbo-admin-server spring-boot:run`
- OR
- * `cd dubbo-admin-distribution/target`; `java -jar dubbo-admin-0.1.jar`
-5. Visit `http://localhost:8080`
-6. Default username and password is `root`
----
-
-### Development Setup
+## 2.3 Setting up a local developing environment
* Run admin server project
backend is a standard spring boot project, you can run it in any java IDE
@@ -59,14 +194,9 @@
* visit web page
- visit `http://localhost:8081`, frontend supports hot reload.
-
-### Swagger support
+ visit `http://localhost:8080`, frontend supports hot reload.
-Once deployed, you can check http://localhost:8080/swagger-ui.html to check all restful api and models
-
-
-### License
+# 3 License
Apache Dubbo admin is under the Apache 2.0 license, Version 2.0.
See [LICENSE](https://github.com/apache/dubbo-admin/blob/develop/LICENSE) for full license text.
diff --git a/README_ZH.md b/README_ZH.md
index 4d35128..d702df4 100644
--- a/README_ZH.md
+++ b/README_ZH.md
@@ -1,22 +1,175 @@
-# Dubbo控制台
+# Dubbo Admin
[![Build Status](https://travis-ci.org/apache/dubbo-admin.svg?branch=develop)](https://travis-ci.org/apache/dubbo-admin)
[![codecov](https://codecov.io/gh/apache/dubbo-admin/branch/develop/graph/badge.svg)](https://codecov.io/gh/apache/dubbo-admin/branches/develop)
![license](https://img.shields.io/github/license/apache/dubbo-admin.svg)
[English version](README.md).
-### 快速开始
-* 预构建的Docker镜像 https://hub.docker.com/r/apache/dubbo-admin
-* 快速启动一个演示环境 [play-with-docker](https://labs.play-with-docker.com/?stack=https://raw.githubusercontent.com/apache/dubbo-admin/develop/docker/stack.yml#) (版本:0.3.0)
-
-### 页面截图
+Dubbo Admin 是一个控制台,为 Dubbo 集群提供更好可视化服务。Admin 支持 Dubbo3 并很好的兼容 2.7.x、2.6.x 和 2.5.x。
![index](https://raw.githubusercontent.com/apache/dubbo-admin/develop/doc/images/index.png)
-### 服务治理
-服务治理的部分,按照Dubbo 2.7的格式进行配置,同时兼容Dubbo 2.6,详见[这里](https://github.com/apache/dubbo-admin/wiki/%E6%9C%8D%E5%8A%A1%E6%B2%BB%E7%90%86%E5%85%BC%E5%AE%B9%E6%80%A7%E8%AF%B4%E6%98%8E)
-### 前端部分
+# 快速开始
+
+有四种将 Dubbo Admin 部署到生产环境的方式:
+
+1. [基于 Helm 运行 Admin (推荐)](#11-使用-Helm-文件)
+2. [基于 Kubernetes 运行 Admin](#12-使用-Kubernetes-文件)
+3. [基于 Docker 运行 Admin](#13-使用-Docker-文件)
+4. [基于源码打包运行 Admin](#14-通过源码打包运行)
+
+你可以基于自己的环境选择任一方式,其中,Helm 是推荐的安装方式,因为 Helm 可以做到一键安装,自动帮助管理所有 Admin 必须的生产环境依赖。
+
+## 1.1 使用 Helm 运行
+通过 Helm 运行 Admin 有两种方式,它们起到相同的效果,因此可以选择以下任意一种。
+
+### 1.1.1 基于 Chart 源文件运行 Admin
+**1. 下载 chart 源文件**
+
+克隆 Dubbo Admin 仓库源码:
+
+```sh
+$ git clone https://github.com/apache/dubbo-admin.git
+```
+
+从仓库根目录切换到以下目录 `deploy/helm/dubbo-admin`
+
+```sh
+$ cd dubbo-admin/deploy/helm/dubbo-admin
+```
+**2. 安装 helm chart**
+
+```sh
+$ helm install dubbo-admin .
+```
+
+或者,如果你想定制 Admin 的启动参数,以便让 Admin 连接到真实的生产环境注册中心或配置中心,可以通过以下 `-f` helm 参数指定自定义配置文件:
+
+properties.xml
+
+```xml
+properties: |
+ admin.registry.address=zookeeper://30.221.144.85:2181
+ admin.config-center=zookeeper://30.221.144.85:2181
+ admin.metadata-report.address=zookeeper://30.221.144.85:2181
+```
+
+`zookeeper://30.221.144.85:2181` 是可以在 Kubernetes 集群内被访问到的真实地址。
+
+```sh
+$ helm install dubbo-admin -f properties.yaml .
+```
+
+`properties` 字段指定的内容将会覆盖 Admin 镜像中 [application.properties](./dubbo-admin-server/src/main/resources/application.properties) 指定的默认配置,除了 `properties` 之外,还可以定制 Admin helm chart 定义的其他属性,这里是可供使用的[完整参数](./deploy/helm/dubbo-admin/values.yaml)。
+
+**3. 访问 Admin**
+
+Dubbo Admin 现在应该已经成功安装,运行以下命令获得访问地址:
+
+```sh
+$ kubectl --namespace default port-forward service/dubbo-admin 8080:8080
+```
+
+或者,你可以参考执行 helm 安装后给出的提示命令,类似如下:
+```sh
+export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/name=dubbo-admin,app.kubernetes.io/instance=dubbo-admin" -o jsonpath="{.items[0].metadata.name}")
+export CONTAINER_PORT=$(kubectl get pod --namespace default $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
+echo "Visit http://127.0.0.1:8080 to use your application"
+kubectl --namespace default port-forward $POD_NAME 8080:$CONTAINER_PORT
+```
+
+打开浏览器并访问 http://127.0.0.1:8080,默认的 username 和 password 是 `root`
+
+### 1.1.2 基于 Chart 仓库运行 Admin
+
+**1. 添加 helm chart 仓库 (暂时不可用)**
+
+```sh
+$ helm repo add dubbo-charts https://dubbo.apache.org/dubbo-charts
+$ helm repo update
+```
+
+**2. 安装 helm chart**
+```sh
+$ helm install dubbo-admin dubbo-charts/dubbo-admin
+```
+
+参考 [1.1.1 基于 Chart 源文件运行 Admin](1.1.1-Run-from-helm-chart-sources) 中相应环节了解如何定制安装参数
+
+```sh
+$ helm install dubbo-admin -f properties.yaml dubbo-charts/dubbo-admin
+```
+
+**3. 访问 Dubbo Admin**
+
+Dubbo Admin 现在应该已经成功安装,运行以下命令获得访问地址:
+
+```sh
+$ kubectl --namespace default port-forward service/dubbo-admin 8080:8080
+```
+
+打开浏览器并访问 http://127.0.0.1:8080,默认的 username 和 password 是 `root`
+
+## 1.2 使用 Kubernetes 运行
+
+**1. 下载 Kubernetes manifests**
+```sh
+$ git clone https://github.com/apache/dubbo-admin.git
+```
+
+切换到 `deploy/k8s` 目录可以看到 Admin kubernetes 资源文件
+```sh
+$ cd /dubbo-admin/deploy/k8s
+```
+
+**2. 部署 Dubbo Admin**
+
+首先,请参照[application.properties](./dubbo-admin-server/src/main/resources/application.properties) 修改 `configmap.yml` 中的参数配置,只定义要覆盖参数即可。
+
+执行以下命令:
+
+```sh
+$ kubectl apply -f ./
+```
+
+**3. 访问 Admin**
+```sh
+$ kubectl port-forward service dubbo-admin 8080:8080
+```
+
+打开浏览器并访问 `http://localhost:8080`, 默认 username 和 password 是 `root`
+
+## 1.3 使用 Docker 运行
+预先定义的 Admin 镜像托管在: https://hub.docker.com/repository/docker/apache/dubbo-admin
+
+可以直接运行镜像来部署 Admin,并通过绑定宿主机上的 `application.properties` 文件定制镜像默认参数,如注册中心、配置中心地址等。
+
+```sh
+$ docker run -it --rm -v /the/host/path/containing/properties:/config -p 8080:8080 apache/dubbo-admin
+```
+
+将 `/the/host/path/containing/properties` 替换为宿主机上包含 `application.properties` 文件的实际路径(必须是一个有效目录的绝对路径)。
+
+打开浏览器并访问 `http://localhost:8080`, 默认 username 和 password 是 `root`
+
+## 1.4 通过源码打包运行
+
+1. 下载代码: `git clone https://github.com/apache/dubbo-admin.git`
+2. 在 `dubbo-admin-server/src/main/resources/application.properties`中指定注册中心地址
+3. 构建
+ - `mvn clean package -Dmaven.test.skip=true`
+4. 启动
+ * `mvn --projects dubbo-admin-server spring-boot:run`
+ 或者
+ * `cd dubbo-admin-distribution/target; java -jar dubbo-admin-${project.version}.jar`
+5. 访问 `http://localhost:8080`
+
+# 2 参与项目贡献
+
+以下是项目架构介绍,适合想贡献源码的开发者阅读。
+
+## 2.1 前端部分
- 使用[Vue.js](https://vuejs.org)作为javascript框架
- [dubbo-admin-ui/README.md](dubbo-admin-ui/README.md)中有更详细的介绍
@@ -26,26 +179,12 @@
在~/.npmrc中增加 `registry=https://registry.npmmirror.com`
-### 后端部分
+## 2.2 后端部分
* 标准spring boot工程
-* [application.properties配置说明](https://github.com/apache/dubbo-admin/wiki/Dubbo-Admin%E9%85%8D%E7%BD%AE%E8%AF%B4%E6%98%8E)
+* [application.properties配置说明](https://github.com/apache/dubbo-admin/wiki/Dubbo-Admin%E9%85%8D%E7%BD%AE%E8%AF%B4%E6%98%8E)
-
-### 生产环境配置
-
-1. 下载代码: `git clone https://github.com/apache/dubbo-admin.git`
-2. 在 `dubbo-admin-server/src/main/resources/application.properties`中指定注册中心地址
-3. 构建
- - `mvn clean package -Dmaven.test.skip=true`
-4. 启动
- * `mvn --projects dubbo-admin-server spring-boot:run`
- 或者
- * `cd dubbo-admin-distribution/target; java -jar dubbo-admin-0.1.jar`
-5. 访问 `http://localhost:8080`
----
-
-### 开发环境配置
+### 2.2.1 开发环境配置
* 运行`dubbo admin server`
`dubbo admin server`是一个标准的spring boot项目, 可以在任何java IDE中运行它
@@ -56,8 +195,8 @@
* 页面访问
- 访问 `http://localhost:8081`, 由于前后端分开部署,前端支持热加载,任何页面的修改都可以实时反馈,不需要重启应用。
+ 访问 `http://localhost:8080`, 由于前后端分开部署,前端支持热加载,任何页面的修改都可以实时反馈,不需要重启应用。
-### Swagger 支持
+### 2.2.2 Swagger 支持
部署完成后,可以访问 http://localhost:8080/swagger-ui.html 来查看所有的restful api
diff --git a/deploy/helm/dubbo-admin/.helmignore b/deploy/helm/dubbo-admin/.helmignore
new file mode 100644
index 0000000..0e8a0eb
--- /dev/null
+++ b/deploy/helm/dubbo-admin/.helmignore
@@ -0,0 +1,23 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*.orig
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
+.vscode/
diff --git a/deploy/helm/dubbo-admin/Chart.yaml b/deploy/helm/dubbo-admin/Chart.yaml
new file mode 100644
index 0000000..3d14511
--- /dev/null
+++ b/deploy/helm/dubbo-admin/Chart.yaml
@@ -0,0 +1,24 @@
+apiVersion: v2
+name: dubbo-admin
+description: A Helm chart for Kubernetes
+
+# A chart can be either an 'application' or a 'library' chart.
+#
+# Application charts are a collection of templates that can be packaged into versioned archives
+# to be deployed.
+#
+# Library charts provide useful utilities or functions for the chart developer. They're included as
+# a dependency of application charts to inject those utilities and functions into the rendering
+# pipeline. Library charts do not define any templates and therefore cannot be deployed.
+type: application
+
+# This is the chart version. This version number should be incremented each time you make changes
+# to the chart and its templates, including the app version.
+# Versions are expected to follow Semantic Versioning (https://semver.org/)
+version: 0.1.0
+
+# This is the version number of the application being deployed. This version number should be
+# incremented each time you make changes to the application. Versions are not expected to
+# follow Semantic Versioning. They should reflect the version the application is using.
+# It is recommended to use it with quotes.
+appVersion: "1.16.0"
diff --git a/deploy/helm/dubbo-admin/templates/NOTES.txt b/deploy/helm/dubbo-admin/templates/NOTES.txt
new file mode 100644
index 0000000..ca484a3
--- /dev/null
+++ b/deploy/helm/dubbo-admin/templates/NOTES.txt
@@ -0,0 +1,22 @@
+1. Get the application URL by running these commands:
+{{- if .Values.ingress.enabled }}
+{{- range $host := .Values.ingress.hosts }}
+ {{- range .paths }}
+ http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }}
+ {{- end }}
+{{- end }}
+{{- else if contains "NodePort" .Values.service.type }}
+ export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "dubbo-admin.fullname" . }})
+ export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
+ echo http://$NODE_IP:$NODE_PORT
+{{- else if contains "LoadBalancer" .Values.service.type }}
+ NOTE: It may take a few minutes for the LoadBalancer IP to be available.
+ You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "dubbo-admin.fullname" . }}'
+ export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "dubbo-admin.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
+ echo http://$SERVICE_IP:{{ .Values.service.port }}
+{{- else if contains "ClusterIP" .Values.service.type }}
+ export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "dubbo-admin.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
+ export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
+ echo "Visit http://127.0.0.1:8080 to use your application"
+ kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT
+{{- end }}
diff --git a/deploy/helm/dubbo-admin/templates/_helpers.tpl b/deploy/helm/dubbo-admin/templates/_helpers.tpl
new file mode 100644
index 0000000..004d964
--- /dev/null
+++ b/deploy/helm/dubbo-admin/templates/_helpers.tpl
@@ -0,0 +1,62 @@
+{{/*
+Expand the name of the chart.
+*/}}
+{{- define "dubbo-admin.name" -}}
+{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
+{{- end }}
+
+{{/*
+Create a default fully qualified app name.
+We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
+If release name contains chart name it will be used as a full name.
+*/}}
+{{- define "dubbo-admin.fullname" -}}
+{{- if .Values.fullnameOverride }}
+{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
+{{- else }}
+{{- $name := default .Chart.Name .Values.nameOverride }}
+{{- if contains $name .Release.Name }}
+{{- .Release.Name | trunc 63 | trimSuffix "-" }}
+{{- else }}
+{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
+{{- end }}
+{{- end }}
+{{- end }}
+
+{{/*
+Create chart name and version as used by the chart label.
+*/}}
+{{- define "dubbo-admin.chart" -}}
+{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
+{{- end }}
+
+{{/*
+Common labels
+*/}}
+{{- define "dubbo-admin.labels" -}}
+helm.sh/chart: {{ include "dubbo-admin.chart" . }}
+{{ include "dubbo-admin.selectorLabels" . }}
+{{- if .Chart.AppVersion }}
+app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
+{{- end }}
+app.kubernetes.io/managed-by: {{ .Release.Service }}
+{{- end }}
+
+{{/*
+Selector labels
+*/}}
+{{- define "dubbo-admin.selectorLabels" -}}
+app.kubernetes.io/name: {{ include "dubbo-admin.name" . }}
+app.kubernetes.io/instance: {{ .Release.Name }}
+{{- end }}
+
+{{/*
+Create the name of the service account to use
+*/}}
+{{- define "dubbo-admin.serviceAccountName" -}}
+{{- if .Values.serviceAccount.create }}
+{{- default (include "dubbo-admin.fullname" .) .Values.serviceAccount.name }}
+{{- else }}
+{{- default "default" .Values.serviceAccount.name }}
+{{- end }}
+{{- end }}
diff --git a/deploy/helm/dubbo-admin/templates/configmap.yaml b/deploy/helm/dubbo-admin/templates/configmap.yaml
new file mode 100644
index 0000000..c853957
--- /dev/null
+++ b/deploy/helm/dubbo-admin/templates/configmap.yaml
@@ -0,0 +1,6 @@
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: {{ .Chart.Name }}
+data:
+ application.properties: {{ .Values.properties | toYaml | indent 1 }}
diff --git a/deploy/helm/dubbo-admin/templates/deployment.yaml b/deploy/helm/dubbo-admin/templates/deployment.yaml
new file mode 100644
index 0000000..d9eaa80
--- /dev/null
+++ b/deploy/helm/dubbo-admin/templates/deployment.yaml
@@ -0,0 +1,39 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ labels:
+ app: {{ .Chart.Name }}
+ name: {{ .Chart.Name }}
+spec:
+ replicas: {{ .Values.replicaCount }}
+ selector:
+ matchLabels:
+ app: {{ .Chart.Name }}
+ template:
+ metadata:
+ labels:
+ app: {{ .Chart.Name }}
+ spec:
+ containers:
+ - name: {{ .Chart.Name }}
+ image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
+ imagePullPolicy: {{ .Values.image.pullPolicy }}
+ ports:
+ - containerPort: 8080
+ protocol: TCP
+ name: http
+ volumeMounts:
+ - mountPath: /config
+ name: application-properties
+ livenessProbe:
+ httpGet:
+ path: /
+ port: http
+ readinessProbe:
+ httpGet:
+ path: /
+ port: http
+ volumes:
+ - name: application-properties
+ configMap:
+ name: dubbo-admin
diff --git a/deploy/helm/dubbo-admin/templates/ingress.yaml b/deploy/helm/dubbo-admin/templates/ingress.yaml
new file mode 100644
index 0000000..3b15118
--- /dev/null
+++ b/deploy/helm/dubbo-admin/templates/ingress.yaml
@@ -0,0 +1,61 @@
+{{- if .Values.ingress.enabled -}}
+{{- $fullName := include "dubbo-admin.fullname" . -}}
+{{- $svcPort := .Values.service.port -}}
+{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }}
+ {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }}
+ {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}}
+ {{- end }}
+{{- end }}
+{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}}
+apiVersion: networking.k8s.io/v1
+{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
+apiVersion: networking.k8s.io/v1beta1
+{{- else -}}
+apiVersion: extensions/v1beta1
+{{- end }}
+kind: Ingress
+metadata:
+ name: {{ $fullName }}
+ labels:
+ {{- include "dubbo-admin.labels" . | nindent 4 }}
+ {{- with .Values.ingress.annotations }}
+ annotations:
+ {{- toYaml . | nindent 4 }}
+ {{- end }}
+spec:
+ {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }}
+ ingressClassName: {{ .Values.ingress.className }}
+ {{- end }}
+ {{- if .Values.ingress.tls }}
+ tls:
+ {{- range .Values.ingress.tls }}
+ - hosts:
+ {{- range .hosts }}
+ - {{ . | quote }}
+ {{- end }}
+ secretName: {{ .secretName }}
+ {{- end }}
+ {{- end }}
+ rules:
+ {{- range .Values.ingress.hosts }}
+ - host: {{ .host | quote }}
+ http:
+ paths:
+ {{- range .paths }}
+ - path: {{ .path }}
+ {{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }}
+ pathType: {{ .pathType }}
+ {{- end }}
+ backend:
+ {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }}
+ service:
+ name: {{ $fullName }}
+ port:
+ number: {{ $svcPort }}
+ {{- else }}
+ serviceName: {{ $fullName }}
+ servicePort: {{ $svcPort }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+{{- end }}
diff --git a/deploy/helm/dubbo-admin/templates/service.yaml b/deploy/helm/dubbo-admin/templates/service.yaml
new file mode 100644
index 0000000..cee869a
--- /dev/null
+++ b/deploy/helm/dubbo-admin/templates/service.yaml
@@ -0,0 +1,13 @@
+apiVersion: v1
+kind: Service
+metadata:
+ name: {{ include "dubbo-admin.fullname" . }}
+spec:
+ type: {{ .Values.service.type }}
+ ports:
+ - port: {{ .Values.service.port }}
+ targetPort: http
+ protocol: TCP
+ name: http
+ selector:
+ app: {{ .Chart.Name }}
diff --git a/deploy/helm/dubbo-admin/templates/serviceaccount.yaml b/deploy/helm/dubbo-admin/templates/serviceaccount.yaml
new file mode 100644
index 0000000..9986487
--- /dev/null
+++ b/deploy/helm/dubbo-admin/templates/serviceaccount.yaml
@@ -0,0 +1,12 @@
+{{- if .Values.serviceAccount.create -}}
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+ name: {{ include "dubbo-admin.serviceAccountName" . }}
+ labels:
+ {{- include "dubbo-admin.labels" . | nindent 4 }}
+ {{- with .Values.serviceAccount.annotations }}
+ annotations:
+ {{- toYaml . | nindent 4 }}
+ {{- end }}
+{{- end }}
diff --git a/deploy/helm/dubbo-admin/templates/tests/test-connection.yaml b/deploy/helm/dubbo-admin/templates/tests/test-connection.yaml
new file mode 100644
index 0000000..ce40f40
--- /dev/null
+++ b/deploy/helm/dubbo-admin/templates/tests/test-connection.yaml
@@ -0,0 +1,15 @@
+apiVersion: v1
+kind: Pod
+metadata:
+ name: "{{ include "dubbo-admin.fullname" . }}-test-connection"
+ labels:
+ {{- include "dubbo-admin.labels" . | nindent 4 }}
+ annotations:
+ "helm.sh/hook": test
+spec:
+ containers:
+ - name: wget
+ image: busybox
+ command: ['wget']
+ args: ['{{ include "dubbo-admin.fullname" . }}:{{ .Values.service.port }}']
+ restartPolicy: Never
diff --git a/deploy/helm/dubbo-admin/values.yaml b/deploy/helm/dubbo-admin/values.yaml
new file mode 100644
index 0000000..7a1d7df
--- /dev/null
+++ b/deploy/helm/dubbo-admin/values.yaml
@@ -0,0 +1,69 @@
+# Default values for dubbo-admin.
+# This is a YAML-formatted file.
+# Declare variables to be passed into your templates.
+
+replicaCount: 2
+
+image:
+ repository: apache/dubbo-admin
+ pullPolicy: IfNotPresent
+ # Overrides the image tag whose default is the chart appVersion.
+ tag: "0.5.0-SNAPSHOT"
+
+imagePullSecrets: []
+nameOverride: ""
+fullnameOverride: ""
+
+serviceAccount:
+ # Specifies whether a service account should be created
+ create: true
+ # Annotations to add to the service account
+ annotations: {}
+ # The name of the service account to use.
+ # If not set and create is true, a name is generated using the fullname template
+ name: ""
+
+
+podAnnotations: {}
+
+podSecurityContext: {}
+ # fsGroup: 2000
+
+securityContext: {}
+ # capabilities:
+ # drop:
+ # - ALL
+ # readOnlyRootFilesystem: true
+ # runAsNonRoot: true
+ # runAsUser: 1000
+
+service:
+ type: ClusterIP
+ port: 8080
+
+ingress:
+ enabled: false
+ className: ""
+ annotations: {}
+ # kubernetes.io/ingress.class: nginx
+ # kubernetes.io/tls-acme: "true"
+ hosts:
+ - host: dubbo.local
+ paths:
+ - path: /
+ pathType: ImplementationSpecific
+ tls: []
+ # - secretName: chart-example-tls
+ # hosts:
+ # - chart-example.local
+
+autoscaling:
+ enabled: false
+ minReplicas: 1
+ maxReplicas: 100
+ targetCPUUtilizationPercentage: 80
+ # targetMemoryUtilizationPercentage: 80
+
+properties: |
+ dubbo.application.name=dubbo-admin
+
diff --git a/deploy/k8s/configmap.yaml b/deploy/k8s/configmap.yaml
new file mode 100644
index 0000000..dba952d
--- /dev/null
+++ b/deploy/k8s/configmap.yaml
@@ -0,0 +1,11 @@
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: dubbo-admin
+data:
+ # Set the properties you want to override, properties not set here will be using the default values
+ # check application.properties inside dubbo-admin project for the keys supported
+ application.properties: |
+ admin.registry.address=zookeeper://127.0.0.1:2181
+ admin.config-center=zookeeper://127.0.0.1:2181
+ admin.metadata-report.address=zookeeper://127.0.0.1:2181
diff --git a/deploy/k8s/deployment.yaml b/deploy/k8s/deployment.yaml
new file mode 100644
index 0000000..0cddb9d
--- /dev/null
+++ b/deploy/k8s/deployment.yaml
@@ -0,0 +1,28 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ labels:
+ app: dubbo-admin
+ name: dubbo-admin
+spec:
+ replicas: 2
+ selector:
+ matchLabels:
+ app: dubbo-admin
+ template:
+ metadata:
+ labels:
+ app: dubbo-admin
+ spec:
+ containers:
+ - image: apache/dubbo-admin:latest
+ name: dubbo-admin
+ ports:
+ - containerPort: 8080
+ volumeMounts:
+ - mountPath: /config
+ name: application-properties
+ volumes:
+ - name: application-properties
+ configMap:
+ name: dubbo-admin
\ No newline at end of file
diff --git a/deploy/k8s/service.yaml b/deploy/k8s/service.yaml
new file mode 100644
index 0000000..a3e8252
--- /dev/null
+++ b/deploy/k8s/service.yaml
@@ -0,0 +1,11 @@
+apiVersion: v1
+kind: Service
+metadata:
+ name: dubbo-admin
+spec:
+ selector:
+ app: dubbo-admin
+ ports:
+ - protocol: TCP
+ port: 8080
+ targetPort: 8080
\ No newline at end of file
diff --git a/docker/latest/Dockerfile b/docker/latest/Dockerfile
index a4e4f75..d9f8696 100644
--- a/docker/latest/Dockerfile
+++ b/docker/latest/Dockerfile
@@ -22,7 +22,7 @@
FROM openjdk:8-jre
LABEL maintainer="dev@dubbo.apache.org"
RUN apt-get update && apt-get install -y tini
-COPY --from=0 /source/dubbo-admin-snapshot/dubbo-admin-distribution/target/dubbo-admin-0.3.0-SNAPSHOT.jar /app.jar
+COPY --from=0 /source/dubbo-admin-snapshot/dubbo-admin-distribution/target/dubbo-admin-0.5.0-SNAPSHOT.jar /app.jar
COPY --from=0 /source/dubbo-admin-snapshot/docker/entrypoint.sh /usr/local/bin/entrypoint.sh
ENV JAVA_OPTS "-Dloader.path=/opt-libs"
diff --git a/dubbo-admin-distribution/src/bin/config/application.properties b/dubbo-admin-distribution/src/bin/config/application.properties
index 232b05e..618a2b0 100644
--- a/dubbo-admin-distribution/src/bin/config/application.properties
+++ b/dubbo-admin-distribution/src/bin/config/application.properties
@@ -78,4 +78,6 @@
spring.datasource.password=
# id generate type
-mybatis-plus.global-config.db-config.id-type=none
\ No newline at end of file
+mybatis-plus.global-config.db-config.id-type=none
+
+dubbo.application.logger=slf4j
\ No newline at end of file
diff --git a/dubbo-admin-server/pom.xml b/dubbo-admin-server/pom.xml
index f03e523..872c81c 100644
--- a/dubbo-admin-server/pom.xml
+++ b/dubbo-admin-server/pom.xml
@@ -41,6 +41,12 @@
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-to-slf4j</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
@@ -189,6 +195,16 @@
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<!--JWT-->
@@ -233,6 +249,22 @@
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
</dependency>
+
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>1.7.25</version>
+ </dependency>
+ <dependency>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-classic</artifactId>
+ <version>1.2.3</version>
+ </dependency>
+ <dependency>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-core</artifactId>
+ <version>1.2.3</version>
+ </dependency>
</dependencies>
<build>
@@ -326,12 +358,12 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
- <configuration>
- <excludes>
- <exclude>**/application.properties</exclude>
- <exclude>**/application-test.properties</exclude>
- </excludes>
- </configuration>
+<!-- <configuration>-->
+<!-- <excludes>-->
+<!-- <exclude>**/application.properties</exclude>-->
+<!-- <exclude>**/application-test.properties</exclude>-->
+<!-- </excludes>-->
+<!-- </configuration>-->
</plugin>
</plugins>
</build>
diff --git a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/config/ConfigCenter.java b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/config/ConfigCenter.java
index f354d6d..6be548a 100644
--- a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/config/ConfigCenter.java
+++ b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/config/ConfigCenter.java
@@ -105,6 +105,7 @@
if (StringUtils.isNotEmpty(configCenter)) {
configCenterUrl = formUrl(configCenter, configCenterGroup, configCenterGroupNameSpace, username, password);
+ logger.info("Admin using config center: " + configCenterUrl);
dynamicConfiguration = ExtensionLoader.getExtensionLoader(GovernanceConfiguration.class).getDefaultExtension();
dynamicConfiguration.setUrl(configCenterUrl);
dynamicConfiguration.init();
@@ -118,6 +119,8 @@
} else if (s.startsWith(Constants.METADATA_ADDRESS)) {
metadataUrl = formUrl(removerConfigKey(s), metadataGroup, metadataGroupNameSpace, username, password);
}
+ logger.info("Registry address found from config center: " + registryUrl);
+ logger.info("Metadata address found from config center: " + registryUrl);
});
}
}
@@ -127,9 +130,9 @@
dynamicConfiguration = ExtensionLoader.getExtensionLoader(GovernanceConfiguration.class).getDefaultExtension();
dynamicConfiguration.setUrl(registryUrl);
dynamicConfiguration.init();
- logger.warn("you are using dubbo.registry.address, which is not recommend, please refer to: https://github.com/apache/incubator-dubbo-admin/wiki/Dubbo-Admin-configuration");
+ logger.warn("you are using dubbo.registry.address, which is not recommend, please refer to: https://github.com/apache/dubbo-admin/wiki/Dubbo-Admin-configuration");
} else {
- throw new ConfigurationException("Either config center or registry address is needed, please refer to https://github.com/apache/incubator-dubbo-admin/wiki/Dubbo-Admin-configuration");
+ throw new ConfigurationException("Either config center or registry address is needed, please refer to https://github.com/apache/dubbo-admin/wiki/Dubbo-Admin-configuration");
//throw exception
}
}
@@ -145,10 +148,13 @@
Registry registry = null;
if (registryUrl == null) {
if (StringUtils.isBlank(registryAddress)) {
- throw new ConfigurationException("Either config center or registry address is needed, please refer to https://github.com/apache/incubator-dubbo-admin/wiki/Dubbo-Admin-configuration");
+ throw new ConfigurationException("Either config center or registry address is needed, please refer to https://github.com/apache/dubbo-admin/wiki/Dubbo-Admin-configuration");
}
registryUrl = formUrl(registryAddress, registryGroup, registryNameSpace, username, password);
}
+
+ logger.info("Admin using registry address: " + registryUrl);
+
RegistryFactory registryFactory = ApplicationModel.defaultModel().getExtensionLoader(RegistryFactory.class).getAdaptiveExtension();
registry = registryFactory.getRegistry(registryUrl.addParameter(ENABLE_EMPTY_PROTECTION_KEY, String.valueOf(false)));
return registry;
@@ -166,13 +172,14 @@
metadataUrl = formUrl(metadataAddress, metadataGroup, metadataGroupNameSpace, username, password);
metadataUrl = metadataUrl.addParameter(CLUSTER_KEY, cluster);
}
+ logger.info("Admin using metadata address: " + metadataUrl);
}
if (metadataUrl != null) {
metaDataCollector = ApplicationModel.defaultModel().getExtensionLoader(MetaDataCollector.class).getExtension(metadataUrl.getProtocol());
metaDataCollector.setUrl(metadataUrl);
metaDataCollector.init();
} else {
- logger.warn("you are using dubbo.registry.address, which is not recommend, please refer to: https://github.com/apache/incubator-dubbo-admin/wiki/Dubbo-Admin-configuration");
+ logger.warn("you are using dubbo.registry.address, which is not recommend, please refer to: https://github.com/apache/dubbo-admin/wiki/Dubbo-Admin-configuration");
}
return metaDataCollector;
}
diff --git a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/config/SwaggerConfiguration.java b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/config/SwaggerConfiguration.java
index ef44250..c198c72 100644
--- a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/config/SwaggerConfiguration.java
+++ b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/config/SwaggerConfiguration.java
@@ -45,7 +45,7 @@
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("dubbo admin swagger api")
- .description("for more information please visit github page: https://github.com/apache/incubator-dubbo-admin")
+ .description("for more information please visit github page: https://github.com/apache/dubbo-admin")
.version("1.0")
.build();
}
diff --git a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/registry/mapping/AdminServiceInstancesChangedListener.java b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/registry/mapping/AdminServiceInstancesChangedListener.java
index 1afde55..6d69e14 100644
--- a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/registry/mapping/AdminServiceInstancesChangedListener.java
+++ b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/registry/mapping/AdminServiceInstancesChangedListener.java
@@ -26,12 +26,13 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.stream.Collectors;
public class AdminServiceInstancesChangedListener extends ServiceInstancesChangedListener {
private AddressChangeListener addressChangeListener;
- private Map<String, Object> oldServiceUrls;
+ private Map<String, List<ServiceInstancesChangedListener.ProtocolServiceKeyWithUrls>> oldServiceUrls;
public AdminServiceInstancesChangedListener(Set<String> serviceNames, ServiceDiscovery serviceDiscovery, AddressChangeListener addressChangeListener) {
super(serviceNames, serviceDiscovery);
@@ -43,8 +44,14 @@
oldServiceUrls.keySet().stream()
.filter(protocolServiceKey -> !serviceUrls.containsKey(protocolServiceKey))
.forEach(protocolServiceKey -> addressChangeListener.notifyAddressChanged(protocolServiceKey, new ArrayList<>()));
- serviceUrls.forEach((protocolServiceKey, urls) -> addressChangeListener.notifyAddressChanged(protocolServiceKey, (List<URL>) urls));
+ serviceUrls.forEach((protocolServiceKey, urls) -> addressChangeListener.notifyAddressChanged(protocolServiceKey, extractUrls(urls)));
oldServiceUrls = serviceUrls;
}
+
+ private List<URL> extractUrls(List<ServiceInstancesChangedListener.ProtocolServiceKeyWithUrls> keyUrls) {
+ return keyUrls.stream()
+ .flatMap((protocolServiceKeyWithUrls) -> protocolServiceKeyWithUrls.getUrls().stream())
+ .collect(Collectors.toList());
+ }
}
diff --git a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/impl/InstanceRegistryCache.java b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/impl/InstanceRegistryCache.java
index 520f0db..eb23879 100644
--- a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/impl/InstanceRegistryCache.java
+++ b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/impl/InstanceRegistryCache.java
@@ -97,7 +97,7 @@
origin.keySet().forEach(providers::remove);
for (List<InstanceAddressURL> instanceAddressURLs : providers.values()) {
- MetadataService metadataService = MetadataUtils.referProxy(instanceAddressURLs.get(0).getInstance());
+ MetadataService metadataService = MetadataUtils.referProxy(instanceAddressURLs.get(0).getInstance()).getProxy();
try {
Set<String> subscribedURLs = metadataService.getSubscribedURLs();
diff --git a/dubbo-admin-server/src/main/resources/application.properties b/dubbo-admin-server/src/main/resources/application.properties
index 232b05e..618a2b0 100644
--- a/dubbo-admin-server/src/main/resources/application.properties
+++ b/dubbo-admin-server/src/main/resources/application.properties
@@ -78,4 +78,6 @@
spring.datasource.password=
# id generate type
-mybatis-plus.global-config.db-config.id-type=none
\ No newline at end of file
+mybatis-plus.global-config.db-config.id-type=none
+
+dubbo.application.logger=slf4j
\ No newline at end of file
diff --git a/dubbo-admin-server/src/main/resources/logback-spring.xml b/dubbo-admin-server/src/main/resources/logback-spring.xml
index 0e01216..ee7fd1d 100644
--- a/dubbo-admin-server/src/main/resources/logback-spring.xml
+++ b/dubbo-admin-server/src/main/resources/logback-spring.xml
@@ -24,6 +24,7 @@
<include resource="org/springframework/boot/logging/logback/file-appender.xml"/>
<logger name="org.apache" level="WARN"/>
+ <logger name="org.apache.dubbo" level="INFO"/>
<appender name="FILE-LOG-ASYNC" class="ch.qos.logback.classic.AsyncAppender">
<discardingThreshold>0</discardingThreshold>
diff --git a/dubbo-admin-ui/README.md b/dubbo-admin-ui/README.md
index fe8a2c1..6b5848a 100644
--- a/dubbo-admin-ui/README.md
+++ b/dubbo-admin-ui/README.md
@@ -1,6 +1,6 @@
# dubbo-admin-ui
-> dubbo admin ui based on vuetify
+> dubbo admin ui based on vuetify
> standard front end project
## Build Setup
@@ -9,7 +9,7 @@
# install dependencies
npm install
-# serve with hot reload at localhost:8081
+# serve with hot reload at localhost:8080
npm run dev
# build for production with minification
diff --git a/dubbo-admin-ui/public/dubbo-admin-info.json b/dubbo-admin-ui/public/dubbo-admin-info.json
index 156772d..616e67f 100644
--- a/dubbo-admin-ui/public/dubbo-admin-info.json
+++ b/dubbo-admin-ui/public/dubbo-admin-info.json
@@ -1,3 +1,3 @@
{
- "version": "0.5.0"
+ "version": "0.5.0-SNAPSHOT"
}
diff --git a/pom.xml b/pom.xml
index fec0211..98b2281 100644
--- a/pom.xml
+++ b/pom.xml
@@ -53,10 +53,10 @@
</repositories>
<properties>
- <revision>0.5.0</revision>
+ <revision>0.5.0-SNAPSHOT</revision>
<main.basedir>${project.basedir}</main.basedir>
<commons-lang3-version>3.7</commons-lang3-version>
- <dubbo-version>3.0.8</dubbo-version>
+ <dubbo-version>3.1.2</dubbo-version>
<fastjson-version>1.2.83</fastjson-version>
<springfox-swagger-version>2.9.2</springfox-swagger-version>
<jacoco-version>0.8.2</jacoco-version>
@@ -239,6 +239,7 @@
<exclude>**/node/**</exclude>
<exclude>**/dubbo-admin-info.json</exclude>
<exclude>.asf.yaml</exclude>
+ <exclude>deploy/**</exclude>
</excludes>
</configuration>
</execution>