initial docker (#964)
diff --git a/README.md b/README.md
index ab096a2..1195fd0 100644
--- a/README.md
+++ b/README.md
@@ -12,78 +12,114 @@
![index](https://raw.githubusercontent.com/apache/dubbo-admin/develop/doc/images/index.png)
-# 1 Quick start
-There are 4 methods to run Dubbo Admin in production:
+There are four ways to deploy Dubbo Admin to a production environment
-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)
+1. [Linux with Admin](#11-linux-with-admin)
+2. [Docker with Admin](#12-docker-with-admin)
+3. [Kubernetes with Admin](#13-kubernetes-with-admin)
+4. [Helm with Admin](#14-helm-with-admin)
-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.
+Choose either method based on your environment, where Helm is the recommended installation method because Helm can be installed with a single click and automatically helps manage all of Admin's required production environment dependencies.
-## 1.1 Run With Helm
+## 1.1 Linux with Admin
-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. Download code: `git clone https://github.com/apache/dubbo-admin.git`
+2. `dubbo-admin-server/src/main/resources/application.properties` Designated Registration Center Address
+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-${project.version}.jar`
+5. Visit `http://localhost:38080`
-### 1.1.1 Run from helm chart sources
-**1. Get helm chart sources**
+## 1.2 Docker with Admin
+Admin image hosting at: https://hub.docker.com/repository/docker/apache/dubbo-admin
-Clone the Dubbo Admin repo:
+modify `application.properties` File default parameters,For example, address of registration center and configuration center, Get the address through 'docker inspect',172.17.0.2 is the registration center address of zookeeper.
+```
+ admin.registry.address: zookeeper://172.17.0.2:2181
+ admin.config-center: zookeeper://172.17.0.2:2181
+ admin.metadata-report.address: zookeeper://172.17.0.2:2181
+```
+docker start
+```sh
+$ docker run -p 38080:38080 --name dubbo-admin -d dubbo-admin
+```
+
+Visit `http://localhost:38080`
+
+## 1.3 Kubernetes with Admin
+
+**1. Download Kubernetes manifests**
+```sh
+$ git clone https://github.com/apache/dubbo-admin.git
+```
+
+Switch to the 'deploy/k8s' directory to see the Admin kubernetes resource file
+```sh
+$ cd /dubbo-admin/deploy/kubernetes
+```
+
+**2. Install Dubbo Admin**
+
+modify [application.properties](./dubbo-admin-server/src/main/resources/application.properties) Parameter configuration in `configmap.yaml` ,Just define the parameters to be overwritten。
+
+Run the following command:
+
+```sh
+$ kubectl apply -f ./
+```
+
+**3. Visit Admin**
+```sh
+$ kubectl port-forward service dubbo-admin 38080:38080
+```
+
+Visit `http://localhost:38080`
+
+
+## 1.4 Helm with Admin
+There are two ways to run Admin through Help. They have the same effect, so you can choose any of the following.
+
+### 1.4.1 Run Admin based on Chart source file
+**1. Download chart source file**
+
+clone Dubbo Admin project storehouse:
```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`
+Switch from the warehouse root directory to the following directory `deploy/charts/dubbo-admin`
+
```sh
-$ cd /dubbo-admin/deploy/helm/dubbo-admin
+$ cd dubbo-admin/deploy/charts/dubbo-admin
```
**2. Install helm chart**
+Start parameters of Admin so that Admin can connect to the real production environment registry or configuration center. You can specify a custom configuration file through the following `-f` help parameter:
+```yaml
+properties:
+ admin.registry.address: zookeeper://zookeeper:2181
+ admin.config-center: zookeeper://zookeeper:2181
+ admin.metadata-report.address: zookeeper://zookeeper:2181
+```
+
+`zookeeper://zookeeper:2181` Visit address of the Kubernetes Cluster registration center zookeeper。
```sh
-$ helm install dubbo-admin .
+$ helm install dubbo-admin -f values.yaml .
```
-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:
+`properties` The content specified in the field will be overwritten Admin [application.properties](./dubbo-admin-server/src/main/resources/application.properties) Specified default configuration,In addition to 'properties', you can customize other properties defined by Admin help chart,Here is available[Complete parameters](./deploy/helm/dubbo-admin/values.yaml)。
-Content of `properties.xml`:
+**3. Visit Admin**
-```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
-```
+Visit http://127.0.0.1:38080
-`zookeeper://30.221.144.85:2181` should be a real address that is accessible from inside the kubernetes cluster.
+### 1.4.2 Run Admin based on Chart warehouse
-```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 38080:38080
-```
-
-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:38080 to use your application"
-kubectl --namespace default port-forward $POD_NAME 38080:$CONTAINER_PORT
-```
-
-Open browser and visit http://127.0.0.1:38080, default username and password are `root`
-
-### 1.1.2 Run from helm chart repository
-**1. Add helm chart repository (Currently not available)**
+**1. Add helm chart (Temporarily unavailable)**
```sh
$ helm repo add dubbo-charts https://dubbo.apache.org/dubbo-charts
@@ -95,7 +131,7 @@
$ 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.
+reference resources [1.4.1 Run Admin based on Chart warehouse](1.4.1-Run-from-helm-chart-sources) Learn how to customize installation parameters.
```sh
$ helm install dubbo-admin -f properties.yaml dubbo-charts/dubbo-admin
@@ -103,65 +139,13 @@
**3. Visit Dubbo Admin**
-Dubbo Admin should now has been successfully installed, run the following command:
+Dubbo Admin Now that the installation should be successful, run the following command to obtain the access address:
```sh
$ kubectl --namespace default port-forward service/dubbo-admin 38080:38080
```
-Open browser and visit http://127.0.0.1:38080, 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/kubernetes
-```
-
-**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 38080:38080
-```
-
-Open web browser and visit `http://localhost:38080`, 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 38080:38080 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:38080`, 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:38080`, default username and password are `root`
+Visit http://127.0.0.1:38080
# 2. Want To Contribute
diff --git a/README_ZH.md b/README_ZH.md
index e9a5f33..6417758 100644
--- a/README_ZH.md
+++ b/README_ZH.md
@@ -10,78 +10,114 @@
![index](https://raw.githubusercontent.com/apache/dubbo-admin/develop/doc/images/index.png)
-# 快速开始
-有四种将 Dubbo Admin 部署到生产环境的方式:
+有四种将 Dubbo Admin 部署到生产环境的方式
-1. [基于 Helm 运行 Admin (推荐)](#11-使用-Helm-文件)
-2. [基于 Kubernetes 运行 Admin](#12-使用-Kubernetes-文件)
-3. [基于 Docker 运行 Admin](#13-使用-Docker-文件)
-4. [基于源码打包运行 Admin](#14-通过源码打包运行)
+1. [Linux 运行 Admin](#11-linux-运行-admin)
+2. [Docker 运行 Admin](#12-docker-运行-admin)
+3. [Kubernetes 运行 Admin](#13-kubernetes-运行-admin)
+4. [Helm 运行 Admin](#14-helm-运行-admin)
-你可以基于自己的环境选择任一方式,其中,Helm 是推荐的安装方式,因为 Helm 可以做到一键安装,自动帮助管理所有 Admin 必须的生产环境依赖。
+基于环境选择任一方式,其中,Helm 是推荐的安装方式,因为 Helm 可以做到一键安装,自动帮助管理所有 Admin 必须的生产环境依赖。
-## 1.1 使用 Helm 运行
+## 1.1 Linux 运行 Admin
+
+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:38080`
+
+## 1.2 Docker 运行 Admin
+ Admin 镜像托管在: https://hub.docker.com/repository/docker/apache/dubbo-admin
+
+ 修改 `application.properties` 文件默认参数,如注册中心、配置中心地址等, 通过 `docker inspect` 获取地址,172.17.0.2 是 zookeeper 的注册中心地址
+```
+ admin.registry.address: zookeeper://172.17.0.2:2181
+ admin.config-center: zookeeper://172.17.0.2:2181
+ admin.metadata-report.address: zookeeper://172.17.0.2:2181
+```
+
+```sh
+$ docker run -p 38080:38080 --name dubbo-admin -d dubbo-admin
+```
+
+打开浏览器并访问 `http://localhost:38080`
+
+## 1.3 Kubernetes 运行 Admin
+
+**1. 下载 Kubernetes manifests**
+```sh
+$ git clone https://github.com/apache/dubbo-admin.git
+```
+
+切换到 `deploy/k8s` 目录可以看到 Admin kubernetes 资源文件
+```sh
+$ cd /dubbo-admin/deploy/kubernetes
+```
+
+**2. 部署 Dubbo Admin**
+
+修改 [application.properties](./dubbo-admin-server/src/main/resources/application.properties) `configmap.yaml` 中的参数配置,只定义要覆盖参数即可。
+
+执行以下命令:
+
+```sh
+$ kubectl apply -f ./
+```
+
+**3. 访问 Admin**
+```sh
+$ kubectl port-forward service dubbo-admin 38080:38080
+```
+
+打开浏览器并访问 `http://localhost:38080`
+
+
+## 1.4 Helm 运行 Admin
通过 Helm 运行 Admin 有两种方式,它们起到相同的效果,因此可以选择以下任意一种。
-### 1.1.1 基于 Chart 源文件运行 Admin
+### 1.4.1 基于 Chart 源文件运行 Admin
**1. 下载 chart 源文件**
-克隆 Dubbo Admin 仓库源码:
+克隆 Dubbo Admin 项目仓库:
```sh
$ git clone https://github.com/apache/dubbo-admin.git
```
-从仓库根目录切换到以下目录 `deploy/helm/dubbo-admin`
+从仓库根目录切换到以下目录 `deploy/charts/dubbo-admin`
```sh
-$ cd dubbo-admin/deploy/helm/dubbo-admin
+$ cd dubbo-admin/deploy/charts/dubbo-admin
```
**2. 安装 helm chart**
+Admin 的启动参数,以便让 Admin 连接到真实的生产环境注册中心或配置中心,可以通过以下 `-f` helm 参数指定自定义配置文件:
+
+```yaml
+properties:
+ admin.registry.address: zookeeper://zookeeper:2181
+ admin.config-center: zookeeper://zookeeper:2181
+ admin.metadata-report.address: zookeeper://zookeeper:2181
+```
+
+`zookeeper://zookeeper:2181` Kubernetes 集群注册中心 zookeeper 的访问地址。
```sh
-$ helm install dubbo-admin .
+$ helm install dubbo-admin -f values.yaml .
```
-或者,如果你想定制 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)。
+`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 现在应该已经成功安装,运行以下命令获得访问地址:
+打开浏览器并访问 http://127.0.0.1:38080
-```sh
-$ kubectl --namespace default port-forward service/dubbo-admin 38080:38080
-```
-
-或者,你可以参考执行 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:38080 to use your application"
-kubectl --namespace default port-forward $POD_NAME 38080:$CONTAINER_PORT
-```
-
-打开浏览器并访问 http://127.0.0.1:38080,默认的 username 和 password 是 `root`
-
-### 1.1.2 基于 Chart 仓库运行 Admin
+### 1.4.2 基于 Chart 仓库运行 Admin
**1. 添加 helm chart 仓库 (暂时不可用)**
@@ -109,61 +145,7 @@
$ kubectl --namespace default port-forward service/dubbo-admin 38080:38080
```
-打开浏览器并访问 http://127.0.0.1:38080,默认的 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/kubernetes
-```
-
-**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 38080:38080
-```
-
-打开浏览器并访问 `http://localhost:38080`, 默认 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 38080:38080 apache/dubbo-admin
-```
-
-将 `/the/host/path/containing/properties` 替换为宿主机上包含 `application.properties` 文件的实际路径(必须是一个有效目录的绝对路径)。
-
-打开浏览器并访问 `http://localhost:38080`, 默认 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:38080`
+打开浏览器并访问 http://127.0.0.1:38080
# 2 参与项目贡献
diff --git a/deploy/charts/dubbo-admin/Chart.yaml b/deploy/charts/dubbo-admin/Chart.yaml
index 7a7f5f4..a412fd6 100644
--- a/deploy/charts/dubbo-admin/Chart.yaml
+++ b/deploy/charts/dubbo-admin/Chart.yaml
@@ -1,5 +1,5 @@
apiVersion: v2
-appVersion: 3.1.5
+appVersion: 3.1.6
name: dubbo-admin
description: Distributed application monitoring and management platform.
home: https://cn.dubbo.apache.org
diff --git a/deploy/charts/dubbo-admin/README.md b/deploy/charts/dubbo-admin/README.md
index 250de97..13c8196 100644
--- a/deploy/charts/dubbo-admin/README.md
+++ b/deploy/charts/dubbo-admin/README.md
@@ -1,11 +1,14 @@
+## 1. Project download to local
```
git clone https://github.com/apache/dubbo-admin.git
```
+## 2. Switch project directory
```
-cd dubbo-admin/deploy/helm
+cd dubbo-admin/deploy/charts/dubbo-admin
```
+## 3. Install dubbo-admin
```
helm install dubbo-admin -f values.yaml .
```
\ No newline at end of file
diff --git a/deploy/charts/dubbo-admin/templates/NOTES.txt b/deploy/charts/dubbo-admin/templates/NOTES.txt
index ca484a3..1bb1f8e 100644
--- a/deploy/charts/dubbo-admin/templates/NOTES.txt
+++ b/deploy/charts/dubbo-admin/templates/NOTES.txt
@@ -1,22 +1,55 @@
-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 }}
+CHART NAME: {{ .Chart.Name }}
+CHART VERSION: {{ .Chart.Version }}
+APP VERSION: {{ .Chart.AppVersion }}
+
+1. Get your '{{ .Chart.Name }}' by running:
+
+ kubectl get deploy {{ include "dubbo-admin.fullname" . }} -n {{ include "dubbo-admin.namespace" . }}
+
+2. Login Dubbo-admin default user and password:
+ **********************************************
+ USERNAME: root
+ PASSWORD: root
+ **********************************************
+
+3. The Dubbo-admin server can be accessed via port {{ .Values.service.port }} on the following DNS name from within your cluster:
+
+ {{ include "dubbo-admin.fullname" . }}.{{ include "dubbo-admin.namespace" . }}.svc.cluster.local
+
+ {{ if .Values.ingress.enabled }}
+ If you bind Dubbo-admin to 38080, please update values in values.yaml and reinstall:
+
+ From outside the cluster, the server URL(s) are:
+ {{- range .Values.ingress.hosts }}
+ http://{{ . }}
+ {{- end }}
+ {{- else }}
+4. Get the Dubbo-admin URL to visit by running these commands in the same shell:
+ {{- if contains "NodePort" .Values.service.type }}
+ export NODE_PORT=$(kubectl get --namespace {{ include "dubbo-admin.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "dubbo-admin.fullname" . }})
+
+ export NODE_IP=$(kubectl get nodes --namespace {{ include "dubbo-admin.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 svc --namespace {{ include "dubbo-admin.namespace" . }} -w {{ include "dubbo-admin.fullname" . }}'
+
+ export SERVICE_IP=$(kubectl get svc --namespace {{ include "dubbo-admin.namespace" . }} {{ include "dubbo-admin.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
+
+ http://$SERVICE_IP:{{ .Values.service.port -}}
+ {{- else if contains "ClusterIP" .Values.service.type }}
+
+ export POD_NAME=$(kubectl get pods --namespace {{ include "dubbo-admin.namespace" . }} -l "app.kubernetes.io/name={{ include "dubbo-admin.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
+
+ kubectl --namespace {{ include "dubbo-admin.namespace" . }} port-forward $POD_NAME 38080
+ {{- 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 }}
+
+
+{{- if not .Values.persistence.enabled }}
+#################################################################################
+###### WARNING: Persistence is disabled!!! You will lose your data when #####
+###### the Dubbo-admin pod is terminated. #####
+#################################################################################
+{{- end }}
\ No newline at end of file
diff --git a/deploy/charts/dubbo-admin/templates/_helpers.tpl b/deploy/charts/dubbo-admin/templates/_helpers.tpl
index b0a5331..98cdd5a 100644
--- a/deploy/charts/dubbo-admin/templates/_helpers.tpl
+++ b/deploy/charts/dubbo-admin/templates/_helpers.tpl
@@ -6,6 +6,7 @@
{{- 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).
@@ -24,6 +25,7 @@
{{- end }}
{{- end }}
+
{{/*
Create chart name and version as used by the chart label.
*/}}
@@ -56,6 +58,7 @@
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
+
{{/*
Return the appropriate apiVersion for rbac.
*/}}
@@ -68,14 +71,12 @@
{{- 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
*/}}
@@ -87,6 +88,7 @@
{{- end }}
{{- end }}
+
{{- define "dubbo-admin.serviceAccountNameTest" -}}
{{- if .Values.serviceAccount.create }}
{{- default (print (include "dubbo-admin.fullname" .) "-test") .Values.serviceAccount.nameTest }}
@@ -95,6 +97,7 @@
{{- end }}
{{- end }}
+
{{/*
Formats imagePullSecrets. Input is (dict "root" . "imagePullSecrets" .{specific imagePullSecrets})
*/}}
@@ -107,4 +110,54 @@
- name: {{ tpl . $root }}
{{- end }}
{{- end }}
+{{- end }}
+
+
+{{/*
+Return if ingress is stable.
+*/}}
+{{- define "dubbo-admin.ingress.isStable" -}}
+{{- eq (include "dubbo-admin.ingress.apiVersion" .) "networking.k8s.io/v1" }}
+{{- end }}
+
+
+{{/*
+Return if ingress supports ingressClassName.
+*/}}
+{{- define "dubbo-admin.ingress.supportsIngressClassName" -}}
+{{- or (eq (include "dubbo-admin.ingress.isStable" .) "true") (and (eq (include "dubbo-admin.ingress.apiVersion" .) "networking.k8s.io/v1beta1") (semverCompare ">= 1.18-0" .Capabilities.KubeVersion.Version)) }}
+{{- end }}
+
+
+{{/*
+Return if ingress supports pathType.
+*/}}
+{{- define "dubbo-admin.ingress.supportsPathType" -}}
+{{- or (eq (include "dubbo-admin.ingress.isStable" .) "true") (and (eq (include "dubbo-admin.ingress.apiVersion" .) "networking.k8s.io/v1beta1") (semverCompare ">= 1.18-0" .Capabilities.KubeVersion.Version)) }}
+{{- end }}
+
+
+{{/*
+Return the appropriate apiVersion for ingress.
+*/}}
+{{- define "dubbo-admin.ingress.apiVersion" -}}
+{{- if and ($.Capabilities.APIVersions.Has "networking.k8s.io/v1") (semverCompare ">= 1.19-0" .Capabilities.KubeVersion.Version) }}
+{{- print "networking.k8s.io/v1" }}
+{{- else if $.Capabilities.APIVersions.Has "networking.k8s.io/v1beta1" }}
+{{- print "networking.k8s.io/v1beta1" }}
+{{- else }}
+{{- print "extensions/v1beta1" }}
+{{- end }}
+{{- end }}
+
+
+{{/*
+Return the appropriate apiVersion for podDisruptionBudget.
+*/}}
+{{- define "dubbo-admin.podDisruptionBudget.apiVersion" -}}
+{{- if $.Capabilities.APIVersions.Has "policy/v1/PodDisruptionBudget" }}
+{{- print "policy/v1" }}
+{{- else }}
+{{- print "policy/v1beta1" }}
+{{- end }}
{{- end }}
\ No newline at end of file
diff --git a/deploy/charts/dubbo-admin/templates/deployment.yaml b/deploy/charts/dubbo-admin/templates/deployment.yaml
index d4fcbd1..57057be 100644
--- a/deploy/charts/dubbo-admin/templates/deployment.yaml
+++ b/deploy/charts/dubbo-admin/templates/deployment.yaml
@@ -53,9 +53,12 @@
- name: {{ .Values.service.name }}
containerPort: {{ .Values.service.containerPort }}
volumeMounts:
- - mountPath: {{ .Values.volumeMounts.mountPath }}
- name: {{ .Values.volumeMounts.name }}
- readOnly: {{ .Values.volumeMounts.readOnly }}
+ - mountPath: /config
+ name: application-properties
+ readOnly: true
+ - mountPath: /storage
+ name: storage
+ readOnly: true
livenessProbe:
httpGet:
path: {{ .Values.livenessProbe.httpGet.path }}
@@ -74,9 +77,30 @@
periodSeconds: {{ .Values.readinessProbe.periodSeconds }}
successThreshold: {{ .Values.readinessProbe.successThreshold }}
failureThreshold: {{ .Values.readinessProbe.failureThreshold }}
+ startupProbe:
+ httpGet:
+ path: {{ .Values.startupProbe.httpGet.path }}
+ port: {{ .Values.startupProbe.httpGet.port }}
+ initialDelaySeconds: {{ .Values.startupProbe.initialDelaySeconds }}
+ timeoutSeconds: {{ .Values.startupProbe.timeoutSeconds }}
+ periodSeconds: {{ .Values.startupProbe.periodSeconds }}
+ successThreshold: {{ .Values.startupProbe.successThreshold }}
+ failureThreshold: {{ .Values.startupProbe.failureThreshold }}
resources:
{{- toYaml .Values.resources | nindent 12 }}
volumes:
- - name: {{ .Values.volumes.name }}
+ - name: application-properties
secret:
- secretName: {{ .Chart.Name }}
\ No newline at end of file
+ secretName: {{ include "dubbo-admin.fullname" . }}-secret
+ - name: storage
+ {{- if .Values.persistence.enabled }}
+ persistentVolumeClaim:
+ {{ if .Values.persistence.ClaimName }}
+ claimName: {{ .Values.persistence.ClaimName }}
+ {{- else -}}
+ emptyDir: {{- if .Values.persistence.emptyDir.sizeLimit }}
+ sizeLimit: {{ .Values.persistence.emptyDir.sizeLimit }}
+ {{- else }} {}
+ {{- end -}}
+ {{- end -}}
+ {{- end -}}
diff --git a/deploy/charts/dubbo-admin/templates/ingress.yaml b/deploy/charts/dubbo-admin/templates/ingress.yaml
index 3b15118..9fe91f0 100644
--- a/deploy/charts/dubbo-admin/templates/ingress.yaml
+++ b/deploy/charts/dubbo-admin/templates/ingress.yaml
@@ -1,61 +1,78 @@
{{- if .Values.ingress.enabled -}}
+{{- $ingressApiIsStable := eq (include "dubbo-admin.ingress.isStable" .) "true" -}}
+{{- $ingressSupportsIngressClassName := eq (include "dubbo-admin.ingress.supportsIngressClassName" .) "true" -}}
+{{- $ingressSupportsPathType := eq (include "dubbo-admin.ingress.supportsPathType" .) "true" -}}
{{- $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 }}
+{{- $servicePort := .Values.service.port -}}
+{{- $ingressPath := .Values.ingress.path -}}
+{{- $ingressPathType := .Values.ingress.pathType -}}
+{{- $extraPaths := .Values.ingress.extraPaths -}}
+apiVersion: {{ include "dubbo-admin.ingress.apiVersion" . }}
kind: Ingress
metadata:
name: {{ $fullName }}
+ namespace: {{ include "dubbo-admin.namespace" . }}
labels:
{{- include "dubbo-admin.labels" . | nindent 4 }}
+ {{- with .Values.ingress.labels }}
+ {{- toYaml . | nindent 4 }}
+ {{- end }}
{{- 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 }}
+ {{- range $key, $value := . }}
+ {{ $key }}: {{ tpl $value $ | quote }}
{{- end }}
{{- end }}
+spec:
+ {{- if and $ingressSupportsIngressClassName .Values.ingress.ingressClassName }}
+ ingressClassName: {{ .Values.ingress.ingressClassName }}
+ {{- end -}}
+ {{- with .Values.ingress.tls }}
+ tls:
+ {{- tpl (toYaml .) $ | nindent 4 }}
+ {{- end }}
rules:
- {{- range .Values.ingress.hosts }}
- - host: {{ .host | quote }}
+ {{- if .Values.ingress.hosts }}
+ {{- range .Values.ingress.hosts }}
+ - host: {{ tpl . $ }}
http:
paths:
- {{- range .paths }}
- - path: {{ .path }}
- {{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }}
- pathType: {{ .pathType }}
+ {{- with $extraPaths }}
+ {{- toYaml . | nindent 10 }}
+ {{- end }}
+ - path: {{ $ingressPath }}
+ {{- if $ingressSupportsPathType }}
+ pathType: {{ $ingressPathType }}
{{- end }}
backend:
- {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }}
+ {{- if $ingressApiIsStable }}
service:
name: {{ $fullName }}
port:
- number: {{ $svcPort }}
+ number: {{ $servicePort }}
{{- else }}
serviceName: {{ $fullName }}
- servicePort: {{ $svcPort }}
+ servicePort: {{ $servicePort }}
{{- end }}
- {{- end }}
- {{- end }}
+ {{- end }}
+ {{- else }}
+ - http:
+ paths:
+ - backend:
+ {{- if $ingressApiIsStable }}
+ service:
+ name: {{ $fullName }}
+ port:
+ number: {{ $servicePort }}
+ {{- else }}
+ serviceName: {{ $fullName }}
+ servicePort: {{ $servicePort }}
+ {{- end }}
+ {{- with $ingressPath }}
+ path: {{ . }}
+ {{- end }}
+ {{- if $ingressSupportsPathType }}
+ pathType: {{ $ingressPathType }}
+ {{- end }}
+ {{- end -}}
{{- end }}
diff --git a/deploy/charts/dubbo-admin/templates/networkpolicy.yaml b/deploy/charts/dubbo-admin/templates/networkpolicy.yaml
new file mode 100644
index 0000000..70f3e8a
--- /dev/null
+++ b/deploy/charts/dubbo-admin/templates/networkpolicy.yaml
@@ -0,0 +1,52 @@
+{{- if .Values.networkPolicy.enabled }}
+apiVersion: networking.k8s.io/v1
+kind: NetworkPolicy
+metadata:
+ name: {{ include "dubbo-admin.fullname" . }}
+ namespace: {{ include "dubbo-admin.namespace" . }}
+ labels:
+ {{- include "dubbo-admin.labels" . | nindent 4 }}
+ {{- with .Values.labels }}
+ {{- toYaml . | nindent 4 }}
+ {{- end }}
+ {{- with .Values.annotations }}
+ annotations:
+ {{- toYaml . | nindent 4 }}
+ {{- end }}
+spec:
+ policyTypes:
+ {{- if .Values.networkPolicy.ingress }}
+ - Ingress
+ {{- end }}
+ {{- if .Values.networkPolicy.egress.enabled }}
+ - Egress
+ {{- end }}
+ podSelector:
+ matchLabels:
+ {{- include "dubbo-admin.selectorLabels" . | nindent 6 }}
+
+ {{- if .Values.networkPolicy.egress.enabled }}
+ egress:
+ - ports:
+ {{ .Values.networkPolicy.egress.ports | toJson }}
+ {{- end }}
+ {{- if .Values.networkPolicy.ingress }}
+ ingress:
+ - ports:
+ - port: {{ .Values.service.targetPort }}
+ {{- if not .Values.networkPolicy.allowExternal }}
+ from:
+ - podSelector:
+ matchLabels:
+ {{ include "dubbo-admin.fullname" . }}-client: "true"
+ {{- with .Values.networkPolicy.explicitNamespacesSelector }}
+ - namespaceSelector:
+ {{- toYaml . | nindent 12 }}
+ {{- end }}
+ - podSelector:
+ matchLabels:
+ {{- include "dubbo-admin.labels" . | nindent 14 }}
+ role: read
+ {{- end }}
+ {{- end }}
+{{- end }}
diff --git a/deploy/charts/dubbo-admin/templates/poddisruptionbudget.yaml b/deploy/charts/dubbo-admin/templates/poddisruptionbudget.yaml
new file mode 100644
index 0000000..86809fe
--- /dev/null
+++ b/deploy/charts/dubbo-admin/templates/poddisruptionbudget.yaml
@@ -0,0 +1,20 @@
+apiVersion: {{ include "dubbo-admin.podDisruptionBudget.apiVersion" . }}
+kind: PodDisruptionBudget
+metadata:
+ name: {{ include "dubbo-admin.fullname" . }}
+ namespace: {{ include "dubbo-admin.namespace" . }}
+ labels:
+ {{- include "dubbo-admin.labels" . | nindent 4 }}
+ {{- with .Values.labels }}
+ {{- toYaml . | nindent 4 }}
+ {{- end }}
+spec:
+ {{- with .Values.podDisruptionBudget.minAvailable }}
+ minAvailable: {{ . }}
+ {{- end }}
+ {{- with .Values.podDisruptionBudget.maxUnavailable }}
+ maxUnavailable: {{ . }}
+ {{- end }}
+ selector:
+ matchLabels:
+ {{- include "dubbo-admin.selectorLabels" . | nindent 6 }}
diff --git a/deploy/charts/dubbo-admin/templates/podsecuritypolicy.yaml b/deploy/charts/dubbo-admin/templates/podsecuritypolicy.yaml
new file mode 100644
index 0000000..e2b830f
--- /dev/null
+++ b/deploy/charts/dubbo-admin/templates/podsecuritypolicy.yaml
@@ -0,0 +1,39 @@
+{{- if and .Values.rbac.pspEnabled (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }}
+apiVersion: policy/v1beta1
+kind: PodSecurityPolicy
+metadata:
+ name: {{ include "dubbo-admin.fullname" . }}
+ labels:
+ {{- include "dubbo-admin.labels" . | nindent 4 }}
+spec:
+ privileged: false
+ allowPrivilegeEscalation: false
+ requiredDropCapabilities:
+ - ALL
+ volumes:
+ - 'configMap'
+ - 'emptyDir'
+ - 'projected'
+ - 'csi'
+ - 'secret'
+ - 'downwardAPI'
+ - 'persistentVolumeClaim'
+ hostNetwork: false
+ hostIPC: false
+ hostPID: false
+ runAsUser:
+ rule: 'RunAsAny'
+ seLinux:
+ rule: 'RunAsAny'
+ supplementalGroups:
+ rule: 'MustRunAs'
+ ranges:
+ - min: 1
+ max: 65535
+ fsGroup:
+ rule: 'MustRunAs'
+ ranges:
+ - min: 1
+ max: 65535
+ readOnlyRootFilesystem: false
+{{- end }}
diff --git a/deploy/charts/dubbo-admin/templates/pvc.yaml b/deploy/charts/dubbo-admin/templates/pvc.yaml
new file mode 100644
index 0000000..80a2565
--- /dev/null
+++ b/deploy/charts/dubbo-admin/templates/pvc.yaml
@@ -0,0 +1,36 @@
+{{- if and .Values.persistence.enabled (not .Values.persistence.ClaimName) (eq .Values.persistence.type "pvc")}}
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+ name: {{ include "dubbo-admin.fullname" . }}
+ namespace: {{ include "dubbo-admin.namespace" . }}
+ labels:
+ {{- include "dubbo-admin.labels" . | nindent 4 }}
+ {{- with .Values.persistence.extraPvcLabels }}
+ {{- toYaml . | nindent 4 }}
+ {{- end }}
+ {{- with .Values.persistence.annotations }}
+ annotations:
+ {{- toYaml . | nindent 4 }}
+ {{- end }}
+ {{- with .Values.persistence.finalizers }}
+ finalizers:
+ {{- toYaml . | nindent 4 }}
+ {{- end }}
+spec:
+ accessModes:
+ {{- range .Values.persistence.accessModes }}
+ - {{ . | quote }}
+ {{- end }}
+ resources:
+ requests:
+ storage: {{ .Values.persistence.size | quote }}
+ {{- with .Values.persistence.storageClassName }}
+ storageClassName: {{ . }}
+ {{- end }}
+ {{- with .Values.persistence.selectorLabels }}
+ selector:
+ matchLabels:
+ {{- toYaml . | nindent 6 }}
+ {{- end }}
+{{- end }}
diff --git a/deploy/charts/dubbo-admin/templates/secret.yaml b/deploy/charts/dubbo-admin/templates/secret.yaml
index f296bee..e18ce8c 100644
--- a/deploy/charts/dubbo-admin/templates/secret.yaml
+++ b/deploy/charts/dubbo-admin/templates/secret.yaml
@@ -1,10 +1,9 @@
apiVersion: v1
kind: Secret
metadata:
- name: {{ .Chart.Name }}
+ name: {{ include "dubbo-admin.fullname" . }}-secret
namespace: {{ include "dubbo-admin.namespace" . }}
labels:
{{- include "dubbo-admin.labels" . | nindent 4 }}
- type: Opaque
data:
application.properties: {{ tpl (toYaml .Values.properties) . | b64enc }}
diff --git a/deploy/charts/dubbo-admin/templates/svc-headless.yaml b/deploy/charts/dubbo-admin/templates/svc-headless.yaml
index 224b05e..6776177 100644
--- a/deploy/charts/dubbo-admin/templates/svc-headless.yaml
+++ b/deploy/charts/dubbo-admin/templates/svc-headless.yaml
@@ -8,7 +8,7 @@
{{- include "dubbo-admin.labels" . | nindent 4 }}
spec:
{{- if (or (eq .Values.service.type "ClusterIP") (empty .Values.service.type)) }}
- type: ClusterIP
+ type: {{ .Values.service.type }}
clusterIP: None
{{- else if eq .Values.service.type "LoadBalancer" }}
type: {{ .Values.service.type }}
diff --git a/deploy/charts/dubbo-admin/templates/svc.yaml b/deploy/charts/dubbo-admin/templates/svc.yaml
index 4697b68..7771dc6 100644
--- a/deploy/charts/dubbo-admin/templates/svc.yaml
+++ b/deploy/charts/dubbo-admin/templates/svc.yaml
@@ -8,7 +8,7 @@
{{- include "dubbo-admin.labels" . | nindent 4 }}
spec:
{{- if (or (eq .Values.service.type "ClusterIP") (empty .Values.service.type)) }}
- type: ClusterIP
+ type: {{ .Values.service.type }}
{{- with .Values.service.clusterIP }}
clusterIP: {{ . }}
{{- end }}
diff --git a/deploy/charts/dubbo-admin/templates/tests/test-role.yaml b/deploy/charts/dubbo-admin/templates/tests/test-role.yaml
new file mode 100644
index 0000000..c7f8995
--- /dev/null
+++ b/deploy/charts/dubbo-admin/templates/tests/test-role.yaml
@@ -0,0 +1,21 @@
+{{- if and (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") .Values.testFramework.enabled .Values.rbac.pspEnabled }}
+apiVersion: rbac.authorization.k8s.io/v1
+kind: Role
+metadata:
+ name: {{ include "dubbo-admin.fullname" . }}-test
+ namespace: {{ include "dubbo-admin.namespace" . }}
+ annotations:
+ "helm.sh/hook": test-success
+ "helm.sh/hook-delete-policy": "before-hook-creation,hook-succeeded"
+ labels:
+ {{- include "dubbo-admin.labels" . | nindent 4 }}
+rules:
+ - apiGroups:
+ - extensions
+ resources:
+ - podsecuritypolicies
+ verbs:
+ - use
+ resourceNames:
+ - {{ include "dubbo-admin.fullname" . }}-test
+{{- end }}
diff --git a/deploy/charts/dubbo-admin/templates/tests/test-rolebinding.yaml b/deploy/charts/dubbo-admin/templates/tests/test-rolebinding.yaml
new file mode 100644
index 0000000..6f01922
--- /dev/null
+++ b/deploy/charts/dubbo-admin/templates/tests/test-rolebinding.yaml
@@ -0,0 +1,20 @@
+{{- if and (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") .Values.testFramework.enabled .Values.rbac.pspEnabled }}
+apiVersion: rbac.authorization.k8s.io/v1
+kind: RoleBinding
+metadata:
+ name: {{ include "dubbo-admin.fullname" . }}-test
+ namespace: {{ include "dubbo-admin.namespace" . }}
+ annotations:
+ "helm.sh/hook": test-success
+ "helm.sh/hook-delete-policy": "before-hook-creation,hook-succeeded"
+ labels:
+ {{- include "dubbo-admin.labels" . | nindent 4 }}
+roleRef:
+ apiGroup: rbac.authorization.k8s.io
+ kind: Role
+ name: {{ include "dubbo-admin.fullname" . }}-test
+subjects:
+ - kind: ServiceAccount
+ name: {{ include "dubbo-admin.serviceAccountNameTest" . }}
+ namespace: {{ include "dubbo-admin.namespace" . }}
+{{- end }}
diff --git a/deploy/charts/dubbo-admin/templates/tests/test-secret.yaml b/deploy/charts/dubbo-admin/templates/tests/test-secret.yaml
new file mode 100644
index 0000000..2fd8384
--- /dev/null
+++ b/deploy/charts/dubbo-admin/templates/tests/test-secret.yaml
@@ -0,0 +1,13 @@
+apiVersion: v1
+kind: Secret
+metadata:
+ name: {{ include "dubbo-admin.fullname" . }}-secret-test
+ namespace: {{ include "dubbo-admin.namespace" . }}
+ annotations:
+ "helm.sh/hook": test-success
+ "helm.sh/hook-delete-policy": "before-hook-creation,hook-succeeded"
+ labels:
+ {{- include "dubbo-admin.labels" . | nindent 4 }}
+ type: Opaque
+data:
+ application.properties: {{ tpl (toYaml .Values.properties) . | b64enc }}-test
diff --git a/deploy/charts/dubbo-admin/templates/tests/test.yaml b/deploy/charts/dubbo-admin/templates/tests/test.yaml
index dd44ee8..95ca164 100644
--- a/deploy/charts/dubbo-admin/templates/tests/test.yaml
+++ b/deploy/charts/dubbo-admin/templates/tests/test.yaml
@@ -43,7 +43,7 @@
readOnly: true
volumes:
- name: tests
- configMap:
- name: {{ include "dubbo-admin.fullname" . }}-test
+ secret:
+ secretName: {{ include "dubbo-admin.fullname" . }}-secret
restartPolicy: Never
{{- end }}
diff --git a/deploy/charts/dubbo-admin/values.yaml b/deploy/charts/dubbo-admin/values.yaml
index 5417cd8..b7b2d38 100644
--- a/deploy/charts/dubbo-admin/values.yaml
+++ b/deploy/charts/dubbo-admin/values.yaml
@@ -1,41 +1,48 @@
+## global.imageRegistry Global Docker image registry
+## global.imagePullSecrets Global Docker registry secret names as an array
+## global.storageClass Global StorageClass for Persistent Volume(s)
+##
global:
- # To help compatibility with other charts which use global.imagePullSecrets.
- # Allow either an array of {name: pullSecret} maps (k8s-style), or an array of strings (more common charts-style).
- # Can be tempalted.
- # global:
- # imagePullSecrets:
- # - name: pullSecret1
- # - name: pullSecret2
- # or
- # global:
- # imagePullSecrets:
- # - pullSecret1
- # - pullSecret2
+ imageRegistry: ""
+ ## E.g.
+ ## imagePullSecrets:
+ ## - myRegistryKeySecretName
+ ##
imagePullSecrets: []
-
-
+ ##
+ ##
+## fullnameOverride String to fully override common.names.fullname template
+##
fullnameOverride: {}
-
-
+##
+##
+## nameOverride String to partially override common.names.fullname template (will maintain the release name)
+##
nameOverride: {}
-
-
+##
+##
+## namespaceOverride String to partially override common.names.namespace template
+##
namespaceOverride: {}
-
-
+##
+##
+## labels String to override common.names.labels template
+##
labels: {}
-
-
+##
+##
+## annotations String to override common.names.annotations template
+##
annotations: {}
-
-volumes:
- name: application-properties
-
-
-volumeMounts:
- mountPath: /config
- name: application-properties
- readOnly: true
+##
+##
+##
+##
+## See `kubectl explain poddisruptionbudget.spec` for more
+## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
+podDisruptionBudget:
+ minAvailable: 1
+ # maxUnavailable: 1
rbac:
@@ -54,7 +61,7 @@
# resources: []
# verbs: []
-## serviceAccount
+ ## serviceAccount Name
serviceAccount:
create: true
name:
@@ -63,7 +70,7 @@
annotations: {}
-## Number of copies
+## Number of service copies
replicas: 1
# -- Optional array of imagePullSecrets containing private registry credentials
@@ -90,19 +97,20 @@
revisionHistoryLimit: 10
-## See `kubectl explain poddisruptionbudget.spec` for more
-## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
-podDisruptionBudget: {}
-# minAvailable: 1
-# maxUnavailable: 1
-
-
## See `kubectl explain deployment.spec.strategy` for more
## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy
deploymentStrategy:
type: RollingUpdate
+## @param readinessProbe.enabled Enable readinessProbe on ZooKeeper containers
+## @param readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe
+## @param readinessProbe.periodSeconds Period seconds for readinessProbe
+## @param readinessProbe.timeoutSeconds Timeout seconds for readinessProbe
+## @param readinessProbe.failureThreshold Failure threshold for readinessProbe
+## @param readinessProbe.successThreshold Success threshold for readinessProbe
+## @param readinessProbe.probeCommandTimeout Probe command timeout for readinessProbe
+##
readinessProbe:
httpGet:
path: /
@@ -114,6 +122,14 @@
failureThreshold: 3
+## @param livenessProbe.enabled Enable livenessProbe on ZooKeeper containers
+## @param livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe
+## @param livenessProbe.periodSeconds Period seconds for livenessProbe
+## @param livenessProbe.timeoutSeconds Timeout seconds for livenessProbe
+## @param livenessProbe.failureThreshold Failure threshold for livenessProbe
+## @param livenessProbe.successThreshold Success threshold for livenessProbe
+## @param livenessProbe.probeCommandTimeout Probe command timeout for livenessProbe
+##
livenessProbe:
httpGet:
path: /
@@ -124,12 +140,35 @@
successThreshold: 1
failureThreshold: 3
+## @param startupProbe.enabled Enable startupProbe on ZooKeeper containers
+## @param startupProbe.initialDelaySeconds Initial delay seconds for startupProbe
+## @param startupProbe.periodSeconds Period seconds for startupProbe
+## @param startupProbe.timeoutSeconds Timeout seconds for startupProbe
+## @param startupProbe.failureThreshold Failure threshold for startupProbe
+## @param startupProbe.successThreshold Success threshold for startupProbe
+##
+startupProbe:
+ httpGet:
+ path: /
+ port: 8080
+ initialDelaySeconds: 60
+ timeoutSeconds: 30
+ periodSeconds: 10
+ successThreshold: 1
+ failureThreshold: 3
+
+## Dubbo-admin image version
image:
repository: apache/dubbo-admin
tag: "0.5.0"
+ ##
+ ## Specify a imagePullPolicy
+ ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
+ ## ref: https://kubernetes.io/docs/user-guide/images/#pre-pulling-images
+ ##
pullPolicy: IfNotPresent
-
+ ##
## Optionally specify an array of imagePullSecrets.
## Secrets must be manually created in the namespace.
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
@@ -139,11 +178,13 @@
# - RegisterKeySecretName
+## Configure Pods Security Context
securityContext:
# runAsUser: 570
# runAsGroup: 570
# fsGroup: 570
+
testFramework:
enabled: true
image: busybox
@@ -152,6 +193,7 @@
securityContext: {}
+## Init container Security Context
containerSecurityContext: {}
@@ -159,6 +201,7 @@
## This can be useful for auth tokens, etc
envRenderSecret: {}
+
# -- `minReadySeconds` to avoid killing pods before we are ready
##
minReadySeconds: 0
@@ -167,9 +210,11 @@
##
+## Create or not configmap
createConfigmap: true
+## configmap mounts
ConfigmapMounts: []
# - name: configMap-file
# mountPath: /config
@@ -177,13 +222,14 @@
# readOnly: true
+## secret mounts
SecretMounts:
# - name: secret-file
# secret:
# secretName: secret-file
-##
+## extraSecret Mounts
extraSecretMounts: []
# - name: secret-files
# mountPath: /etc/secrets
@@ -192,14 +238,13 @@
# subPath: ""
-##
+## emptyDir mounts
EmptyDirMounts: []
# - name: ""
# mountPath: /
-##
-# Apply extra labels to common labels.
+## Apply extra labels to common labels.
extraLabels: {}
@@ -319,6 +364,7 @@
# hosts:
# - chart-example.local
+
resources: {}
# limits:
# cpu: 100m
@@ -327,26 +373,31 @@
# cpu: 100m
# memory: 128Mi
+
## Node labels for pod assignment
## ref: https://kubernetes.io/docs/user-guide/node-selection/
#
nodeSelector: {}
+
## Tolerations for pod assignment
## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
##
tolerations: []
+
## Affinity for pod assignment (evaluated as template)
## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
##
affinity: {}
+
## Topology Spread Constraints
## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
##
topologySpreadConstraints: []
+
## Additional init containers (evaluated as template)
## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
##
@@ -359,18 +410,18 @@
persistence:
enabled: false
type: pvc
- # storageClassName: default
+ storageClassName: {}
accessModes:
- ReadWriteOnce
size: 10Gi
- # annotations: {}
+ annotations: {}
finalizers:
- kubernetes.io/pvc-protection
- # selectorLabels: {}
+ selectorLabels: {}
## Sub-directory of the PV to mount. Can be templated.
# subPath: ""
## Name of an existing PVC. Can be templated.
- # existingClaim:
+ ClaimName: {}
## Extra labels to apply to a PVC.
extraPvcLabels: {}
@@ -384,6 +435,11 @@
## here and the sum of memory limits of all containers in a pod
##
# sizeLimit: 300Mi
+ emptyDir:
+ ## dubbo-admin emptyDir volume size limit
+ ##
+ sizeLimit: ""
+
initChownData:
## If false, data ownership will not be reset at startup
@@ -476,6 +532,25 @@
## - port: 80
## - port: 443
+## dubbo-admin-server/src/main/resources/application.properties
+#
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#
properties:
admin.registry.address: zookeeper://zookeeper:2181
admin.config-center: zookeeper://zookeeper:2181
diff --git a/docker/0.1.0/Dockerfile b/docker/0.1.0/Dockerfile
index fef03d7..70c6c7d 100644
--- a/docker/0.1.0/Dockerfile
+++ b/docker/0.1.0/Dockerfile
@@ -13,13 +13,14 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-FROM openjdk:8-jdk
+FROM maven:3-openjdk-8
RUN mkdir /source && wget https://github.com/apache/dubbo-admin/archive/0.1.zip && unzip 0.1.zip -d /source
WORKDIR /source/dubbo-admin-0.1
-RUN ./mvnw clean package -Dmaven.test.skip=true
+COPY application.properties dubbo-admin-server/src/main/resources/application.properties
+RUN mvn clean package -Dmaven.test.skip=true
-FROM openjdk:8-jre
+FROM openjdk:8-jdk
LABEL maintainer="dev@dubbo.apache.org"
COPY --from=0 /source/dubbo-admin-0.1/dubbo-admin-distribution/target/dubbo-admin-0.1.jar /app.jar
-ENTRYPOINT ["java","-XX:+UnlockExperimentalVMOptions","-XX:+UseCGroupMemoryLimitForHeap","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
+ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
EXPOSE 8080
diff --git a/docker/0.1.0/Dockerfile.test b/docker/0.1.0/Dockerfile.test
new file mode 100644
index 0000000..dee4d1d
--- /dev/null
+++ b/docker/0.1.0/Dockerfile.test
@@ -0,0 +1,23 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+FROM ubuntu:trusty
+RUN apt-get update && apt-get install -yq curl && apt-get clean
+
+WORKDIR /app
+
+ADD test.sh /app/test.sh
+
+CMD ["bash", "test.sh"]
\ No newline at end of file
diff --git a/docker/0.1.0/application.properties b/docker/0.1.0/application.properties
new file mode 100644
index 0000000..0dbfa07
--- /dev/null
+++ b/docker/0.1.0/application.properties
@@ -0,0 +1,87 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+server.port=38080
+dubbo.protocol.port=30880
+dubbo.application.qos-port=32222
+
+# centers in dubbo2.7, if you want to add parameters, please add them to the url
+admin.registry.address=zookeeper://172.17.0.2:2181
+admin.config-center=zookeeper://172.17.0.2:2181
+admin.metadata-report.address=zookeeper://172.17.0.2:2181
+
+# nacos config, add parameters to url like username=nacos&password=nacos
+#admin.registry.address=nacos://127.0.0.1:8848?group=DEFAULT_GROUP&namespace=public
+#admin.config-center=nacos://127.0.0.1:8848?group=dubbo
+#admin.metadata-report.address=nacos://127.0.0.1:8848?group=dubbo
+
+#group (Deprecated it is recommended to use URL to add parameters,will be removed in the future)
+#admin.registry.group=dubbo
+#admin.config-center.group=dubbo
+#admin.metadata-report.group=dubbo
+
+#namespace used by nacos. (Deprecated it is recommended to use URL to add parameters,will be removed in the future)
+#admin.registry.namespace=public
+#admin.config-center.namespace=public
+#admin.metadata-report.namespace=public
+
+admin.root.user.name=root
+admin.root.user.password=root
+
+#session timeout, default is one hour
+admin.check.sessionTimeoutMilli=3600000
+
+
+# apollo config
+# admin.config-center = apollo://localhost:8070?token=e16e5cd903fd0c97a116c873b448544b9d086de9&app.id=test&env=dev&cluster=default&namespace=dubbo
+
+# (Deprecated it is recommended to use URL to add parameters,will be removed in the future)
+#admin.apollo.token=e16e5cd903fd0c97a116c873b448544b9d086de9
+#admin.apollo.appId=test
+#admin.apollo.env=dev
+#admin.apollo.cluster=default
+#admin.apollo.namespace=dubbo
+
+#compress
+server.compression.enabled=true
+server.compression.mime-types=text/css,text/javascript,application/javascript
+server.compression.min-response-size=10240
+
+#token timeout, default is one hour
+admin.check.tokenTimeoutMilli=3600000
+#Jwt signingKey
+admin.check.signSecret=86295dd0c4ef69a1036b0b0c15158d77
+
+#dubbo config
+dubbo.application.name=dubbo-admin
+dubbo.registry.address=${admin.registry.address}
+
+# mysql
+#spring.datasource.driver-class-name=com.mysql.jdbc.Driver
+#spring.datasource.url=jdbc:mysql://localhost:3306/dubbo-admin?characterEncoding=utf8&connectTimeout=1000&socketTimeout=10000&autoReconnect=true
+#spring.datasource.username=root
+#spring.datasource.password=mysql
+
+# h2
+spring.datasource.url=jdbc:h2:mem:~/dubbo-admin;MODE=MYSQL;
+spring.datasource.username=sa
+spring.datasource.password=
+
+# id generate type
+mybatis-plus.global-config.db-config.id-type=none
+
+dubbo.application.logger=slf4j
\ No newline at end of file
diff --git a/docker/0.1.0/docker-compose.test.yml b/docker/0.1.0/docker-compose.test.yml
new file mode 100644
index 0000000..9ac7fec
--- /dev/null
+++ b/docker/0.1.0/docker-compose.test.yml
@@ -0,0 +1,33 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+zookeeper:
+ image: zookeeper:3.5
+admin:
+ build: .
+ dockerfile: Dockerfile
+ links:
+ - zookeeper
+ environment:
+ - admin.registry.address=zookeeper://zookeeper:2181
+ - admin.config-center=zookeeper://zookeeper:2181
+ - admin.metadata-report.address=zookeeper://zookeeper:2181
+ ports:
+ - 8080
+sut:
+ build: .
+ dockerfile: Dockerfile.test
+ links:
+ - admin
\ No newline at end of file
diff --git a/docker/0.1.0/test.sh b/docker/0.1.0/test.sh
new file mode 100644
index 0000000..d342e35
--- /dev/null
+++ b/docker/0.1.0/test.sh
@@ -0,0 +1,34 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+
+# http://www.apache.org/licenses/LICENSE-2.0
+
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+LOOP_SIZE=60
+i=0
+
+while [[ $i -lt LOOP_SIZE ]]; do
+ status_code=$(curl --write-out %{http_code} --silent --output /dev/null http://admin:8080)
+
+ if [[ "$status_code" -eq 200 ]] ; then
+ echo "Tests passed!"
+ exit 0
+ else
+ curl -v http://admin:8080
+ echo "status is incorrect, waiting for next turn"
+ fi
+ sleep 5
+ i=$i+1
+done
+
+echo "Tests failed!"
+exit 1
\ No newline at end of file
diff --git a/docker/0.2.0/Dockerfile b/docker/0.2.0/Dockerfile
index 180865b..750e01e 100644
--- a/docker/0.2.0/Dockerfile
+++ b/docker/0.2.0/Dockerfile
@@ -16,10 +16,11 @@
FROM maven:3-openjdk-8
RUN mkdir /source && wget https://github.com/apache/dubbo-admin/archive/0.2.0.zip && unzip -q 0.2.0.zip -d /source
WORKDIR /source/dubbo-admin-0.2.0
+COPY application.properties dubbo-admin-server/src/main/resources/application.properties
RUN mvn --batch-mode clean package -Dmaven.test.skip=true
-FROM openjdk:8-jre
+FROM openjdk:8-jdk
LABEL maintainer="dev@dubbo.apache.org"
COPY --from=0 /source/dubbo-admin-0.2.0/dubbo-admin-distribution/target/dubbo-admin-0.2.0.jar /app.jar
-ENTRYPOINT ["java","-XX:+UnlockExperimentalVMOptions","-XX:+UseCGroupMemoryLimitForHeap","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
+ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
EXPOSE 8080
diff --git a/docker/0.2.0/Dockerfile.test b/docker/0.2.0/Dockerfile.test
new file mode 100644
index 0000000..dee4d1d
--- /dev/null
+++ b/docker/0.2.0/Dockerfile.test
@@ -0,0 +1,23 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+FROM ubuntu:trusty
+RUN apt-get update && apt-get install -yq curl && apt-get clean
+
+WORKDIR /app
+
+ADD test.sh /app/test.sh
+
+CMD ["bash", "test.sh"]
\ No newline at end of file
diff --git a/docker/0.2.0/application.properties b/docker/0.2.0/application.properties
new file mode 100644
index 0000000..0dbfa07
--- /dev/null
+++ b/docker/0.2.0/application.properties
@@ -0,0 +1,87 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+server.port=38080
+dubbo.protocol.port=30880
+dubbo.application.qos-port=32222
+
+# centers in dubbo2.7, if you want to add parameters, please add them to the url
+admin.registry.address=zookeeper://172.17.0.2:2181
+admin.config-center=zookeeper://172.17.0.2:2181
+admin.metadata-report.address=zookeeper://172.17.0.2:2181
+
+# nacos config, add parameters to url like username=nacos&password=nacos
+#admin.registry.address=nacos://127.0.0.1:8848?group=DEFAULT_GROUP&namespace=public
+#admin.config-center=nacos://127.0.0.1:8848?group=dubbo
+#admin.metadata-report.address=nacos://127.0.0.1:8848?group=dubbo
+
+#group (Deprecated it is recommended to use URL to add parameters,will be removed in the future)
+#admin.registry.group=dubbo
+#admin.config-center.group=dubbo
+#admin.metadata-report.group=dubbo
+
+#namespace used by nacos. (Deprecated it is recommended to use URL to add parameters,will be removed in the future)
+#admin.registry.namespace=public
+#admin.config-center.namespace=public
+#admin.metadata-report.namespace=public
+
+admin.root.user.name=root
+admin.root.user.password=root
+
+#session timeout, default is one hour
+admin.check.sessionTimeoutMilli=3600000
+
+
+# apollo config
+# admin.config-center = apollo://localhost:8070?token=e16e5cd903fd0c97a116c873b448544b9d086de9&app.id=test&env=dev&cluster=default&namespace=dubbo
+
+# (Deprecated it is recommended to use URL to add parameters,will be removed in the future)
+#admin.apollo.token=e16e5cd903fd0c97a116c873b448544b9d086de9
+#admin.apollo.appId=test
+#admin.apollo.env=dev
+#admin.apollo.cluster=default
+#admin.apollo.namespace=dubbo
+
+#compress
+server.compression.enabled=true
+server.compression.mime-types=text/css,text/javascript,application/javascript
+server.compression.min-response-size=10240
+
+#token timeout, default is one hour
+admin.check.tokenTimeoutMilli=3600000
+#Jwt signingKey
+admin.check.signSecret=86295dd0c4ef69a1036b0b0c15158d77
+
+#dubbo config
+dubbo.application.name=dubbo-admin
+dubbo.registry.address=${admin.registry.address}
+
+# mysql
+#spring.datasource.driver-class-name=com.mysql.jdbc.Driver
+#spring.datasource.url=jdbc:mysql://localhost:3306/dubbo-admin?characterEncoding=utf8&connectTimeout=1000&socketTimeout=10000&autoReconnect=true
+#spring.datasource.username=root
+#spring.datasource.password=mysql
+
+# h2
+spring.datasource.url=jdbc:h2:mem:~/dubbo-admin;MODE=MYSQL;
+spring.datasource.username=sa
+spring.datasource.password=
+
+# id generate type
+mybatis-plus.global-config.db-config.id-type=none
+
+dubbo.application.logger=slf4j
\ No newline at end of file
diff --git a/docker/0.2.0/docker-compose.test.yml b/docker/0.2.0/docker-compose.test.yml
new file mode 100644
index 0000000..9ac7fec
--- /dev/null
+++ b/docker/0.2.0/docker-compose.test.yml
@@ -0,0 +1,33 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+zookeeper:
+ image: zookeeper:3.5
+admin:
+ build: .
+ dockerfile: Dockerfile
+ links:
+ - zookeeper
+ environment:
+ - admin.registry.address=zookeeper://zookeeper:2181
+ - admin.config-center=zookeeper://zookeeper:2181
+ - admin.metadata-report.address=zookeeper://zookeeper:2181
+ ports:
+ - 8080
+sut:
+ build: .
+ dockerfile: Dockerfile.test
+ links:
+ - admin
\ No newline at end of file
diff --git a/docker/0.2.0/test.sh b/docker/0.2.0/test.sh
new file mode 100644
index 0000000..d342e35
--- /dev/null
+++ b/docker/0.2.0/test.sh
@@ -0,0 +1,34 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+
+# http://www.apache.org/licenses/LICENSE-2.0
+
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+LOOP_SIZE=60
+i=0
+
+while [[ $i -lt LOOP_SIZE ]]; do
+ status_code=$(curl --write-out %{http_code} --silent --output /dev/null http://admin:8080)
+
+ if [[ "$status_code" -eq 200 ]] ; then
+ echo "Tests passed!"
+ exit 0
+ else
+ curl -v http://admin:8080
+ echo "status is incorrect, waiting for next turn"
+ fi
+ sleep 5
+ i=$i+1
+done
+
+echo "Tests failed!"
+exit 1
\ No newline at end of file
diff --git a/docker/0.3.0/Dockerfile b/docker/0.3.0/Dockerfile
index ac31116..9ceb206 100644
--- a/docker/0.3.0/Dockerfile
+++ b/docker/0.3.0/Dockerfile
@@ -16,9 +16,10 @@
FROM maven:3-openjdk-8
RUN mkdir /source && wget https://github.com/apache/dubbo-admin/archive/0.3.0.zip && unzip -q 0.3.0.zip -d /source
WORKDIR /source/dubbo-admin-0.3.0
+COPY application.properties dubbo-admin-server/src/main/resources/application.properties
RUN mvn --batch-mode clean package -Dmaven.test.skip=true
-FROM openjdk:8-jre
+FROM openjdk:8-jdk
LABEL maintainer="dev@dubbo.apache.org"
RUN apt-get update && apt-get install -y tini
COPY --from=0 /source/dubbo-admin-0.3.0/dubbo-admin-distribution/target/dubbo-admin-0.3.0.jar /app.jar
diff --git a/docker/0.3.0/application.properties b/docker/0.3.0/application.properties
new file mode 100644
index 0000000..0dbfa07
--- /dev/null
+++ b/docker/0.3.0/application.properties
@@ -0,0 +1,87 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+server.port=38080
+dubbo.protocol.port=30880
+dubbo.application.qos-port=32222
+
+# centers in dubbo2.7, if you want to add parameters, please add them to the url
+admin.registry.address=zookeeper://172.17.0.2:2181
+admin.config-center=zookeeper://172.17.0.2:2181
+admin.metadata-report.address=zookeeper://172.17.0.2:2181
+
+# nacos config, add parameters to url like username=nacos&password=nacos
+#admin.registry.address=nacos://127.0.0.1:8848?group=DEFAULT_GROUP&namespace=public
+#admin.config-center=nacos://127.0.0.1:8848?group=dubbo
+#admin.metadata-report.address=nacos://127.0.0.1:8848?group=dubbo
+
+#group (Deprecated it is recommended to use URL to add parameters,will be removed in the future)
+#admin.registry.group=dubbo
+#admin.config-center.group=dubbo
+#admin.metadata-report.group=dubbo
+
+#namespace used by nacos. (Deprecated it is recommended to use URL to add parameters,will be removed in the future)
+#admin.registry.namespace=public
+#admin.config-center.namespace=public
+#admin.metadata-report.namespace=public
+
+admin.root.user.name=root
+admin.root.user.password=root
+
+#session timeout, default is one hour
+admin.check.sessionTimeoutMilli=3600000
+
+
+# apollo config
+# admin.config-center = apollo://localhost:8070?token=e16e5cd903fd0c97a116c873b448544b9d086de9&app.id=test&env=dev&cluster=default&namespace=dubbo
+
+# (Deprecated it is recommended to use URL to add parameters,will be removed in the future)
+#admin.apollo.token=e16e5cd903fd0c97a116c873b448544b9d086de9
+#admin.apollo.appId=test
+#admin.apollo.env=dev
+#admin.apollo.cluster=default
+#admin.apollo.namespace=dubbo
+
+#compress
+server.compression.enabled=true
+server.compression.mime-types=text/css,text/javascript,application/javascript
+server.compression.min-response-size=10240
+
+#token timeout, default is one hour
+admin.check.tokenTimeoutMilli=3600000
+#Jwt signingKey
+admin.check.signSecret=86295dd0c4ef69a1036b0b0c15158d77
+
+#dubbo config
+dubbo.application.name=dubbo-admin
+dubbo.registry.address=${admin.registry.address}
+
+# mysql
+#spring.datasource.driver-class-name=com.mysql.jdbc.Driver
+#spring.datasource.url=jdbc:mysql://localhost:3306/dubbo-admin?characterEncoding=utf8&connectTimeout=1000&socketTimeout=10000&autoReconnect=true
+#spring.datasource.username=root
+#spring.datasource.password=mysql
+
+# h2
+spring.datasource.url=jdbc:h2:mem:~/dubbo-admin;MODE=MYSQL;
+spring.datasource.username=sa
+spring.datasource.password=
+
+# id generate type
+mybatis-plus.global-config.db-config.id-type=none
+
+dubbo.application.logger=slf4j
\ No newline at end of file
diff --git a/docker/0.4.0/Dockerfile b/docker/0.4.0/Dockerfile
index 621959c..c29162d 100644
--- a/docker/0.4.0/Dockerfile
+++ b/docker/0.4.0/Dockerfile
@@ -16,9 +16,10 @@
FROM maven:3-openjdk-8
RUN mkdir /source && wget https://github.com/apache/dubbo-admin/archive/0.4.0.zip && unzip -q 0.4.0.zip -d /source
WORKDIR /source/dubbo-admin-0.4.0
+COPY application.properties dubbo-admin-server/src/main/resources/application.properties
RUN mvn --batch-mode clean package -Dmaven.test.skip=true
-FROM openjdk:8-jre
+FROM openjdk:8-jdk
LABEL maintainer="dev@dubbo.apache.org"
RUN apt-get update && apt-get install -y tini
COPY --from=0 /source/dubbo-admin-0.4.0/dubbo-admin-distribution/target/dubbo-admin-0.4.0.jar /app.jar
diff --git a/docker/0.4.0/application.properties b/docker/0.4.0/application.properties
new file mode 100644
index 0000000..0dbfa07
--- /dev/null
+++ b/docker/0.4.0/application.properties
@@ -0,0 +1,87 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+server.port=38080
+dubbo.protocol.port=30880
+dubbo.application.qos-port=32222
+
+# centers in dubbo2.7, if you want to add parameters, please add them to the url
+admin.registry.address=zookeeper://172.17.0.2:2181
+admin.config-center=zookeeper://172.17.0.2:2181
+admin.metadata-report.address=zookeeper://172.17.0.2:2181
+
+# nacos config, add parameters to url like username=nacos&password=nacos
+#admin.registry.address=nacos://127.0.0.1:8848?group=DEFAULT_GROUP&namespace=public
+#admin.config-center=nacos://127.0.0.1:8848?group=dubbo
+#admin.metadata-report.address=nacos://127.0.0.1:8848?group=dubbo
+
+#group (Deprecated it is recommended to use URL to add parameters,will be removed in the future)
+#admin.registry.group=dubbo
+#admin.config-center.group=dubbo
+#admin.metadata-report.group=dubbo
+
+#namespace used by nacos. (Deprecated it is recommended to use URL to add parameters,will be removed in the future)
+#admin.registry.namespace=public
+#admin.config-center.namespace=public
+#admin.metadata-report.namespace=public
+
+admin.root.user.name=root
+admin.root.user.password=root
+
+#session timeout, default is one hour
+admin.check.sessionTimeoutMilli=3600000
+
+
+# apollo config
+# admin.config-center = apollo://localhost:8070?token=e16e5cd903fd0c97a116c873b448544b9d086de9&app.id=test&env=dev&cluster=default&namespace=dubbo
+
+# (Deprecated it is recommended to use URL to add parameters,will be removed in the future)
+#admin.apollo.token=e16e5cd903fd0c97a116c873b448544b9d086de9
+#admin.apollo.appId=test
+#admin.apollo.env=dev
+#admin.apollo.cluster=default
+#admin.apollo.namespace=dubbo
+
+#compress
+server.compression.enabled=true
+server.compression.mime-types=text/css,text/javascript,application/javascript
+server.compression.min-response-size=10240
+
+#token timeout, default is one hour
+admin.check.tokenTimeoutMilli=3600000
+#Jwt signingKey
+admin.check.signSecret=86295dd0c4ef69a1036b0b0c15158d77
+
+#dubbo config
+dubbo.application.name=dubbo-admin
+dubbo.registry.address=${admin.registry.address}
+
+# mysql
+#spring.datasource.driver-class-name=com.mysql.jdbc.Driver
+#spring.datasource.url=jdbc:mysql://localhost:3306/dubbo-admin?characterEncoding=utf8&connectTimeout=1000&socketTimeout=10000&autoReconnect=true
+#spring.datasource.username=root
+#spring.datasource.password=mysql
+
+# h2
+spring.datasource.url=jdbc:h2:mem:~/dubbo-admin;MODE=MYSQL;
+spring.datasource.username=sa
+spring.datasource.password=
+
+# id generate type
+mybatis-plus.global-config.db-config.id-type=none
+
+dubbo.application.logger=slf4j
\ No newline at end of file
diff --git a/docker/0.5.0/Dockerfile b/docker/0.5.0/Dockerfile
index 0cf7bcd..ce192e9 100644
--- a/docker/0.5.0/Dockerfile
+++ b/docker/0.5.0/Dockerfile
@@ -16,9 +16,10 @@
FROM maven:3-openjdk-8
RUN mkdir /source && wget https://github.com/apache/dubbo-admin/archive/0.5.0.zip && unzip -q 0.5.0.zip -d /source
WORKDIR /source/dubbo-admin-0.5.0
+COPY application.properties dubbo-admin-server/src/main/resources/application.properties
RUN mvn --batch-mode clean package -Dmaven.test.skip=true
-FROM openjdk:8-jre
+FROM openjdk:8-jdk
LABEL maintainer="dev@dubbo.apache.org"
RUN apt-get update && apt-get install -y tini
COPY --from=0 /source/dubbo-admin-0.5.0/dubbo-admin-distribution/target/dubbo-admin-0.5.0.jar /app.jar
diff --git a/docker/0.5.0/application.properties b/docker/0.5.0/application.properties
new file mode 100644
index 0000000..0dbfa07
--- /dev/null
+++ b/docker/0.5.0/application.properties
@@ -0,0 +1,87 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+server.port=38080
+dubbo.protocol.port=30880
+dubbo.application.qos-port=32222
+
+# centers in dubbo2.7, if you want to add parameters, please add them to the url
+admin.registry.address=zookeeper://172.17.0.2:2181
+admin.config-center=zookeeper://172.17.0.2:2181
+admin.metadata-report.address=zookeeper://172.17.0.2:2181
+
+# nacos config, add parameters to url like username=nacos&password=nacos
+#admin.registry.address=nacos://127.0.0.1:8848?group=DEFAULT_GROUP&namespace=public
+#admin.config-center=nacos://127.0.0.1:8848?group=dubbo
+#admin.metadata-report.address=nacos://127.0.0.1:8848?group=dubbo
+
+#group (Deprecated it is recommended to use URL to add parameters,will be removed in the future)
+#admin.registry.group=dubbo
+#admin.config-center.group=dubbo
+#admin.metadata-report.group=dubbo
+
+#namespace used by nacos. (Deprecated it is recommended to use URL to add parameters,will be removed in the future)
+#admin.registry.namespace=public
+#admin.config-center.namespace=public
+#admin.metadata-report.namespace=public
+
+admin.root.user.name=root
+admin.root.user.password=root
+
+#session timeout, default is one hour
+admin.check.sessionTimeoutMilli=3600000
+
+
+# apollo config
+# admin.config-center = apollo://localhost:8070?token=e16e5cd903fd0c97a116c873b448544b9d086de9&app.id=test&env=dev&cluster=default&namespace=dubbo
+
+# (Deprecated it is recommended to use URL to add parameters,will be removed in the future)
+#admin.apollo.token=e16e5cd903fd0c97a116c873b448544b9d086de9
+#admin.apollo.appId=test
+#admin.apollo.env=dev
+#admin.apollo.cluster=default
+#admin.apollo.namespace=dubbo
+
+#compress
+server.compression.enabled=true
+server.compression.mime-types=text/css,text/javascript,application/javascript
+server.compression.min-response-size=10240
+
+#token timeout, default is one hour
+admin.check.tokenTimeoutMilli=3600000
+#Jwt signingKey
+admin.check.signSecret=86295dd0c4ef69a1036b0b0c15158d77
+
+#dubbo config
+dubbo.application.name=dubbo-admin
+dubbo.registry.address=${admin.registry.address}
+
+# mysql
+#spring.datasource.driver-class-name=com.mysql.jdbc.Driver
+#spring.datasource.url=jdbc:mysql://localhost:3306/dubbo-admin?characterEncoding=utf8&connectTimeout=1000&socketTimeout=10000&autoReconnect=true
+#spring.datasource.username=root
+#spring.datasource.password=mysql
+
+# h2
+spring.datasource.url=jdbc:h2:mem:~/dubbo-admin;MODE=MYSQL;
+spring.datasource.username=sa
+spring.datasource.password=
+
+# id generate type
+mybatis-plus.global-config.db-config.id-type=none
+
+dubbo.application.logger=slf4j
\ No newline at end of file
diff --git a/docker/latest/Dockerfile b/docker/latest/Dockerfile
deleted file mode 100644
index d9f8696..0000000
--- a/docker/latest/Dockerfile
+++ /dev/null
@@ -1,31 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-FROM maven:3-openjdk-8
-RUN mkdir -p /source/dubbo-admin-snapshot
-ADD . /source/dubbo-admin-snapshot
-WORKDIR /source/dubbo-admin-snapshot
-RUN mvn --batch-mode -Prelease clean package -Dmaven.test.skip=true
-
-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.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"
-
-ENTRYPOINT ["tini", "--", "/usr/local/bin/entrypoint.sh"]
-EXPOSE 8080