You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@apisix.apache.org by ju...@apache.org on 2020/10/29 10:08:23 UTC
[apisix-dashboard] 01/01: feat: refactor api & frontend
This is an automated email from the ASF dual-hosted git repository.
juzhiyuan pushed a commit to branch feat-adjust-folder
in repository https://gitbox.apache.org/repos/asf/apisix-dashboard.git
commit 24587f9aab90fe401e582b473eae4a6a781001a8
Author: juzhiyuan <ju...@apache.org>
AuthorDate: Thu Oct 29 18:08:08 2020 +0800
feat: refactor api & frontend
---
.asf.yaml | 1 -
.dockerignore | 1 -
.github/workflows/deploy-api.yml | 60 --
.github/workflows/deploy-frontend.yml | 22 -
.gitignore | 5 +-
Dockerfile | 37 -
README.md | 1 -
README.zh-CN.md | 1 -
api/build.sh | 11 +-
api/conf/conf.go | 2 +-
api/conf/conf.json | 31 -
api/run.sh | 2 +-
compose/README.md | 35 -
compose/apisix_conf/config.yaml | 38 -
compose/dashboard_conf/nginx.conf | 39 -
compose/docker-compose.yml | 134 ---
compose/grafana_conf/config/grafana.ini | 756 -----------------
.../dashboards/apisix_http_prometheus.json | 933 ---------------------
.../grafana_conf/provisioning/dashboards/all.yaml | 27 -
.../grafana_conf/provisioning/datasources/all.yaml | 25 -
compose/manager_conf/entry.sh | 38 -
compose/prometheus_conf/prometheus.yml | 39 -
docker/nginx.conf | 38 -
docs/deploy.md | 6 +-
docs/deploy.zh-CN.md | 6 +-
.editorconfig => frontend/.editorconfig | 0
.eslintignore => frontend/.eslintignore | 0
.eslintrc.js => frontend/.eslintrc.js | 0
.prettierignore => frontend/.prettierignore | 0
.prettierrc.js => frontend/.prettierrc.js | 0
.stylelintrc.js => frontend/.stylelintrc.js | 0
{config => frontend/config}/config.ts | 1 +
{config => frontend/config}/defaultSettings.ts | 0
{config => frontend/config}/proxy.ts | 0
{config => frontend/config}/routes.ts | 0
jest.config.js => frontend/jest.config.js | 0
jsconfig.json => frontend/jsconfig.json | 0
{mock => frontend/mock}/notices.ts | 0
{mock => frontend/mock}/route.ts | 0
{mock => frontend/mock}/user.ts | 0
package.json => frontend/package.json | 0
{public => frontend/public}/empty.svg | 0
{public => frontend/public}/favicon.png | Bin
{scripts => frontend/scripts}/verifyCommit.js | 0
{src => frontend/src}/access.ts | 0
{src => frontend/src}/app.tsx | 0
{src => frontend/src}/assets/logo.svg | 0
.../src}/components/ActionBar/ActionBar.tsx | 0
.../src}/components/ActionBar/index.ts | 0
.../src}/components/ActionBar/locales/en-US.ts | 0
.../src}/components/ActionBar/locales/zh-CN.ts | 0
{src => frontend/src}/components/Footer/index.tsx | 0
.../src}/components/HeaderDropdown/index.less | 0
.../src}/components/HeaderDropdown/index.tsx | 0
.../src}/components/NoticeIcon/NoticeList.less | 0
.../src}/components/NoticeIcon/NoticeList.tsx | 0
.../src}/components/NoticeIcon/index.less | 0
.../src}/components/NoticeIcon/index.tsx | 0
.../src}/components/PageLoading/index.tsx | 0
.../components/RightContent/AvatarDropdown.tsx | 0
.../src}/components/RightContent/index.less | 0
.../src}/components/RightContent/index.tsx | 0
.../src}/components/Upstream/UpstreamForm.tsx | 0
.../src}/components/Upstream/constant.ts | 0
{src => frontend/src}/components/Upstream/index.ts | 0
{src => frontend/src}/constants.ts | 0
.../src}/e2e/__mocks__/antd-pro-merge-less.js | 0
{src => frontend/src}/e2e/baseLayout.e2e.js | 0
{src => frontend/src}/global.less | 0
{src => frontend/src}/global.tsx | 0
{src => frontend/src}/helpers.tsx | 0
{src => frontend/src}/iconfont.ts | 0
{src => frontend/src}/locales/en-US.ts | 0
{src => frontend/src}/locales/en-US/component.ts | 0
.../src}/locales/en-US/globalHeader.ts | 0
{src => frontend/src}/locales/en-US/menu.ts | 0
{src => frontend/src}/locales/en-US/pwa.ts | 0
.../src/locales/en-US}/setting.ts | 0
.../src}/locales/en-US/settingDrawer.ts | 0
{src => frontend/src}/locales/zh-CN.ts | 0
{src => frontend/src}/locales/zh-CN/component.ts | 0
.../src}/locales/zh-CN/globalHeader.ts | 0
{src => frontend/src}/locales/zh-CN/menu.ts | 0
{src => frontend/src}/locales/zh-CN/pwa.ts | 0
.../src/locales/zh-CN}/setting.ts | 0
.../src}/locales/zh-CN/settingDrawer.ts | 0
{src => frontend/src}/manifest.json | 0
{src => frontend/src}/pages/404.tsx | 0
{src => frontend/src}/pages/Consumer/Create.tsx | 0
{src => frontend/src}/pages/Consumer/List.tsx | 0
.../src}/pages/Consumer/components/Preview.tsx | 0
.../src}/pages/Consumer/components/Step1.tsx | 0
.../Route => frontend/src/pages/Consumer}/index.ts | 0
.../src}/pages/Consumer/locales/en-US.ts | 0
.../src}/pages/Consumer/locales/zh-CN.ts | 0
{src => frontend/src}/pages/Consumer/service.ts | 0
{src => frontend/src}/pages/Consumer/typing.d.ts | 0
{src => frontend/src}/pages/Metrics/Metrics.tsx | 0
{src => frontend/src}/pages/Metrics/index.ts | 0
.../src}/pages/Metrics/locales/en-US.ts | 0
.../src}/pages/Metrics/locales/zh-CN.ts | 0
{src => frontend/src}/pages/Metrics/service.ts | 0
{src => frontend/src}/pages/Route/Create.less | 0
{src => frontend/src}/pages/Route/Create.tsx | 0
{src => frontend/src}/pages/Route/List.tsx | 0
.../Route/components/CreateStep4/CreateStep4.tsx | 0
.../pages/Route/components/CreateStep4/index.ts | 0
.../Route/components/ResultView/ResultView.tsx | 0
.../pages/Route/components/ResultView/index.ts | 0
.../Route/components/Step1/MatchingRulesView.tsx | 0
.../src}/pages/Route/components/Step1/MetaView.tsx | 0
.../Route/components/Step1/RequestConfigView.tsx | 0
.../src}/pages/Route/components/Step1/index.tsx | 0
.../Route/components/Step2/RequestRewriteView.tsx | 0
.../src}/pages/Route/components/Step2/index.tsx | 0
.../src}/pages/Route/components/Step3/index.tsx | 0
{src => frontend/src}/pages/Route/constants.ts | 0
.../Consumer => frontend/src/pages/Route}/index.ts | 0
{src => frontend/src}/pages/Route/locales/en-US.ts | 0
{src => frontend/src}/pages/Route/locales/zh-CN.ts | 0
{src => frontend/src}/pages/Route/service.ts | 0
{src => frontend/src}/pages/Route/transform.ts | 0
{src => frontend/src}/pages/Route/typing.d.ts | 0
{src => frontend/src}/pages/SSL/Create.less | 0
{src => frontend/src}/pages/SSL/Create.tsx | 0
{src => frontend/src}/pages/SSL/List.tsx | 0
.../pages/SSL/components/CertificateForm/index.tsx | 0
.../SSL/components/CertificateUploader/index.tsx | 0
.../src}/pages/SSL/components/Step1/index.tsx | 0
.../src}/pages/SSL/components/Step2/index.tsx | 0
{src => frontend/src}/pages/SSL/locales/en-US.ts | 0
{src => frontend/src}/pages/SSL/locales/zh-CN.ts | 0
{src => frontend/src}/pages/SSL/service.ts | 0
{src => frontend/src}/pages/SSL/style.less | 0
{src => frontend/src}/pages/SSL/typing.d.ts | 0
{src => frontend/src}/pages/Setting/Setting.tsx | 0
{src => frontend/src}/pages/Setting/index.ts | 0
.../src}/pages/Setting/locales/en-US.ts | 0
.../src}/pages/Setting/locales/zh-CN.ts | 0
{src => frontend/src}/pages/Setting/service.ts | 0
{src => frontend/src}/pages/Setting/style.less | 0
{src => frontend/src}/pages/Setting/typingd.d.ts | 0
{src => frontend/src}/pages/Upstream/Create.tsx | 0
{src => frontend/src}/pages/Upstream/List.tsx | 0
.../src}/pages/Upstream/components/Step1.tsx | 0
{src => frontend/src}/pages/Upstream/constants.ts | 0
{src => frontend/src}/pages/Upstream/index.ts | 0
.../src}/pages/Upstream/locales/en-US.ts | 0
.../src}/pages/Upstream/locales/zh-CN.ts | 0
{src => frontend/src}/pages/Upstream/service.ts | 0
{src => frontend/src}/pages/Upstream/transform.ts | 0
{src => frontend/src}/pages/Upstream/typing.d.ts | 0
{src => frontend/src}/pages/User/Login.less | 0
{src => frontend/src}/pages/User/Login.tsx | 0
{src => frontend/src}/pages/User/Logout.tsx | 0
.../pages/User/components/LoginMethodExample.tsx | 0
.../pages/User/components/LoginMethodPassword.tsx | 0
{src => frontend/src}/pages/User/index.ts | 0
{src => frontend/src}/pages/User/locales/en-US.ts | 0
{src => frontend/src}/pages/User/locales/zh-CN.ts | 0
{src => frontend/src}/pages/User/typing.d.ts | 0
{src => frontend/src}/pages/document.ejs | 0
{src => frontend/src}/service-worker.js | 0
{src => frontend/src}/services/API.d.ts | 0
{src => frontend/src}/services/user.ts | 0
{src => frontend/src}/typings.d.ts | 0
{tests => frontend/tests}/PuppeteerEnvironment.js | 0
{tests => frontend/tests}/beforeTest.js | 0
{tests => frontend/tests}/getBrowser.js | 0
{tests => frontend/tests}/run-tests.js | 0
tsconfig.json => frontend/tsconfig.json | 0
yarn.lock => frontend/yarn.lock | 0
172 files changed, 25 insertions(+), 2264 deletions(-)
diff --git a/.asf.yaml b/.asf.yaml
index b2617d9..59b805a 100644
--- a/.asf.yaml
+++ b/.asf.yaml
@@ -24,7 +24,6 @@ github:
- api-management
- apisix
- devops
- - docker
enabled_merge_buttons:
squash: true
diff --git a/.dockerignore b/.dockerignore
deleted file mode 100644
index 3c3629e..0000000
--- a/.dockerignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules
diff --git a/.github/workflows/deploy-api.yml b/.github/workflows/deploy-api.yml
deleted file mode 100644
index 823e81e..0000000
--- a/.github/workflows/deploy-api.yml
+++ /dev/null
@@ -1,60 +0,0 @@
-name: Deploy API to Azure
-
-on:
- push:
- branches:
- - master
-
-jobs:
- build:
- runs-on: ubuntu-latest
-
- services:
- etcd:
- image: bitnami/etcd:3.3.13-r80
- ports:
- - 2379:2379
- - 2380:2380
- env:
- ALLOW_NONE_AUTHENTICATION: yes
-
- steps:
- - uses: actions/checkout@v2
-
- - name: license check
- run: |
- make license-check
-
- - name: get lua lib
- run: |
- wget https://github.com/api7/dag-to-lua/archive/v1.1.tar.gz
- sudo mkdir -p /go/manager-api/dag-to-lua/
- tar -zxvf v1.1.tar.gz
- sudo mv ./dag-to-lua-1.1/lib/* /go/manager-api/dag-to-lua/
-
- - name: install runtime
- run: |
- sudo apt-get update
- sudo apt-get install lua5.1
- sudo add-apt-repository ppa:longsleep/golang-backports
- sudo apt update
- export GO111MOUDULE=on
- sudo apt install golang-1.14-go
-
- - name: run test
- working-directory: ./api
- run: |
- export APIX_ETCD_ENDPOINTS=127.0.0.1:2379
- go test ./...
-
- - uses: Azure/docker-login@v1
- with:
- login-server: apisixacr.azurecr.cn
- username: ${{ secrets.REGISTRY_USERNAME }}
- password: ${{ secrets.REGISTRY_PASSWORD }}
-
- - name: build and push docker image
- working-directory: ./api
- run: |
- docker build . -t apisixacr.azurecr.cn/managerapi:${{ github.sha }}
- docker push apisixacr.azurecr.cn/managerapi:${{ github.sha }}
diff --git a/.github/workflows/deploy-frontend.yml b/.github/workflows/deploy-frontend.yml
deleted file mode 100644
index 9998d50..0000000
--- a/.github/workflows/deploy-frontend.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-name: Deploy frontend to Azure
-
-on:
- push:
- branches: [master]
-
-jobs:
- build:
- runs-on: ubuntu-latest
-
- steps:
- - uses: actions/checkout@v2
-
- - uses: Azure/docker-login@v1
- with:
- login-server: apisixacr.azurecr.cn
- username: ${{ secrets.REGISTRY_USERNAME }}
- password: ${{ secrets.REGISTRY_PASSWORD }}
-
- - run: |
- docker build . -t apisixacr.azurecr.cn/dashboard:${{ github.sha }}
- docker push apisixacr.azurecr.cn/dashboard:${{ github.sha }}
diff --git a/.gitignore b/.gitignore
index 571eb5b..0aedbea 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,7 +7,7 @@
_roadhog-api-doc
# production
-/dist
+dist
/.vscode
# misc
@@ -44,3 +44,6 @@ build
manager-api
conf.json
conf.json-e
+
+output
+default.etcd
diff --git a/Dockerfile b/Dockerfile
deleted file mode 100644
index 90d4fde..0000000
--- a/Dockerfile
+++ /dev/null
@@ -1,37 +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.
-#
-
-# phase-build
-FROM node:12 as builder
-
-WORKDIR /usr/src/app/
-USER root
-
-COPY package.json ./
-COPY yarn.lock ./
-RUN yarn
-
-COPY ./ ./
-RUN yarn build && rm -rf /usr/src/app/node_modules
-
-# phase-run
-FROM nginx:1.16-alpine
-
-COPY ./docker/nginx.conf /etc/nginx/conf.d/default.conf
-COPY --from=builder /usr/src/app/dist /usr/share/nginx/html
-
-EXPOSE 80
diff --git a/README.md b/README.md
index 783f49e..157fc5e 100644
--- a/README.md
+++ b/README.md
@@ -32,7 +32,6 @@ Please refer to [User Guide](./docs/USER_GUIDE.md)
## Deployment
- [Deploy Manually](./docs/deploy.md)
-- [Deploy with Docker](./compose/README.md)
## Development
diff --git a/README.zh-CN.md b/README.zh-CN.md
index e60a1b9..07099e3 100644
--- a/README.zh-CN.md
+++ b/README.zh-CN.md
@@ -32,7 +32,6 @@
当前支持如下方式部署:
- [手动部署](./docs/deploy.zh-CN.md)
-- [使用 Docker 部署](./compose/README.md)
## 开发
diff --git a/api/build.sh b/api/build.sh
index 17867a5..4c4131a 100755
--- a/api/build.sh
+++ b/api/build.sh
@@ -19,13 +19,18 @@
export ENV=local
pwd=`pwd`
+mkdir -p output
+
# get dag-to-lua lib
if [[ ! -f "dag-to-lua-1.1/lib/dag-to-lua.lua" ]]; then
- wget https://github.com/api7/dag-to-lua/archive/v1.1.tar.gz
+ wget https://github.com/api7/dag-to-lua/archive/v1.1.tar.gz -P ./output
+ cd ./output
tar -zxvf v1.1.tar.gz
+ rm v1.1.tar.gz
+ cd ..
fi
# build
-cd ./api && go build -o ../manager-api .
+cd ./api && go build -o ../output/manager-api .
-echo "done."
+echo "Build the Manager API successfully"
diff --git a/api/conf/conf.go b/api/conf/conf.go
index 11ff773..2644424 100644
--- a/api/conf/conf.go
+++ b/api/conf/conf.go
@@ -29,7 +29,7 @@ import (
)
const (
- WebDir = "./dist"
+ WebDir = "./output/html"
EnvPROD = "prod"
EnvBETA = "beta"
diff --git a/api/conf/conf.json b/api/conf/conf.json
deleted file mode 100644
index c369afe..0000000
--- a/api/conf/conf.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "conf": {
- "syslog": {
- "host": "127.0.0.1"
- },
- "listen": {
- "host": "127.0.0.1",
- "port": 8080
- },
- "dag-lib-path": "",
- "etcd": {
- "endpoints": "127.0.0.1:2379"
- }
- },
- "authentication": {
- "session": {
- "secret": "secret",
- "expireTime": 3600
- },
- "user": [
- {
- "username": "admin",
- "password": "admin"
- },
- {
- "username": "user",
- "password": "user"
- }
- ]
- }
-}
diff --git a/api/run.sh b/api/run.sh
index 40fd4a7..fe76b90 100755
--- a/api/run.sh
+++ b/api/run.sh
@@ -20,4 +20,4 @@ export ENV=local
pwd=`pwd`
-exec ./manager-api
+exec ./output/manager-api
diff --git a/compose/README.md b/compose/README.md
deleted file mode 100644
index 98bce58..0000000
--- a/compose/README.md
+++ /dev/null
@@ -1,35 +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.
-#
--->
-
-# docker-compose
-
-This folder stores the `docker-compose` file for `manager-api`.
-
-## Deploy
-
-1. Run docker-compose
-
-```sh
-$ cd apisix-dashboard/compose
-
-# For most users in China, please use some proxy services like https://www.daocloud.io/mirror to speed up your Docker images pulling.
-$ docker-compose -p dashboard up -d
-```
-
-2. Visit `http://127.0.0.1/` in the browser.
diff --git a/compose/apisix_conf/config.yaml b/compose/apisix_conf/config.yaml
deleted file mode 100644
index 4fd7ff2..0000000
--- a/compose/apisix_conf/config.yaml
+++ /dev/null
@@ -1,38 +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.
-#
-# PLEASE DO NOT UPDATE THIS FILE!
-# If you want to set the specified configuration value, you can set the new
-# value in the conf/config.yaml file.
-#
-apisix:
- allow_admin:
- - 0.0.0.0/0
- admin_key:
- - name: 'admin'
- key: edd1c9f034335f136f87ad84b625c8f1
- role:
- admin # admin: manage all configuration data
- # viewer: only can view configuration data
- - name: 'viewer'
- key: 4054f7cf07e344346cd3f287985e76a1
- role: viewer
-
-etcd:
- host: # it's possible to define multiple etcd hosts addresses of the same etcd cluster.
- - 'http://192.17.5.10:2379' # multiple etcd address
- prefix: '/apisix' # apisix configurations prefix
- timeout: 30 # 30 seconds
diff --git a/compose/dashboard_conf/nginx.conf b/compose/dashboard_conf/nginx.conf
deleted file mode 100644
index dcdfde8..0000000
--- a/compose/dashboard_conf/nginx.conf
+++ /dev/null
@@ -1,39 +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.
-#
-
-server {
- listen 80;
- # gzip config
- gzip on;
- gzip_min_length 1k;
- gzip_comp_level 9;
- gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
- gzip_vary on;
- gzip_disable "MSIE [1-6]\.";
-
- root /usr/share/nginx/html;
- include /etc/nginx/mime.types;
-
- location / {
- try_files $uri $uri/ /index.html;
- }
-
- location /apisix/admin {
- proxy_pass http://manager:8080/apisix/admin;
- }
-}
-
diff --git a/compose/docker-compose.yml b/compose/docker-compose.yml
deleted file mode 100644
index 4e1e601..0000000
--- a/compose/docker-compose.yml
+++ /dev/null
@@ -1,134 +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.
-#
-version: '3'
-
-services:
- apisix:
- image: apache/apisix:dev
- restart: always
- volumes:
- - ./apisix_log:/usr/local/apisix/logs
- - ./apisix_conf/config.yaml:/usr/local/apisix/conf/config.yaml:ro
- depends_on:
- - etcd
- ##network_mode: host
- ports:
- - '9080:9080/tcp'
- - '9443:9443/tcp'
- networks:
- apisix-dashboard:
- ipv4_address: 192.17.5.11
-
- etcd:
- image: bitnami/etcd:3.4.9
- user: root
- restart: always
- volumes:
- - ./etcd_data:/etcd_data
- environment:
- ETCD_DATA_DIR: /etcd_data
- ETCD_ENABLE_V2: 'true'
- ALLOW_NONE_AUTHENTICATION: 'yes'
- ETCD_ADVERTISE_CLIENT_URLS: 'http://0.0.0.0:2379'
- ETCD_LISTEN_CLIENT_URLS: 'http://0.0.0.0:2379'
- ports:
- - '2379:2379/tcp'
- networks:
- apisix-dashboard:
- ipv4_address: 192.17.5.10
-
- web1:
- image: ruby:2-alpine
- command: sh -c "mkdir -p /tmp/www && echo 'web1' > /tmp/www/web1.txt && ruby -run -ehttpd /tmp/www -p8000"
- restart: always
- ports:
- - '9081:8000/tcp'
- networks:
- apisix-dashboard:
- ipv4_address: 192.17.5.12
-
- web2:
- image: ruby:2-alpine
- command: sh -c "mkdir -p /tmp/www && echo 'web2' > /tmp/www/web2.txt && ruby -run -ehttpd /tmp/www -p8000"
- restart: always
- ports:
- - '9082:8000/tcp'
- networks:
- apisix-dashboard:
- ipv4_address: 192.17.5.13
-
- manager:
- build:
- context: ./../api
- dockerfile: Dockerfile
- restart: always
- ports:
- - '8080:8080/tcp'
- environment:
- - ENV=prod
- volumes:
- - ./manager_conf/entry.sh:/go/manager-api/entry.sh
- networks:
- apisix-dashboard:
- ipv4_address: 192.17.5.15
-
- prometheus:
- image: prom/prometheus
- hostname: prometheus
- restart: always
- volumes:
- - ./prometheus_conf/prometheus.yml:/etc/prometheus/prometheus.yml
- ports:
- - '9090:9090'
- networks:
- apisix-dashboard:
- ipv4_address: 192.17.5.16
-
- grafana:
- image: grafana/grafana
- container_name: grafana
- hostname: grafana
- restart: always
- ports:
- - '3000:3000'
- volumes:
- - './grafana_conf/provisioning:/etc/grafana/provisioning'
- - './grafana_conf/dashboards:/var/lib/grafana/dashboards'
- - './grafana_conf/config/grafana.ini:/etc/grafana/grafana.ini'
- networks:
- apisix-dashboard:
- ipv4_address: 192.17.5.17
-
- dashboard:
- build:
- context: ./..
- dockerfile: Dockerfile
- restart: always
- ports:
- - '80:80/tcp'
- volumes:
- - './dashboard_conf/nginx.conf:/etc/nginx/conf.d/default.conf'
- networks:
- apisix-dashboard:
- ipv4_address: 192.17.5.18
-
-networks:
- apisix-dashboard:
- driver: bridge
- ipam:
- config:
- - subnet: 192.17.0.0/16
diff --git a/compose/grafana_conf/config/grafana.ini b/compose/grafana_conf/config/grafana.ini
deleted file mode 100644
index cb6a737..0000000
--- a/compose/grafana_conf/config/grafana.ini
+++ /dev/null
@@ -1,756 +0,0 @@
-##################### Grafana Configuration Example #####################
-#
-# Everything has defaults so you only need to uncomment things you want to
-# change
-
-# possible values : production, development
-;app_mode = production
-
-# instance name, defaults to HOSTNAME environment variable value or hostname if HOSTNAME var is empty
-;instance_name = ${HOSTNAME}
-
-#################################### Paths ####################################
-[paths]
-# Path to where grafana can store temp files, sessions, and the sqlite3 db (if that is used)
-;data = /var/lib/grafana
-
-# Temporary files in `data` directory older than given duration will be removed
-;temp_data_lifetime = 24h
-
-# Directory where grafana can store logs
-;logs = /var/log/grafana
-
-# Directory where grafana will automatically scan and look for plugins
-;plugins = /var/lib/grafana/plugins
-
-# folder that contains provisioning config files that grafana will apply on startup and while running.
-;provisioning = conf/provisioning
-
-#################################### Server ####################################
-[server]
-# Protocol (http, https, h2, socket)
-;protocol = http
-
-# The ip address to bind to, empty will bind to all interfaces
-;http_addr =
-
-# The http port to use
-;http_port = 3000
-
-# The public facing domain name used to access grafana from a browser
-;domain = localhost
-
-# Redirect to correct domain if host header does not match domain
-# Prevents DNS rebinding attacks
-;enforce_domain = false
-
-# The full public facing url you use in browser, used for redirects and emails
-# If you use reverse proxy and sub path specify full url (with sub path)
-;root_url = %(protocol)s://%(domain)s:%(http_port)s/
-
-# Serve Grafana from subpath specified in `root_url` setting. By default it is set to `false` for compatibility reasons.
-;serve_from_sub_path = false
-
-# Log web requests
-;router_logging = false
-
-# the path relative working path
-;static_root_path = public
-
-# enable gzip
-;enable_gzip = false
-
-# https certs & key file
-;cert_file =
-;cert_key =
-
-# Unix socket path
-;socket =
-
-#################################### Database ####################################
-[database]
-# You can configure the database connection by specifying type, host, name, user and password
-# as separate properties or as on string using the url properties.
-
-# Either "mysql", "postgres" or "sqlite3", it's your choice
-;type = sqlite3
-;host = 127.0.0.1:3306
-;name = grafana
-;user = root
-# If the password contains # or ; you have to wrap it with triple quotes. Ex """#password;"""
-;password =
-
-# Use either URL or the previous fields to configure the database
-# Example: mysql://user:secret@host:port/database
-;url =
-
-# For "postgres" only, either "disable", "require" or "verify-full"
-;ssl_mode = disable
-
-;ca_cert_path =
-;client_key_path =
-;client_cert_path =
-;server_cert_name =
-
-# For "sqlite3" only, path relative to data_path setting
-;path = grafana.db
-
-# Max idle conn setting default is 2
-;max_idle_conn = 2
-
-# Max conn setting default is 0 (mean not set)
-;max_open_conn =
-
-# Connection Max Lifetime default is 14400 (means 14400 seconds or 4 hours)
-;conn_max_lifetime = 14400
-
-# Set to true to log the sql calls and execution times.
-;log_queries =
-
-# For "sqlite3" only. cache mode setting used for connecting to the database. (private, shared)
-;cache_mode = private
-
-#################################### Cache server #############################
-[remote_cache]
-# Either "redis", "memcached" or "database" default is "database"
-;type = database
-
-# cache connectionstring options
-# database: will use Grafana primary database.
-# redis: config like redis server e.g. `addr=127.0.0.1:6379,pool_size=100,db=0,ssl=false`. Only addr is required. ssl may be 'true', 'false', or 'insecure'.
-# memcache: 127.0.0.1:11211
-;connstr =
-
-#################################### Data proxy ###########################
-[dataproxy]
-
-# This enables data proxy logging, default is false
-;logging = false
-
-# How long the data proxy should wait before timing out default is 30 (seconds)
-;timeout = 30
-
-# If enabled and user is not anonymous, data proxy will add X-Grafana-User header with username into the request, default is false.
-;send_user_header = false
-
-#################################### Analytics ####################################
-[analytics]
-# Server reporting, sends usage counters to stats.grafana.org every 24 hours.
-# No ip addresses are being tracked, only simple counters to track
-# running instances, dashboard and error counts. It is very helpful to us.
-# Change this option to false to disable reporting.
-;reporting_enabled = true
-
-# Set to false to disable all checks to https://grafana.net
-# for new vesions (grafana itself and plugins), check is used
-# in some UI views to notify that grafana or plugin update exists
-# This option does not cause any auto updates, nor send any information
-# only a GET request to http://grafana.com to get latest versions
-;check_for_updates = true
-
-# Google Analytics universal tracking code, only enabled if you specify an id here
-;google_analytics_ua_id =
-
-# Google Tag Manager ID, only enabled if you specify an id here
-;google_tag_manager_id =
-
-#################################### Security ####################################
-[security]
-# disable creation of admin user on first start of grafana
-;disable_initial_admin_creation = false
-
-# default admin user, created on startup
-;admin_user = admin
-
-# default admin password, can be changed before first start of grafana, or in profile settings
-;admin_password = admin
-
-# used for signing
-;secret_key = SW2YcwTIb9zpOOhoPsMm
-
-# disable gravatar profile images
-;disable_gravatar = false
-
-# data source proxy whitelist (ip_or_domain:port separated by spaces)
-;data_source_proxy_whitelist =
-
-# disable protection against brute force login attempts
-;disable_brute_force_login_protection = false
-
-# set to true if you host Grafana behind HTTPS. default is false.
-;cookie_secure = false
-
-# set cookie SameSite attribute. defaults to `lax`. can be set to "lax", "strict", "none" and "disabled"
-;cookie_samesite = none
-
-# set to true if you want to allow browsers to render Grafana in a <frame>, <iframe>, <embed> or <object>. default is false.
-allow_embedding = true
-
-# Set to true if you want to enable http strict transport security (HSTS) response header.
-# This is only sent when HTTPS is enabled in this configuration.
-# HSTS tells browsers that the site should only be accessed using HTTPS.
-# The default version will change to true in the next minor release, 6.3.
-;strict_transport_security = false
-
-# Sets how long a browser should cache HSTS. Only applied if strict_transport_security is enabled.
-;strict_transport_security_max_age_seconds = 86400
-
-# Set to true if to enable HSTS preloading option. Only applied if strict_transport_security is enabled.
-;strict_transport_security_preload = false
-
-# Set to true if to enable the HSTS includeSubDomains option. Only applied if strict_transport_security is enabled.
-;strict_transport_security_subdomains = false
-
-# Set to true to enable the X-Content-Type-Options response header.
-# The X-Content-Type-Options response HTTP header is a marker used by the server to indicate that the MIME types advertised
-# in the Content-Type headers should not be changed and be followed. The default will change to true in the next minor release, 6.3.
-;x_content_type_options = false
-
-# Set to true to enable the X-XSS-Protection header, which tells browsers to stop pages from loading
-# when they detect reflected cross-site scripting (XSS) attacks. The default will change to true in the next minor release, 6.3.
-;x_xss_protection = false
-
-#################################### Snapshots ###########################
-[snapshots]
-# snapshot sharing options
-;external_enabled = true
-;external_snapshot_url = https://snapshots-origin.raintank.io
-;external_snapshot_name = Publish to snapshot.raintank.io
-
-# Set to true to enable this Grafana instance act as an external snapshot server and allow unauthenticated requests for
-# creating and deleting snapshots.
-;public_mode = false
-
-# remove expired snapshot
-;snapshot_remove_expired = true
-
-#################################### Dashboards History ##################
-[dashboards]
-# Number dashboard versions to keep (per dashboard). Default: 20, Minimum: 1
-;versions_to_keep = 20
-
-# Minimum dashboard refresh interval. When set, this will restrict users to set the refresh interval of a dashboard lower than given interval. Per default this is 5 seconds.
-# The interval string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m.
-;min_refresh_interval = 5s
-
-#################################### Users ###############################
-[users]
-# disable user signup / registration
-;allow_sign_up = true
-
-# Allow non admin users to create organizations
-;allow_org_create = true
-
-# Set to true to automatically assign new users to the default organization (id 1)
-;auto_assign_org = true
-
-# Set this value to automatically add new users to the provided organization (if auto_assign_org above is set to true)
-;auto_assign_org_id = 1
-
-# Default role new users will be automatically assigned (if disabled above is set to true)
-;auto_assign_org_role = Viewer
-
-# Require email validation before sign up completes
-;verify_email_enabled = false
-
-# Background text for the user field on the login page
-;login_hint = email or username
-;password_hint = password
-
-# Default UI theme ("dark" or "light")
-;default_theme = dark
-
-# External user management, these options affect the organization users view
-;external_manage_link_url =
-;external_manage_link_name =
-;external_manage_info =
-
-# Viewers can edit/inspect dashboard settings in the browser. But not save the dashboard.
-;viewers_can_edit = false
-
-# Editors can administrate dashboard, folders and teams they create
-;editors_can_admin = false
-
-[auth]
-# Login cookie name
-;login_cookie_name = grafana_session
-
-# The lifetime (days) an authenticated user can be inactive before being required to login at next visit. Default is 7 days,
-;login_maximum_inactive_lifetime_days = 7
-
-# The maximum lifetime (days) an authenticated user can be logged in since login time before being required to login. Default is 30 days.
-;login_maximum_lifetime_days = 30
-
-# How often should auth tokens be rotated for authenticated users when being active. The default is each 10 minutes.
-;token_rotation_interval_minutes = 10
-
-# Set to true to disable (hide) the login form, useful if you use OAuth, defaults to false
-;disable_login_form = false
-
-# Set to true to disable the signout link in the side menu. useful if you use auth.proxy, defaults to false
-;disable_signout_menu = false
-
-# URL to redirect the user to after sign out
-;signout_redirect_url =
-
-# Set to true to attempt login with OAuth automatically, skipping the login screen.
-# This setting is ignored if multiple OAuth providers are configured.
-;oauth_auto_login = false
-
-# OAuth state max age cookie duration. Defaults to 60 seconds.
-;oauth_state_cookie_max_age = 60
-
-# limit of api_key seconds to live before expiration
-;api_key_max_seconds_to_live = -1
-
-#################################### Anonymous Auth ######################
-[auth.anonymous]
-# enable anonymous access
-enabled = true
-
-# specify organization name that should be used for unauthenticated users
-;org_name = Main Org.
-
-# specify role for unauthenticated users
-;org_role = Viewer
-
-#################################### Github Auth ##########################
-[auth.github]
-;enabled = false
-;allow_sign_up = true
-;client_id = some_id
-;client_secret = some_secret
-;scopes = user:email,read:org
-;auth_url = https://github.com/login/oauth/authorize
-;token_url = https://github.com/login/oauth/access_token
-;api_url = https://api.github.com/user
-;allowed_domains =
-;team_ids =
-;allowed_organizations =
-
-#################################### GitLab Auth #########################
-[auth.gitlab]
-;enabled = false
-;allow_sign_up = true
-;client_id = some_id
-;client_secret = some_secret
-;scopes = api
-;auth_url = https://gitlab.com/oauth/authorize
-;token_url = https://gitlab.com/oauth/token
-;api_url = https://gitlab.com/api/v4
-;allowed_domains =
-;allowed_groups =
-
-#################################### Google Auth ##########################
-[auth.google]
-;enabled = false
-;allow_sign_up = true
-;client_id = some_client_id
-;client_secret = some_client_secret
-;scopes = https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email
-;auth_url = https://accounts.google.com/o/oauth2/auth
-;token_url = https://accounts.google.com/o/oauth2/token
-;api_url = https://www.googleapis.com/oauth2/v1/userinfo
-;allowed_domains =
-;hosted_domain =
-
-#################################### Grafana.com Auth ####################
-[auth.grafana_com]
-;enabled = false
-;allow_sign_up = true
-;client_id = some_id
-;client_secret = some_secret
-;scopes = user:email
-;allowed_organizations =
-
-#################################### Azure AD OAuth #######################
-[auth.azuread]
-;name = Azure AD
-;enabled = false
-;allow_sign_up = true
-;client_id = some_client_id
-;client_secret = some_client_secret
-;scopes = openid email profile
-;auth_url = https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/authorize
-;token_url = https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/token
-;allowed_domains =
-;allowed_groups =
-
-#################################### Okta OAuth #######################
-[auth.okta]
-;name = Okta
-;enabled = false
-;allow_sign_up = true
-;client_id = some_id
-;client_secret = some_secret
-;scopes = openid profile email groups
-;auth_url = https://<tenant-id>.okta.com/oauth2/v1/authorize
-;token_url = https://<tenant-id>.okta.com/oauth2/v1/token
-;api_url = https://<tenant-id>.okta.com/oauth2/v1/userinfo
-;allowed_domains =
-;allowed_groups =
-;role_attribute_path =
-
-#################################### Generic OAuth ##########################
-[auth.generic_oauth]
-;enabled = false
-;name = OAuth
-;allow_sign_up = true
-;client_id = some_id
-;client_secret = some_secret
-;scopes = user:email,read:org
-;email_attribute_name = email:primary
-;email_attribute_path =
-;auth_url = https://foo.bar/login/oauth/authorize
-;token_url = https://foo.bar/login/oauth/access_token
-;api_url = https://foo.bar/user
-;allowed_domains =
-;team_ids =
-;allowed_organizations =
-;role_attribute_path =
-;tls_skip_verify_insecure = false
-;tls_client_cert =
-;tls_client_key =
-;tls_client_ca =
-
-#################################### Basic Auth ##########################
-[auth.basic]
-;enabled = true
-
-#################################### Auth Proxy ##########################
-[auth.proxy]
-;enabled = false
-;header_name = X-WEBAUTH-USER
-;header_property = username
-;auto_sign_up = true
-;sync_ttl = 60
-;whitelist = 192.168.1.1, 192.168.2.1
-;headers = Email:X-User-Email, Name:X-User-Name
-# Read the auth proxy docs for details on what the setting below enables
-;enable_login_token = false
-
-#################################### Auth LDAP ##########################
-[auth.ldap]
-;enabled = false
-;config_file = /etc/grafana/ldap.toml
-;allow_sign_up = true
-
-# LDAP backround sync (Enterprise only)
-# At 1 am every day
-;sync_cron = "0 0 1 * * *"
-;active_sync_enabled = true
-
-#################################### SMTP / Emailing ##########################
-[smtp]
-;enabled = false
-;host = localhost:25
-;user =
-# If the password contains # or ; you have to wrap it with triple quotes. Ex """#password;"""
-;password =
-;cert_file =
-;key_file =
-;skip_verify = false
-;from_address = admin@grafana.localhost
-;from_name = Grafana
-# EHLO identity in SMTP dialog (defaults to instance_name)
-;ehlo_identity = dashboard.example.com
-
-[emails]
-;welcome_email_on_sign_up = false
-;templates_pattern = emails/*.html
-
-#################################### Logging ##########################
-[log]
-# Either "console", "file", "syslog". Default is console and file
-# Use space to separate multiple modes, e.g. "console file"
-;mode = console file
-
-# Either "debug", "info", "warn", "error", "critical", default is "info"
-;level = info
-
-# optional settings to set different levels for specific loggers. Ex filters = sqlstore:debug
-;filters =
-
-# For "console" mode only
-[log.console]
-;level =
-
-# log line format, valid options are text, console and json
-;format = console
-
-# For "file" mode only
-[log.file]
-;level =
-
-# log line format, valid options are text, console and json
-;format = text
-
-# This enables automated log rotate(switch of following options), default is true
-;log_rotate = true
-
-# Max line number of single file, default is 1000000
-;max_lines = 1000000
-
-# Max size shift of single file, default is 28 means 1 << 28, 256MB
-;max_size_shift = 28
-
-# Segment log daily, default is true
-;daily_rotate = true
-
-# Expired days of log file(delete after max days), default is 7
-;max_days = 7
-
-[log.syslog]
-;level =
-
-# log line format, valid options are text, console and json
-;format = text
-
-# Syslog network type and address. This can be udp, tcp, or unix. If left blank, the default unix endpoints will be used.
-;network =
-;address =
-
-# Syslog facility. user, daemon and local0 through local7 are valid.
-;facility =
-
-# Syslog tag. By default, the process' argv[0] is used.
-;tag =
-
-#################################### Usage Quotas ########################
-[quota]
-; enabled = false
-
-#### set quotas to -1 to make unlimited. ####
-# limit number of users per Org.
-; org_user = 10
-
-# limit number of dashboards per Org.
-; org_dashboard = 100
-
-# limit number of data_sources per Org.
-; org_data_source = 10
-
-# limit number of api_keys per Org.
-; org_api_key = 10
-
-# limit number of orgs a user can create.
-; user_org = 10
-
-# Global limit of users.
-; global_user = -1
-
-# global limit of orgs.
-; global_org = -1
-
-# global limit of dashboards
-; global_dashboard = -1
-
-# global limit of api_keys
-; global_api_key = -1
-
-# global limit on number of logged in users.
-; global_session = -1
-
-#################################### Alerting ############################
-[alerting]
-# Disable alerting engine & UI features
-;enabled = true
-# Makes it possible to turn off alert rule execution but alerting UI is visible
-;execute_alerts = true
-
-# Default setting for new alert rules. Defaults to categorize error and timeouts as alerting. (alerting, keep_state)
-;error_or_timeout = alerting
-
-# Default setting for how Grafana handles nodata or null values in alerting. (alerting, no_data, keep_state, ok)
-;nodata_or_nullvalues = no_data
-
-# Alert notifications can include images, but rendering many images at the same time can overload the server
-# This limit will protect the server from render overloading and make sure notifications are sent out quickly
-;concurrent_render_limit = 5
-
-
-# Default setting for alert calculation timeout. Default value is 30
-;evaluation_timeout_seconds = 30
-
-# Default setting for alert notification timeout. Default value is 30
-;notification_timeout_seconds = 30
-
-# Default setting for max attempts to sending alert notifications. Default value is 3
-;max_attempts = 3
-
-# Makes it possible to enforce a minimal interval between evaluations, to reduce load on the backend
-;min_interval_seconds = 1
-
-#################################### Explore #############################
-[explore]
-# Enable the Explore section
-;enabled = true
-
-#################################### Internal Grafana Metrics ##########################
-# Metrics available at HTTP API Url /metrics
-[metrics]
-# Disable / Enable internal metrics
-;enabled = true
-# Graphite Publish interval
-;interval_seconds = 10
-# Disable total stats (stat_totals_*) metrics to be generated
-;disable_total_stats = false
-
-#If both are set, basic auth will be required for the metrics endpoint.
-; basic_auth_username =
-; basic_auth_password =
-
-# Send internal metrics to Graphite
-[metrics.graphite]
-# Enable by setting the address setting (ex localhost:2003)
-;address =
-;prefix = prod.grafana.%(instance_name)s.
-
-#################################### Grafana.com integration ##########################
-# Url used to import dashboards directly from Grafana.com
-[grafana_com]
-;url = https://grafana.com
-
-#################################### Distributed tracing ############
-[tracing.jaeger]
-# Enable by setting the address sending traces to jaeger (ex localhost:6831)
-;address = localhost:6831
-# Tag that will always be included in when creating new spans. ex (tag1:value1,tag2:value2)
-;always_included_tag = tag1:value1
-# Type specifies the type of the sampler: const, probabilistic, rateLimiting, or remote
-;sampler_type = const
-# jaeger samplerconfig param
-# for "const" sampler, 0 or 1 for always false/true respectively
-# for "probabilistic" sampler, a probability between 0 and 1
-# for "rateLimiting" sampler, the number of spans per second
-# for "remote" sampler, param is the same as for "probabilistic"
-# and indicates the initial sampling rate before the actual one
-# is received from the mothership
-;sampler_param = 1
-# Whether or not to use Zipkin propagation (x-b3- HTTP headers).
-;zipkin_propagation = false
-# Setting this to true disables shared RPC spans.
-# Not disabling is the most common setting when using Zipkin elsewhere in your infrastructure.
-;disable_shared_zipkin_spans = false
-
-#################################### External image storage ##########################
-[external_image_storage]
-# Used for uploading images to public servers so they can be included in slack/email messages.
-# you can choose between (s3, webdav, gcs, azure_blob, local)
-;provider =
-
-[external_image_storage.s3]
-;endpoint =
-;path_style_access =
-;bucket =
-;region =
-;path =
-;access_key =
-;secret_key =
-
-[external_image_storage.webdav]
-;url =
-;public_url =
-;username =
-;password =
-
-[external_image_storage.gcs]
-;key_file =
-;bucket =
-;path =
-
-[external_image_storage.azure_blob]
-;account_name =
-;account_key =
-;container_name =
-
-[external_image_storage.local]
-# does not require any configuration
-
-[rendering]
-# Options to configure a remote HTTP image rendering service, e.g. using https://github.com/grafana/grafana-image-renderer.
-# URL to a remote HTTP image renderer service, e.g. http://localhost:8081/render, will enable Grafana to render panels and dashboards to PNG-images using HTTP requests to an external service.
-;server_url =
-# If the remote HTTP image renderer service runs on a different server than the Grafana server you may have to configure this to a URL where Grafana is reachable, e.g. http://grafana.domain/.
-;callback_url =
-# Concurrent render request limit affects when the /render HTTP endpoint is used. Rendering many images at the same time can overload the server,
-# which this setting can help protect against by only allowing a certain amount of concurrent requests.
-;concurrent_render_request_limit = 30
-
-[panels]
-# If set to true Grafana will allow script tags in text panels. Not recommended as it enable XSS vulnerabilities.
-;disable_sanitize_html = false
-
-[plugins]
-;enable_alpha = false
-;app_tls_skip_verify_insecure = false
-# Enter a comma-separated list of plugin identifiers to identify plugins that are allowed to be loaded even if they lack a valid signature.
-;allow_loading_unsigned_plugins =
-
-#################################### Grafana Image Renderer Plugin ##########################
-[plugin.grafana-image-renderer]
-# Instruct headless browser instance to use a default timezone when not provided by Grafana, e.g. when rendering panel image of alert.
-# See ICU’s metaZones.txt (https://cs.chromium.org/chromium/src/third_party/icu/source/data/misc/metaZones.txt) for a list of supported
-# timezone IDs. Fallbacks to TZ environment variable if not set.
-;rendering_timezone =
-
-# Instruct headless browser instance to use a default language when not provided by Grafana, e.g. when rendering panel image of alert.
-# Please refer to the HTTP header Accept-Language to understand how to format this value, e.g. 'fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5'.
-;rendering_language =
-
-# Instruct headless browser instance to use a default device scale factor when not provided by Grafana, e.g. when rendering panel image of alert.
-# Default is 1. Using a higher value will produce more detailed images (higher DPI), but will require more disk space to store an image.
-;rendering_viewport_device_scale_factor =
-
-# Instruct headless browser instance whether to ignore HTTPS errors during navigation. Per default HTTPS errors are not ignored. Due to
-# the security risk it's not recommended to ignore HTTPS errors.
-;rendering_ignore_https_errors =
-
-# Instruct headless browser instance whether to capture and log verbose information when rendering an image. Default is false and will
-# only capture and log error messages. When enabled, debug messages are captured and logged as well.
-# For the verbose information to be included in the Grafana server log you have to adjust the rendering log level to debug, configure
-# [log].filter = rendering:debug.
-;rendering_verbose_logging =
-
-# Instruct headless browser instance whether to output its debug and error messages into running process of remote rendering service.
-# Default is false. This can be useful to enable (true) when troubleshooting.
-;rendering_dumpio =
-
-# Additional arguments to pass to the headless browser instance. Default is --no-sandbox. The list of Chromium flags can be found
-# here (https://peter.sh/experiments/chromium-command-line-switches/). Multiple arguments is separated with comma-character.
-;rendering_args =
-
-# You can configure the plugin to use a different browser binary instead of the pre-packaged version of Chromium.
-# Please note that this is not recommended, since you may encounter problems if the installed version of Chrome/Chromium is not
-# compatible with the plugin.
-;rendering_chrome_bin =
-
-# Instruct how headless browser instances are created. Default is 'default' and will create a new browser instance on each request.
-# Mode 'clustered' will make sure that only a maximum of browsers/incognito pages can execute concurrently.
-# Mode 'reusable' will have one browser instance and will create a new incognito page on each request.
-;rendering_mode =
-
-# When rendering_mode = clustered you can instruct how many browsers or incognito pages can execute concurrently. Default is 'browser'
-# and will cluster using browser instances.
-# Mode 'context' will cluster using incognito pages.
-;rendering_clustering_mode =
-# When rendering_mode = clustered you can define maximum number of browser instances/incognito pages that can execute concurrently..
-;rendering_clustering_max_concurrency =
-
-# Limit the maxiumum viewport width, height and device scale factor that can be requested.
-;rendering_viewport_max_width =
-;rendering_viewport_max_height =
-;rendering_viewport_max_device_scale_factor =
-
-# Change the listening host and port of the gRPC server. Default host is 127.0.0.1 and default port is 0 and will automatically assign
-# a port not in use.
-;grpc_host =
-;grpc_port =
-
-[enterprise]
-# Path to a valid Grafana Enterprise license.jwt file
-;license_path =
-
-[feature_toggles]
-# enable features, separated by spaces
-;enable =
diff --git a/compose/grafana_conf/dashboards/apisix_http_prometheus.json b/compose/grafana_conf/dashboards/apisix_http_prometheus.json
deleted file mode 100644
index ad1e23f..0000000
--- a/compose/grafana_conf/dashboards/apisix_http_prometheus.json
+++ /dev/null
@@ -1,933 +0,0 @@
-{
- "annotations": {
- "list": [
- {
- "builtIn": 1,
- "datasource": "apisix",
- "enable": true,
- "hide": true,
- "iconColor": "rgba(0, 211, 255, 1)",
- "limit": 100,
- "name": "Annotations & Alerts",
- "showIn": 0,
- "type": "dashboard"
- }
- ]
- },
- "description": "MicroService API Gateway Apache APISIX",
- "editable": true,
- "gnetId": 11719,
- "graphTooltip": 0,
- "id": 10,
- "iteration": 1591947413854,
- "links": [],
- "panels": [
- {
- "collapsed": false,
- "datasource": "apisix",
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 0
- },
- "id": 10,
- "panels": [],
- "title": "Nginx",
- "type": "row"
- },
- {
- "cacheTimeout": null,
- "colorBackground": false,
- "colorValue": false,
- "colors": ["#299c46", "rgba(237, 129, 40, 0.89)", "#d44a3a"],
- "datasource": "apisix",
- "description": "",
- "fieldConfig": {
- "defaults": {
- "custom": {}
- },
- "overrides": []
- },
- "format": "none",
- "gauge": {
- "maxValue": 100,
- "minValue": 0,
- "show": false,
- "thresholdLabels": false,
- "thresholdMarkers": true
- },
- "gridPos": {
- "h": 5,
- "w": 5,
- "x": 0,
- "y": 1
- },
- "id": 8,
- "interval": null,
- "links": [],
- "mappingType": 1,
- "mappingTypes": [
- {
- "name": "value to text",
- "value": 1
- },
- {
- "name": "range to text",
- "value": 2
- }
- ],
- "maxDataPoints": 100,
- "nullPointMode": "connected",
- "nullText": null,
- "postfix": "",
- "postfixFontSize": "50%",
- "prefix": "",
- "prefixFontSize": "50%",
- "rangeMaps": [
- {
- "from": "null",
- "text": "N/A",
- "to": "null"
- }
- ],
- "sparkline": {
- "fillColor": "rgba(31, 118, 189, 0.18)",
- "full": true,
- "lineColor": "rgb(31, 120, 193)",
- "show": true,
- "ymax": null,
- "ymin": null
- },
- "tableColumn": "Total",
- "targets": [
- {
- "expr": "sum(apisix_nginx_http_current_connections{state=\"total\", instance=~\"$instance\"})",
- "intervalFactor": 2,
- "legendFormat": "Total",
- "refId": "A"
- }
- ],
- "thresholds": "",
- "timeFrom": null,
- "timeShift": null,
- "title": "Total Connections",
- "type": "singlestat",
- "valueFontSize": "80%",
- "valueMaps": [
- {
- "op": "=",
- "text": "N/A",
- "value": "null"
- }
- ],
- "valueName": "current"
- },
- {
- "cacheTimeout": null,
- "colorBackground": false,
- "colorValue": false,
- "colors": ["#299c46", "rgba(237, 129, 40, 0.89)", "#d44a3a"],
- "datasource": "apisix",
- "description": "",
- "fieldConfig": {
- "defaults": {
- "custom": {}
- },
- "overrides": []
- },
- "format": "none",
- "gauge": {
- "maxValue": 100,
- "minValue": 0,
- "show": false,
- "thresholdLabels": false,
- "thresholdMarkers": true
- },
- "gridPos": {
- "h": 5,
- "w": 5,
- "x": 5,
- "y": 1
- },
- "id": 16,
- "interval": null,
- "links": [],
- "mappingType": 1,
- "mappingTypes": [
- {
- "name": "value to text",
- "value": 1
- },
- {
- "name": "range to text",
- "value": 2
- }
- ],
- "maxDataPoints": 100,
- "nullPointMode": "connected",
- "nullText": null,
- "postfix": "",
- "postfixFontSize": "50%",
- "prefix": "",
- "prefixFontSize": "50%",
- "rangeMaps": [
- {
- "from": "null",
- "text": "N/A",
- "to": "null"
- }
- ],
- "sparkline": {
- "fillColor": "rgba(31, 118, 189, 0.18)",
- "full": true,
- "lineColor": "rgb(31, 120, 193)",
- "show": true,
- "ymax": null,
- "ymin": null
- },
- "tableColumn": "Accepted",
- "targets": [
- {
- "expr": "sum(apisix_nginx_http_current_connections{state=\"accepted\", instance=~\"$instance\"})",
- "intervalFactor": 2,
- "legendFormat": "Accepted",
- "refId": "A"
- }
- ],
- "thresholds": "",
- "timeFrom": null,
- "timeShift": null,
- "title": "Accepted Connections",
- "type": "singlestat",
- "valueFontSize": "80%",
- "valueMaps": [
- {
- "op": "=",
- "text": "N/A",
- "value": "null"
- }
- ],
- "valueName": "current"
- },
- {
- "cacheTimeout": null,
- "colorBackground": false,
- "colorValue": false,
- "colors": ["#299c46", "rgba(237, 129, 40, 0.89)", "#d44a3a"],
- "datasource": "apisix",
- "description": "",
- "fieldConfig": {
- "defaults": {
- "custom": {}
- },
- "overrides": []
- },
- "format": "none",
- "gauge": {
- "maxValue": 100,
- "minValue": 0,
- "show": false,
- "thresholdLabels": false,
- "thresholdMarkers": true
- },
- "gridPos": {
- "h": 5,
- "w": 5,
- "x": 10,
- "y": 1
- },
- "id": 11,
- "interval": null,
- "links": [],
- "mappingType": 1,
- "mappingTypes": [
- {
- "name": "value to text",
- "value": 1
- },
- {
- "name": "range to text",
- "value": 2
- }
- ],
- "maxDataPoints": 100,
- "nullPointMode": "connected",
- "nullText": null,
- "postfix": "",
- "postfixFontSize": "50%",
- "prefix": "",
- "prefixFontSize": "50%",
- "rangeMaps": [
- {
- "from": "null",
- "text": "N/A",
- "to": "null"
- }
- ],
- "sparkline": {
- "fillColor": "rgba(31, 118, 189, 0.18)",
- "full": true,
- "lineColor": "rgb(31, 120, 193)",
- "show": true,
- "ymax": null,
- "ymin": null
- },
- "tableColumn": "Total",
- "targets": [
- {
- "expr": "sum(apisix_nginx_http_current_connections{state=\"handled\", instance=~\"$instance\"})",
- "intervalFactor": 2,
- "legendFormat": "Total",
- "refId": "A"
- }
- ],
- "thresholds": "",
- "timeFrom": null,
- "timeShift": null,
- "title": "Handled Connections",
- "type": "singlestat",
- "valueFontSize": "80%",
- "valueMaps": [
- {
- "op": "=",
- "text": "N/A",
- "value": "null"
- }
- ],
- "valueName": "current"
- },
- {
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
- "datasource": "apisix",
- "fieldConfig": {
- "defaults": {
- "custom": {}
- },
- "overrides": []
- },
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 15,
- "x": 0,
- "y": 6
- },
- "hiddenSeries": false,
- "id": 17,
- "legend": {
- "alignAsTable": false,
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "rightSide": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "dataLinks": []
- },
- "percentage": false,
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "expr": "sum(apisix_nginx_http_current_connections{state=~\"active|reading|writing|waiting\", instance=~\"$instance\"}) by (state)",
- "intervalFactor": 1,
- "legendFormat": "{{state}}",
- "refId": "A"
- }
- ],
- "thresholds": [],
- "timeFrom": null,
- "timeRegions": [],
- "timeShift": null,
- "title": "Nginx connection state",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "buckets": null,
- "mode": "time",
- "name": null,
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "format": "short",
- "label": null,
- "logBase": 1,
- "max": null,
- "min": null,
- "show": true
- },
- {
- "format": "short",
- "label": null,
- "logBase": 1,
- "max": null,
- "min": null,
- "show": true
- }
- ],
- "yaxis": {
- "align": false,
- "alignLevel": null
- }
- },
- {
- "collapsed": false,
- "datasource": "apisix",
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 12
- },
- "id": 13,
- "panels": [],
- "title": "Bandwidth",
- "type": "row"
- },
- {
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
- "datasource": "apisix",
- "fieldConfig": {
- "defaults": {
- "custom": {}
- },
- "overrides": []
- },
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 15,
- "x": 0,
- "y": 13
- },
- "hiddenSeries": false,
- "id": 6,
- "legend": {
- "alignAsTable": true,
- "avg": true,
- "current": true,
- "max": true,
- "min": true,
- "rightSide": true,
- "show": true,
- "total": false,
- "values": true
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "dataLinks": []
- },
- "percentage": false,
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "expr": "sum(rate(apisix_bandwidth{instance=~\"$instance\"}[30s])) by (type)",
- "legendFormat": "{{type}}",
- "refId": "A"
- }
- ],
- "thresholds": [],
- "timeFrom": null,
- "timeRegions": [],
- "timeShift": null,
- "title": "Total Bandwidth",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "buckets": null,
- "mode": "time",
- "name": null,
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "format": "short",
- "label": null,
- "logBase": 1,
- "max": null,
- "min": null,
- "show": true
- },
- {
- "format": "short",
- "label": null,
- "logBase": 1,
- "max": null,
- "min": null,
- "show": true
- }
- ],
- "yaxis": {
- "align": false,
- "alignLevel": null
- }
- },
- {
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
- "datasource": "apisix",
- "fieldConfig": {
- "defaults": {
- "custom": {}
- },
- "overrides": []
- },
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 7,
- "x": 0,
- "y": 19
- },
- "hiddenSeries": false,
- "id": 19,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "dataLinks": []
- },
- "percentage": false,
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "expr": "sum(rate(apisix_bandwidth{type=\"egress\", service =~\"$service\",route=~\"$route\",instance=~\"$instance\"}[1m])) by (service)",
- "legendFormat": "service:{{service}}",
- "refId": "A"
- },
- {
- "expr": "sum(rate(apisix_bandwidth{type=\"egress\", service =~\"$service\",route=~\"$route\",instance=~\"$instance\"}[1m])) by (route)",
- "legendFormat": "route:{{route}}",
- "refId": "B"
- }
- ],
- "thresholds": [],
- "timeFrom": null,
- "timeRegions": [],
- "timeShift": null,
- "title": "Egress per service/route",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "buckets": null,
- "mode": "time",
- "name": null,
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "format": "short",
- "label": null,
- "logBase": 1,
- "max": null,
- "min": null,
- "show": true
- },
- {
- "format": "short",
- "label": null,
- "logBase": 1,
- "max": null,
- "min": null,
- "show": true
- }
- ],
- "yaxis": {
- "align": false,
- "alignLevel": null
- }
- },
- {
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
- "datasource": "apisix",
- "fieldConfig": {
- "defaults": {
- "custom": {}
- },
- "overrides": []
- },
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 7,
- "y": 19
- },
- "hiddenSeries": false,
- "id": 21,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "dataLinks": []
- },
- "percentage": false,
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "expr": "sum(irate(apisix_bandwidth{type=\"ingress\", service =~\"$service\",route=~\"$route\",instance=~\"$instance\"}[1m])) by (service)",
- "legendFormat": "service:{{service}}",
- "refId": "A"
- },
- {
- "expr": "sum(irate(apisix_bandwidth{type=\"ingress\", service =~\"$service\",route=~\"$route\",instance=~\"$instance\"}[1m])) by (route)",
- "legendFormat": "route:{{route}}",
- "refId": "B"
- }
- ],
- "thresholds": [],
- "timeFrom": null,
- "timeRegions": [],
- "timeShift": null,
- "title": "Ingress per service/route",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "buckets": null,
- "mode": "time",
- "name": null,
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "format": "short",
- "label": null,
- "logBase": 1,
- "max": null,
- "min": null,
- "show": true
- },
- {
- "format": "short",
- "label": null,
- "logBase": 1,
- "max": null,
- "min": null,
- "show": true
- }
- ],
- "yaxis": {
- "align": false,
- "alignLevel": null
- }
- },
- {
- "collapsed": false,
- "datasource": "apisix",
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 25
- },
- "id": 15,
- "panels": [],
- "title": "HTTP Status",
- "type": "row"
- },
- {
- "aliasColors": {},
- "bars": false,
- "cacheTimeout": null,
- "dashLength": 10,
- "dashes": false,
- "datasource": "apisix",
- "fieldConfig": {
- "defaults": {
- "custom": {}
- },
- "overrides": []
- },
- "fill": 3,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 15,
- "x": 0,
- "y": 26
- },
- "hiddenSeries": false,
- "id": 2,
- "interval": "",
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "links": [],
- "nullPointMode": "null",
- "options": {
- "dataLinks": []
- },
- "percentage": false,
- "pluginVersion": "6.5.2",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [
- {
- "alias": "state",
- "lines": true
- }
- ],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "expr": "sum(rate(apisix_http_status{code=~\"2..\",service=~\"$service\",route=~\"$route\",instance=~\"$instance\"}[30s])) by (status_2xx)",
- "instant": false,
- "intervalFactor": 1,
- "legendFormat": "{{status_2xx}}",
- "refId": "A"
- },
- {
- "expr": "sum(rate(apisix_http_status{code=~\"3..\",service=~\"$service\",route=~\"$route\",instance=~\"$instance\"}[30s])) by (status_3xx)",
- "legendFormat": "{{status_3xx}}",
- "refId": "D"
- },
- {
- "expr": "sum(rate(apisix_http_status{code=~\"4..\",service=~\"$service\",route=~\"$route\",instance=~\"$instance\"}[30s])) by (status_4xx)",
- "intervalFactor": 1,
- "legendFormat": "{{status_4xx}}",
- "refId": "B"
- },
- {
- "expr": "sum(rate(apisix_http_status{code=~\"5..\",service=~\"$service\",route=~\"$route\",instance=~\"$instance\"}[30s])) by (status_5xx)",
- "legendFormat": "{{status_5xx}}",
- "refId": "C"
- }
- ],
- "thresholds": [],
- "timeFrom": null,
- "timeRegions": [],
- "timeShift": null,
- "title": "Service HTTP Code",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "buckets": null,
- "mode": "time",
- "name": null,
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "format": "short",
- "label": null,
- "logBase": 1,
- "max": null,
- "min": null,
- "show": true
- },
- {
- "format": "short",
- "label": null,
- "logBase": 1,
- "max": null,
- "min": null,
- "show": true
- }
- ],
- "yaxis": {
- "align": false,
- "alignLevel": null
- }
- }
- ],
- "refresh": "5s",
- "schemaVersion": 25,
- "style": "dark",
- "tags": [],
- "templating": {
- "list": [
- {
- "allValue": ".*",
- "current": {
- "selected": false,
- "text": "All",
- "value": "$__all"
- },
- "datasource": "apisix",
- "definition": "label_values(apisix_http_status,service)",
- "hide": 0,
- "includeAll": true,
- "label": null,
- "multi": true,
- "name": "service",
- "options": [],
- "query": "label_values(apisix_http_status,service)",
- "refresh": 1,
- "regex": "",
- "skipUrlSync": false,
- "sort": 1,
- "tagValuesQuery": "",
- "tags": [],
- "tagsQuery": "",
- "type": "query",
- "useTags": false
- },
- {
- "allValue": ".*",
- "current": {
- "selected": false,
- "text": "All",
- "value": "$__all"
- },
- "datasource": "apisix",
- "definition": "label_values(apisix_http_status,route)",
- "hide": 0,
- "includeAll": true,
- "label": null,
- "multi": true,
- "name": "route",
- "options": [],
- "query": "label_values(apisix_http_status,route)",
- "refresh": 1,
- "regex": "",
- "skipUrlSync": false,
- "sort": 1,
- "tagValuesQuery": "",
- "tags": [],
- "tagsQuery": "",
- "type": "query",
- "useTags": false
- },
- {
- "allValue": ".*",
- "current": {
- "selected": false,
- "text": "All",
- "value": "$__all"
- },
- "datasource": "apisix",
- "definition": "label_values(apisix_http_status,instance)",
- "hide": 0,
- "includeAll": true,
- "label": null,
- "multi": true,
- "name": "instance",
- "options": [],
- "query": "label_values(apisix_http_status,instance)",
- "refresh": 2,
- "regex": ".*",
- "skipUrlSync": false,
- "sort": 1,
- "tagValuesQuery": "",
- "tags": [],
- "tagsQuery": "",
- "type": "query",
- "useTags": false
- }
- ]
- },
- "time": {
- "from": "now-30m",
- "to": "now"
- },
- "timepicker": {
- "refresh_intervals": ["5s", "10s", "30s", "1m", "5m", "15m", "30m", "1h", "2h", "1d"]
- },
- "timezone": "",
- "title": "Apache APISIX",
- "uid": "bLlNuRLWz",
- "version": 1
-}
diff --git a/compose/grafana_conf/provisioning/dashboards/all.yaml b/compose/grafana_conf/provisioning/dashboards/all.yaml
deleted file mode 100644
index d239437..0000000
--- a/compose/grafana_conf/provisioning/dashboards/all.yaml
+++ /dev/null
@@ -1,27 +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.
-#
-apiVersion: 1
-
-providers:
- - name: 'default'
- orgId: 1
- folder: ''
- type: file
- disableDeletion: false
- editable: false
- options:
- path: /var/lib/grafana/dashboards
diff --git a/compose/grafana_conf/provisioning/datasources/all.yaml b/compose/grafana_conf/provisioning/datasources/all.yaml
deleted file mode 100644
index 0f72aed..0000000
--- a/compose/grafana_conf/provisioning/datasources/all.yaml
+++ /dev/null
@@ -1,25 +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.
-#
-datasources:
- - access: 'proxy'
- editable: true
- is_default: true
- name: 'apisix'
- org_id: 1
- type: 'prometheus'
- url: 'http://prometheus:9090'
- version: 1
diff --git a/compose/manager_conf/entry.sh b/compose/manager_conf/entry.sh
deleted file mode 100755
index 34ca263..0000000
--- a/compose/manager_conf/entry.sh
+++ /dev/null
@@ -1,38 +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.
-#
-
-#!/bin/sh
-
-pwd=`pwd`
-
-# config
-cp ${pwd}/api/conf/conf_preview.json ${pwd}/conf.json
-
-export APIX_ETCD_ENDPOINTS="192.17.5.10:2379"
-
-export SYSLOG_HOST=127.0.0.1
-
-if [[ "$unamestr" == 'Darwin' ]]; then
- sed -i '' -e "s%#syslogAddress#%`echo $SYSLOG_HOST`%g" ${pwd}/conf.json
-else
- sed -i -e "s%#syslogAddress#%`echo $SYSLOG_HOST`%g" ${pwd}/conf.json
-fi
-
-cp ${pwd}/conf.json ${pwd}/api/conf/conf.json
-
-cd /go/manager-api
-exec ./manager-api
diff --git a/compose/prometheus_conf/prometheus.yml b/compose/prometheus_conf/prometheus.yml
deleted file mode 100644
index 50b5aa9..0000000
--- a/compose/prometheus_conf/prometheus.yml
+++ /dev/null
@@ -1,39 +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.
-#
-global:
- scrape_interval: 15s # By default, scrape targets every 15 seconds.
-
- # Attach these labels to any time series or alerts when communicating with
- # external systems (federation, remote storage, Alertmanager).
- external_labels:
- monitor: 'codelab-monitor'
-
-# A scrape configuration containing exactly one endpoint to scrape:
-# Here it's Prometheus itself.
-scrape_configs:
- # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- - job_name: 'prometheus'
-
- # Override the global default and scrape targets from this job every 5 seconds.
- scrape_interval: 5s
-
- static_configs:
- - targets: ['localhost:9090']
- - job_name: 'apisix'
- metrics_path: '/apisix/prometheus/metrics'
- static_configs:
- - targets: ['192.17.5.11:9080']
diff --git a/docker/nginx.conf b/docker/nginx.conf
deleted file mode 100644
index a596506..0000000
--- a/docker/nginx.conf
+++ /dev/null
@@ -1,38 +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.
-#
-
-server {
- listen 80;
- # gzip config
- gzip on;
- gzip_min_length 1k;
- gzip_comp_level 9;
- gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
- gzip_vary on;
- gzip_disable "MSIE [1-6]\.";
-
- root /usr/share/nginx/html;
- include /etc/nginx/mime.types;
-
- location / {
- try_files $uri $uri/ /index.html;
- }
-
- location /apisix/admin {
- proxy_pass http://manager:8080/apisix/admin;
- }
-}
diff --git a/docs/deploy.md b/docs/deploy.md
index d1a19fd..b384f1d 100644
--- a/docs/deploy.md
+++ b/docs/deploy.md
@@ -55,6 +55,8 @@ $ go env -w GOPROXY=https://goproxy.cn,direct
$ api/build.sh
```
+The bundled files are located in the root directory `/output`.
+
## Build the frontend
This project is initialized with [Ant Design Pro](https://pro.ant.design). The following are some quick guides for how to use.
@@ -64,6 +66,8 @@ This project is initialized with [Ant Design Pro](https://pro.ant.design). The f
3. Install dependencies:
```sh
+$ cd /frontend
+
$ yarn install
```
@@ -73,7 +77,7 @@ $ yarn install
$ yarn build
```
-5. The bundled files are under `/dist` folder if the step 4 is successful.
+The bundled files are located in the root directory `/output/html`.
## Run
diff --git a/docs/deploy.zh-CN.md b/docs/deploy.zh-CN.md
index ae003fb..c65ea58 100644
--- a/docs/deploy.zh-CN.md
+++ b/docs/deploy.zh-CN.md
@@ -55,6 +55,8 @@ $ go env -w GOPROXY=https://goproxy.cn,direct
$ api/build.sh
```
+构建完成后的文件在根目录 `/output` 下。
+
## 构建前端
该项目使用 [Ant Design Pro](https://pro.ant.design) 初始化。以下是一些使用方法的快速指南。
@@ -66,6 +68,8 @@ $ api/build.sh
3. 安装依赖:
```sh
+$ cd /frontend
+
$ yarn install
```
@@ -75,7 +79,7 @@ $ yarn install
$ yarn build
```
-5. 如果第 4 步成功的话,那么构建后的文件在 `/dist` 目录下。
+构建完成后的文件在根目录 `/output/html` 目录下。
## 启动
diff --git a/.editorconfig b/frontend/.editorconfig
similarity index 100%
rename from .editorconfig
rename to frontend/.editorconfig
diff --git a/.eslintignore b/frontend/.eslintignore
similarity index 100%
rename from .eslintignore
rename to frontend/.eslintignore
diff --git a/.eslintrc.js b/frontend/.eslintrc.js
similarity index 100%
rename from .eslintrc.js
rename to frontend/.eslintrc.js
diff --git a/.prettierignore b/frontend/.prettierignore
similarity index 100%
rename from .prettierignore
rename to frontend/.prettierignore
diff --git a/.prettierrc.js b/frontend/.prettierrc.js
similarity index 100%
rename from .prettierrc.js
rename to frontend/.prettierrc.js
diff --git a/.stylelintrc.js b/frontend/.stylelintrc.js
similarity index 100%
rename from .stylelintrc.js
rename to frontend/.stylelintrc.js
diff --git a/config/config.ts b/frontend/config/config.ts
similarity index 98%
rename from config/config.ts
rename to frontend/config/config.ts
index e826c76..f71d512 100644
--- a/config/config.ts
+++ b/frontend/config/config.ts
@@ -61,4 +61,5 @@ export default defineConfig({
manifest: {
basePath: '/',
},
+ outputPath: '../output/html'
});
diff --git a/config/defaultSettings.ts b/frontend/config/defaultSettings.ts
similarity index 100%
rename from config/defaultSettings.ts
rename to frontend/config/defaultSettings.ts
diff --git a/config/proxy.ts b/frontend/config/proxy.ts
similarity index 100%
rename from config/proxy.ts
rename to frontend/config/proxy.ts
diff --git a/config/routes.ts b/frontend/config/routes.ts
similarity index 100%
rename from config/routes.ts
rename to frontend/config/routes.ts
diff --git a/jest.config.js b/frontend/jest.config.js
similarity index 100%
rename from jest.config.js
rename to frontend/jest.config.js
diff --git a/jsconfig.json b/frontend/jsconfig.json
similarity index 100%
rename from jsconfig.json
rename to frontend/jsconfig.json
diff --git a/mock/notices.ts b/frontend/mock/notices.ts
similarity index 100%
rename from mock/notices.ts
rename to frontend/mock/notices.ts
diff --git a/mock/route.ts b/frontend/mock/route.ts
similarity index 100%
rename from mock/route.ts
rename to frontend/mock/route.ts
diff --git a/mock/user.ts b/frontend/mock/user.ts
similarity index 100%
rename from mock/user.ts
rename to frontend/mock/user.ts
diff --git a/package.json b/frontend/package.json
similarity index 100%
rename from package.json
rename to frontend/package.json
diff --git a/public/empty.svg b/frontend/public/empty.svg
similarity index 100%
rename from public/empty.svg
rename to frontend/public/empty.svg
diff --git a/public/favicon.png b/frontend/public/favicon.png
similarity index 100%
rename from public/favicon.png
rename to frontend/public/favicon.png
diff --git a/scripts/verifyCommit.js b/frontend/scripts/verifyCommit.js
similarity index 100%
rename from scripts/verifyCommit.js
rename to frontend/scripts/verifyCommit.js
diff --git a/src/access.ts b/frontend/src/access.ts
similarity index 100%
rename from src/access.ts
rename to frontend/src/access.ts
diff --git a/src/app.tsx b/frontend/src/app.tsx
similarity index 100%
rename from src/app.tsx
rename to frontend/src/app.tsx
diff --git a/src/assets/logo.svg b/frontend/src/assets/logo.svg
similarity index 100%
rename from src/assets/logo.svg
rename to frontend/src/assets/logo.svg
diff --git a/src/components/ActionBar/ActionBar.tsx b/frontend/src/components/ActionBar/ActionBar.tsx
similarity index 100%
rename from src/components/ActionBar/ActionBar.tsx
rename to frontend/src/components/ActionBar/ActionBar.tsx
diff --git a/src/components/ActionBar/index.ts b/frontend/src/components/ActionBar/index.ts
similarity index 100%
rename from src/components/ActionBar/index.ts
rename to frontend/src/components/ActionBar/index.ts
diff --git a/src/components/ActionBar/locales/en-US.ts b/frontend/src/components/ActionBar/locales/en-US.ts
similarity index 100%
rename from src/components/ActionBar/locales/en-US.ts
rename to frontend/src/components/ActionBar/locales/en-US.ts
diff --git a/src/components/ActionBar/locales/zh-CN.ts b/frontend/src/components/ActionBar/locales/zh-CN.ts
similarity index 100%
rename from src/components/ActionBar/locales/zh-CN.ts
rename to frontend/src/components/ActionBar/locales/zh-CN.ts
diff --git a/src/components/Footer/index.tsx b/frontend/src/components/Footer/index.tsx
similarity index 100%
rename from src/components/Footer/index.tsx
rename to frontend/src/components/Footer/index.tsx
diff --git a/src/components/HeaderDropdown/index.less b/frontend/src/components/HeaderDropdown/index.less
similarity index 100%
rename from src/components/HeaderDropdown/index.less
rename to frontend/src/components/HeaderDropdown/index.less
diff --git a/src/components/HeaderDropdown/index.tsx b/frontend/src/components/HeaderDropdown/index.tsx
similarity index 100%
rename from src/components/HeaderDropdown/index.tsx
rename to frontend/src/components/HeaderDropdown/index.tsx
diff --git a/src/components/NoticeIcon/NoticeList.less b/frontend/src/components/NoticeIcon/NoticeList.less
similarity index 100%
rename from src/components/NoticeIcon/NoticeList.less
rename to frontend/src/components/NoticeIcon/NoticeList.less
diff --git a/src/components/NoticeIcon/NoticeList.tsx b/frontend/src/components/NoticeIcon/NoticeList.tsx
similarity index 100%
rename from src/components/NoticeIcon/NoticeList.tsx
rename to frontend/src/components/NoticeIcon/NoticeList.tsx
diff --git a/src/components/NoticeIcon/index.less b/frontend/src/components/NoticeIcon/index.less
similarity index 100%
rename from src/components/NoticeIcon/index.less
rename to frontend/src/components/NoticeIcon/index.less
diff --git a/src/components/NoticeIcon/index.tsx b/frontend/src/components/NoticeIcon/index.tsx
similarity index 100%
rename from src/components/NoticeIcon/index.tsx
rename to frontend/src/components/NoticeIcon/index.tsx
diff --git a/src/components/PageLoading/index.tsx b/frontend/src/components/PageLoading/index.tsx
similarity index 100%
rename from src/components/PageLoading/index.tsx
rename to frontend/src/components/PageLoading/index.tsx
diff --git a/src/components/RightContent/AvatarDropdown.tsx b/frontend/src/components/RightContent/AvatarDropdown.tsx
similarity index 100%
rename from src/components/RightContent/AvatarDropdown.tsx
rename to frontend/src/components/RightContent/AvatarDropdown.tsx
diff --git a/src/components/RightContent/index.less b/frontend/src/components/RightContent/index.less
similarity index 100%
rename from src/components/RightContent/index.less
rename to frontend/src/components/RightContent/index.less
diff --git a/src/components/RightContent/index.tsx b/frontend/src/components/RightContent/index.tsx
similarity index 100%
rename from src/components/RightContent/index.tsx
rename to frontend/src/components/RightContent/index.tsx
diff --git a/src/components/Upstream/UpstreamForm.tsx b/frontend/src/components/Upstream/UpstreamForm.tsx
similarity index 100%
rename from src/components/Upstream/UpstreamForm.tsx
rename to frontend/src/components/Upstream/UpstreamForm.tsx
diff --git a/src/components/Upstream/constant.ts b/frontend/src/components/Upstream/constant.ts
similarity index 100%
rename from src/components/Upstream/constant.ts
rename to frontend/src/components/Upstream/constant.ts
diff --git a/src/components/Upstream/index.ts b/frontend/src/components/Upstream/index.ts
similarity index 100%
rename from src/components/Upstream/index.ts
rename to frontend/src/components/Upstream/index.ts
diff --git a/src/constants.ts b/frontend/src/constants.ts
similarity index 100%
rename from src/constants.ts
rename to frontend/src/constants.ts
diff --git a/src/e2e/__mocks__/antd-pro-merge-less.js b/frontend/src/e2e/__mocks__/antd-pro-merge-less.js
similarity index 100%
rename from src/e2e/__mocks__/antd-pro-merge-less.js
rename to frontend/src/e2e/__mocks__/antd-pro-merge-less.js
diff --git a/src/e2e/baseLayout.e2e.js b/frontend/src/e2e/baseLayout.e2e.js
similarity index 100%
rename from src/e2e/baseLayout.e2e.js
rename to frontend/src/e2e/baseLayout.e2e.js
diff --git a/src/global.less b/frontend/src/global.less
similarity index 100%
rename from src/global.less
rename to frontend/src/global.less
diff --git a/src/global.tsx b/frontend/src/global.tsx
similarity index 100%
rename from src/global.tsx
rename to frontend/src/global.tsx
diff --git a/src/helpers.tsx b/frontend/src/helpers.tsx
similarity index 100%
rename from src/helpers.tsx
rename to frontend/src/helpers.tsx
diff --git a/src/iconfont.ts b/frontend/src/iconfont.ts
similarity index 100%
rename from src/iconfont.ts
rename to frontend/src/iconfont.ts
diff --git a/src/locales/en-US.ts b/frontend/src/locales/en-US.ts
similarity index 100%
rename from src/locales/en-US.ts
rename to frontend/src/locales/en-US.ts
diff --git a/src/locales/en-US/component.ts b/frontend/src/locales/en-US/component.ts
similarity index 100%
rename from src/locales/en-US/component.ts
rename to frontend/src/locales/en-US/component.ts
diff --git a/src/locales/en-US/globalHeader.ts b/frontend/src/locales/en-US/globalHeader.ts
similarity index 100%
rename from src/locales/en-US/globalHeader.ts
rename to frontend/src/locales/en-US/globalHeader.ts
diff --git a/src/locales/en-US/menu.ts b/frontend/src/locales/en-US/menu.ts
similarity index 100%
rename from src/locales/en-US/menu.ts
rename to frontend/src/locales/en-US/menu.ts
diff --git a/src/locales/en-US/pwa.ts b/frontend/src/locales/en-US/pwa.ts
similarity index 100%
rename from src/locales/en-US/pwa.ts
rename to frontend/src/locales/en-US/pwa.ts
diff --git a/src/locales/zh-CN/setting.ts b/frontend/src/locales/en-US/setting.ts
similarity index 100%
rename from src/locales/zh-CN/setting.ts
rename to frontend/src/locales/en-US/setting.ts
diff --git a/src/locales/en-US/settingDrawer.ts b/frontend/src/locales/en-US/settingDrawer.ts
similarity index 100%
rename from src/locales/en-US/settingDrawer.ts
rename to frontend/src/locales/en-US/settingDrawer.ts
diff --git a/src/locales/zh-CN.ts b/frontend/src/locales/zh-CN.ts
similarity index 100%
rename from src/locales/zh-CN.ts
rename to frontend/src/locales/zh-CN.ts
diff --git a/src/locales/zh-CN/component.ts b/frontend/src/locales/zh-CN/component.ts
similarity index 100%
rename from src/locales/zh-CN/component.ts
rename to frontend/src/locales/zh-CN/component.ts
diff --git a/src/locales/zh-CN/globalHeader.ts b/frontend/src/locales/zh-CN/globalHeader.ts
similarity index 100%
rename from src/locales/zh-CN/globalHeader.ts
rename to frontend/src/locales/zh-CN/globalHeader.ts
diff --git a/src/locales/zh-CN/menu.ts b/frontend/src/locales/zh-CN/menu.ts
similarity index 100%
rename from src/locales/zh-CN/menu.ts
rename to frontend/src/locales/zh-CN/menu.ts
diff --git a/src/locales/zh-CN/pwa.ts b/frontend/src/locales/zh-CN/pwa.ts
similarity index 100%
rename from src/locales/zh-CN/pwa.ts
rename to frontend/src/locales/zh-CN/pwa.ts
diff --git a/src/locales/en-US/setting.ts b/frontend/src/locales/zh-CN/setting.ts
similarity index 100%
rename from src/locales/en-US/setting.ts
rename to frontend/src/locales/zh-CN/setting.ts
diff --git a/src/locales/zh-CN/settingDrawer.ts b/frontend/src/locales/zh-CN/settingDrawer.ts
similarity index 100%
rename from src/locales/zh-CN/settingDrawer.ts
rename to frontend/src/locales/zh-CN/settingDrawer.ts
diff --git a/src/manifest.json b/frontend/src/manifest.json
similarity index 100%
rename from src/manifest.json
rename to frontend/src/manifest.json
diff --git a/src/pages/404.tsx b/frontend/src/pages/404.tsx
similarity index 100%
rename from src/pages/404.tsx
rename to frontend/src/pages/404.tsx
diff --git a/src/pages/Consumer/Create.tsx b/frontend/src/pages/Consumer/Create.tsx
similarity index 100%
rename from src/pages/Consumer/Create.tsx
rename to frontend/src/pages/Consumer/Create.tsx
diff --git a/src/pages/Consumer/List.tsx b/frontend/src/pages/Consumer/List.tsx
similarity index 100%
rename from src/pages/Consumer/List.tsx
rename to frontend/src/pages/Consumer/List.tsx
diff --git a/src/pages/Consumer/components/Preview.tsx b/frontend/src/pages/Consumer/components/Preview.tsx
similarity index 100%
rename from src/pages/Consumer/components/Preview.tsx
rename to frontend/src/pages/Consumer/components/Preview.tsx
diff --git a/src/pages/Consumer/components/Step1.tsx b/frontend/src/pages/Consumer/components/Step1.tsx
similarity index 100%
rename from src/pages/Consumer/components/Step1.tsx
rename to frontend/src/pages/Consumer/components/Step1.tsx
diff --git a/src/pages/Route/index.ts b/frontend/src/pages/Consumer/index.ts
similarity index 100%
rename from src/pages/Route/index.ts
rename to frontend/src/pages/Consumer/index.ts
diff --git a/src/pages/Consumer/locales/en-US.ts b/frontend/src/pages/Consumer/locales/en-US.ts
similarity index 100%
rename from src/pages/Consumer/locales/en-US.ts
rename to frontend/src/pages/Consumer/locales/en-US.ts
diff --git a/src/pages/Consumer/locales/zh-CN.ts b/frontend/src/pages/Consumer/locales/zh-CN.ts
similarity index 100%
rename from src/pages/Consumer/locales/zh-CN.ts
rename to frontend/src/pages/Consumer/locales/zh-CN.ts
diff --git a/src/pages/Consumer/service.ts b/frontend/src/pages/Consumer/service.ts
similarity index 100%
rename from src/pages/Consumer/service.ts
rename to frontend/src/pages/Consumer/service.ts
diff --git a/src/pages/Consumer/typing.d.ts b/frontend/src/pages/Consumer/typing.d.ts
similarity index 100%
rename from src/pages/Consumer/typing.d.ts
rename to frontend/src/pages/Consumer/typing.d.ts
diff --git a/src/pages/Metrics/Metrics.tsx b/frontend/src/pages/Metrics/Metrics.tsx
similarity index 100%
rename from src/pages/Metrics/Metrics.tsx
rename to frontend/src/pages/Metrics/Metrics.tsx
diff --git a/src/pages/Metrics/index.ts b/frontend/src/pages/Metrics/index.ts
similarity index 100%
rename from src/pages/Metrics/index.ts
rename to frontend/src/pages/Metrics/index.ts
diff --git a/src/pages/Metrics/locales/en-US.ts b/frontend/src/pages/Metrics/locales/en-US.ts
similarity index 100%
rename from src/pages/Metrics/locales/en-US.ts
rename to frontend/src/pages/Metrics/locales/en-US.ts
diff --git a/src/pages/Metrics/locales/zh-CN.ts b/frontend/src/pages/Metrics/locales/zh-CN.ts
similarity index 100%
rename from src/pages/Metrics/locales/zh-CN.ts
rename to frontend/src/pages/Metrics/locales/zh-CN.ts
diff --git a/src/pages/Metrics/service.ts b/frontend/src/pages/Metrics/service.ts
similarity index 100%
rename from src/pages/Metrics/service.ts
rename to frontend/src/pages/Metrics/service.ts
diff --git a/src/pages/Route/Create.less b/frontend/src/pages/Route/Create.less
similarity index 100%
rename from src/pages/Route/Create.less
rename to frontend/src/pages/Route/Create.less
diff --git a/src/pages/Route/Create.tsx b/frontend/src/pages/Route/Create.tsx
similarity index 100%
rename from src/pages/Route/Create.tsx
rename to frontend/src/pages/Route/Create.tsx
diff --git a/src/pages/Route/List.tsx b/frontend/src/pages/Route/List.tsx
similarity index 100%
rename from src/pages/Route/List.tsx
rename to frontend/src/pages/Route/List.tsx
diff --git a/src/pages/Route/components/CreateStep4/CreateStep4.tsx b/frontend/src/pages/Route/components/CreateStep4/CreateStep4.tsx
similarity index 100%
rename from src/pages/Route/components/CreateStep4/CreateStep4.tsx
rename to frontend/src/pages/Route/components/CreateStep4/CreateStep4.tsx
diff --git a/src/pages/Route/components/CreateStep4/index.ts b/frontend/src/pages/Route/components/CreateStep4/index.ts
similarity index 100%
rename from src/pages/Route/components/CreateStep4/index.ts
rename to frontend/src/pages/Route/components/CreateStep4/index.ts
diff --git a/src/pages/Route/components/ResultView/ResultView.tsx b/frontend/src/pages/Route/components/ResultView/ResultView.tsx
similarity index 100%
rename from src/pages/Route/components/ResultView/ResultView.tsx
rename to frontend/src/pages/Route/components/ResultView/ResultView.tsx
diff --git a/src/pages/Route/components/ResultView/index.ts b/frontend/src/pages/Route/components/ResultView/index.ts
similarity index 100%
rename from src/pages/Route/components/ResultView/index.ts
rename to frontend/src/pages/Route/components/ResultView/index.ts
diff --git a/src/pages/Route/components/Step1/MatchingRulesView.tsx b/frontend/src/pages/Route/components/Step1/MatchingRulesView.tsx
similarity index 100%
rename from src/pages/Route/components/Step1/MatchingRulesView.tsx
rename to frontend/src/pages/Route/components/Step1/MatchingRulesView.tsx
diff --git a/src/pages/Route/components/Step1/MetaView.tsx b/frontend/src/pages/Route/components/Step1/MetaView.tsx
similarity index 100%
rename from src/pages/Route/components/Step1/MetaView.tsx
rename to frontend/src/pages/Route/components/Step1/MetaView.tsx
diff --git a/src/pages/Route/components/Step1/RequestConfigView.tsx b/frontend/src/pages/Route/components/Step1/RequestConfigView.tsx
similarity index 100%
rename from src/pages/Route/components/Step1/RequestConfigView.tsx
rename to frontend/src/pages/Route/components/Step1/RequestConfigView.tsx
diff --git a/src/pages/Route/components/Step1/index.tsx b/frontend/src/pages/Route/components/Step1/index.tsx
similarity index 100%
rename from src/pages/Route/components/Step1/index.tsx
rename to frontend/src/pages/Route/components/Step1/index.tsx
diff --git a/src/pages/Route/components/Step2/RequestRewriteView.tsx b/frontend/src/pages/Route/components/Step2/RequestRewriteView.tsx
similarity index 100%
rename from src/pages/Route/components/Step2/RequestRewriteView.tsx
rename to frontend/src/pages/Route/components/Step2/RequestRewriteView.tsx
diff --git a/src/pages/Route/components/Step2/index.tsx b/frontend/src/pages/Route/components/Step2/index.tsx
similarity index 100%
rename from src/pages/Route/components/Step2/index.tsx
rename to frontend/src/pages/Route/components/Step2/index.tsx
diff --git a/src/pages/Route/components/Step3/index.tsx b/frontend/src/pages/Route/components/Step3/index.tsx
similarity index 100%
rename from src/pages/Route/components/Step3/index.tsx
rename to frontend/src/pages/Route/components/Step3/index.tsx
diff --git a/src/pages/Route/constants.ts b/frontend/src/pages/Route/constants.ts
similarity index 100%
rename from src/pages/Route/constants.ts
rename to frontend/src/pages/Route/constants.ts
diff --git a/src/pages/Consumer/index.ts b/frontend/src/pages/Route/index.ts
similarity index 100%
rename from src/pages/Consumer/index.ts
rename to frontend/src/pages/Route/index.ts
diff --git a/src/pages/Route/locales/en-US.ts b/frontend/src/pages/Route/locales/en-US.ts
similarity index 100%
rename from src/pages/Route/locales/en-US.ts
rename to frontend/src/pages/Route/locales/en-US.ts
diff --git a/src/pages/Route/locales/zh-CN.ts b/frontend/src/pages/Route/locales/zh-CN.ts
similarity index 100%
rename from src/pages/Route/locales/zh-CN.ts
rename to frontend/src/pages/Route/locales/zh-CN.ts
diff --git a/src/pages/Route/service.ts b/frontend/src/pages/Route/service.ts
similarity index 100%
rename from src/pages/Route/service.ts
rename to frontend/src/pages/Route/service.ts
diff --git a/src/pages/Route/transform.ts b/frontend/src/pages/Route/transform.ts
similarity index 100%
rename from src/pages/Route/transform.ts
rename to frontend/src/pages/Route/transform.ts
diff --git a/src/pages/Route/typing.d.ts b/frontend/src/pages/Route/typing.d.ts
similarity index 100%
rename from src/pages/Route/typing.d.ts
rename to frontend/src/pages/Route/typing.d.ts
diff --git a/src/pages/SSL/Create.less b/frontend/src/pages/SSL/Create.less
similarity index 100%
rename from src/pages/SSL/Create.less
rename to frontend/src/pages/SSL/Create.less
diff --git a/src/pages/SSL/Create.tsx b/frontend/src/pages/SSL/Create.tsx
similarity index 100%
rename from src/pages/SSL/Create.tsx
rename to frontend/src/pages/SSL/Create.tsx
diff --git a/src/pages/SSL/List.tsx b/frontend/src/pages/SSL/List.tsx
similarity index 100%
rename from src/pages/SSL/List.tsx
rename to frontend/src/pages/SSL/List.tsx
diff --git a/src/pages/SSL/components/CertificateForm/index.tsx b/frontend/src/pages/SSL/components/CertificateForm/index.tsx
similarity index 100%
rename from src/pages/SSL/components/CertificateForm/index.tsx
rename to frontend/src/pages/SSL/components/CertificateForm/index.tsx
diff --git a/src/pages/SSL/components/CertificateUploader/index.tsx b/frontend/src/pages/SSL/components/CertificateUploader/index.tsx
similarity index 100%
rename from src/pages/SSL/components/CertificateUploader/index.tsx
rename to frontend/src/pages/SSL/components/CertificateUploader/index.tsx
diff --git a/src/pages/SSL/components/Step1/index.tsx b/frontend/src/pages/SSL/components/Step1/index.tsx
similarity index 100%
rename from src/pages/SSL/components/Step1/index.tsx
rename to frontend/src/pages/SSL/components/Step1/index.tsx
diff --git a/src/pages/SSL/components/Step2/index.tsx b/frontend/src/pages/SSL/components/Step2/index.tsx
similarity index 100%
rename from src/pages/SSL/components/Step2/index.tsx
rename to frontend/src/pages/SSL/components/Step2/index.tsx
diff --git a/src/pages/SSL/locales/en-US.ts b/frontend/src/pages/SSL/locales/en-US.ts
similarity index 100%
rename from src/pages/SSL/locales/en-US.ts
rename to frontend/src/pages/SSL/locales/en-US.ts
diff --git a/src/pages/SSL/locales/zh-CN.ts b/frontend/src/pages/SSL/locales/zh-CN.ts
similarity index 100%
rename from src/pages/SSL/locales/zh-CN.ts
rename to frontend/src/pages/SSL/locales/zh-CN.ts
diff --git a/src/pages/SSL/service.ts b/frontend/src/pages/SSL/service.ts
similarity index 100%
rename from src/pages/SSL/service.ts
rename to frontend/src/pages/SSL/service.ts
diff --git a/src/pages/SSL/style.less b/frontend/src/pages/SSL/style.less
similarity index 100%
rename from src/pages/SSL/style.less
rename to frontend/src/pages/SSL/style.less
diff --git a/src/pages/SSL/typing.d.ts b/frontend/src/pages/SSL/typing.d.ts
similarity index 100%
rename from src/pages/SSL/typing.d.ts
rename to frontend/src/pages/SSL/typing.d.ts
diff --git a/src/pages/Setting/Setting.tsx b/frontend/src/pages/Setting/Setting.tsx
similarity index 100%
rename from src/pages/Setting/Setting.tsx
rename to frontend/src/pages/Setting/Setting.tsx
diff --git a/src/pages/Setting/index.ts b/frontend/src/pages/Setting/index.ts
similarity index 100%
rename from src/pages/Setting/index.ts
rename to frontend/src/pages/Setting/index.ts
diff --git a/src/pages/Setting/locales/en-US.ts b/frontend/src/pages/Setting/locales/en-US.ts
similarity index 100%
rename from src/pages/Setting/locales/en-US.ts
rename to frontend/src/pages/Setting/locales/en-US.ts
diff --git a/src/pages/Setting/locales/zh-CN.ts b/frontend/src/pages/Setting/locales/zh-CN.ts
similarity index 100%
rename from src/pages/Setting/locales/zh-CN.ts
rename to frontend/src/pages/Setting/locales/zh-CN.ts
diff --git a/src/pages/Setting/service.ts b/frontend/src/pages/Setting/service.ts
similarity index 100%
rename from src/pages/Setting/service.ts
rename to frontend/src/pages/Setting/service.ts
diff --git a/src/pages/Setting/style.less b/frontend/src/pages/Setting/style.less
similarity index 100%
rename from src/pages/Setting/style.less
rename to frontend/src/pages/Setting/style.less
diff --git a/src/pages/Setting/typingd.d.ts b/frontend/src/pages/Setting/typingd.d.ts
similarity index 100%
rename from src/pages/Setting/typingd.d.ts
rename to frontend/src/pages/Setting/typingd.d.ts
diff --git a/src/pages/Upstream/Create.tsx b/frontend/src/pages/Upstream/Create.tsx
similarity index 100%
rename from src/pages/Upstream/Create.tsx
rename to frontend/src/pages/Upstream/Create.tsx
diff --git a/src/pages/Upstream/List.tsx b/frontend/src/pages/Upstream/List.tsx
similarity index 100%
rename from src/pages/Upstream/List.tsx
rename to frontend/src/pages/Upstream/List.tsx
diff --git a/src/pages/Upstream/components/Step1.tsx b/frontend/src/pages/Upstream/components/Step1.tsx
similarity index 100%
rename from src/pages/Upstream/components/Step1.tsx
rename to frontend/src/pages/Upstream/components/Step1.tsx
diff --git a/src/pages/Upstream/constants.ts b/frontend/src/pages/Upstream/constants.ts
similarity index 100%
rename from src/pages/Upstream/constants.ts
rename to frontend/src/pages/Upstream/constants.ts
diff --git a/src/pages/Upstream/index.ts b/frontend/src/pages/Upstream/index.ts
similarity index 100%
rename from src/pages/Upstream/index.ts
rename to frontend/src/pages/Upstream/index.ts
diff --git a/src/pages/Upstream/locales/en-US.ts b/frontend/src/pages/Upstream/locales/en-US.ts
similarity index 100%
rename from src/pages/Upstream/locales/en-US.ts
rename to frontend/src/pages/Upstream/locales/en-US.ts
diff --git a/src/pages/Upstream/locales/zh-CN.ts b/frontend/src/pages/Upstream/locales/zh-CN.ts
similarity index 100%
rename from src/pages/Upstream/locales/zh-CN.ts
rename to frontend/src/pages/Upstream/locales/zh-CN.ts
diff --git a/src/pages/Upstream/service.ts b/frontend/src/pages/Upstream/service.ts
similarity index 100%
rename from src/pages/Upstream/service.ts
rename to frontend/src/pages/Upstream/service.ts
diff --git a/src/pages/Upstream/transform.ts b/frontend/src/pages/Upstream/transform.ts
similarity index 100%
rename from src/pages/Upstream/transform.ts
rename to frontend/src/pages/Upstream/transform.ts
diff --git a/src/pages/Upstream/typing.d.ts b/frontend/src/pages/Upstream/typing.d.ts
similarity index 100%
rename from src/pages/Upstream/typing.d.ts
rename to frontend/src/pages/Upstream/typing.d.ts
diff --git a/src/pages/User/Login.less b/frontend/src/pages/User/Login.less
similarity index 100%
rename from src/pages/User/Login.less
rename to frontend/src/pages/User/Login.less
diff --git a/src/pages/User/Login.tsx b/frontend/src/pages/User/Login.tsx
similarity index 100%
rename from src/pages/User/Login.tsx
rename to frontend/src/pages/User/Login.tsx
diff --git a/src/pages/User/Logout.tsx b/frontend/src/pages/User/Logout.tsx
similarity index 100%
rename from src/pages/User/Logout.tsx
rename to frontend/src/pages/User/Logout.tsx
diff --git a/src/pages/User/components/LoginMethodExample.tsx b/frontend/src/pages/User/components/LoginMethodExample.tsx
similarity index 100%
rename from src/pages/User/components/LoginMethodExample.tsx
rename to frontend/src/pages/User/components/LoginMethodExample.tsx
diff --git a/src/pages/User/components/LoginMethodPassword.tsx b/frontend/src/pages/User/components/LoginMethodPassword.tsx
similarity index 100%
rename from src/pages/User/components/LoginMethodPassword.tsx
rename to frontend/src/pages/User/components/LoginMethodPassword.tsx
diff --git a/src/pages/User/index.ts b/frontend/src/pages/User/index.ts
similarity index 100%
rename from src/pages/User/index.ts
rename to frontend/src/pages/User/index.ts
diff --git a/src/pages/User/locales/en-US.ts b/frontend/src/pages/User/locales/en-US.ts
similarity index 100%
rename from src/pages/User/locales/en-US.ts
rename to frontend/src/pages/User/locales/en-US.ts
diff --git a/src/pages/User/locales/zh-CN.ts b/frontend/src/pages/User/locales/zh-CN.ts
similarity index 100%
rename from src/pages/User/locales/zh-CN.ts
rename to frontend/src/pages/User/locales/zh-CN.ts
diff --git a/src/pages/User/typing.d.ts b/frontend/src/pages/User/typing.d.ts
similarity index 100%
rename from src/pages/User/typing.d.ts
rename to frontend/src/pages/User/typing.d.ts
diff --git a/src/pages/document.ejs b/frontend/src/pages/document.ejs
similarity index 100%
rename from src/pages/document.ejs
rename to frontend/src/pages/document.ejs
diff --git a/src/service-worker.js b/frontend/src/service-worker.js
similarity index 100%
rename from src/service-worker.js
rename to frontend/src/service-worker.js
diff --git a/src/services/API.d.ts b/frontend/src/services/API.d.ts
similarity index 100%
rename from src/services/API.d.ts
rename to frontend/src/services/API.d.ts
diff --git a/src/services/user.ts b/frontend/src/services/user.ts
similarity index 100%
rename from src/services/user.ts
rename to frontend/src/services/user.ts
diff --git a/src/typings.d.ts b/frontend/src/typings.d.ts
similarity index 100%
rename from src/typings.d.ts
rename to frontend/src/typings.d.ts
diff --git a/tests/PuppeteerEnvironment.js b/frontend/tests/PuppeteerEnvironment.js
similarity index 100%
rename from tests/PuppeteerEnvironment.js
rename to frontend/tests/PuppeteerEnvironment.js
diff --git a/tests/beforeTest.js b/frontend/tests/beforeTest.js
similarity index 100%
rename from tests/beforeTest.js
rename to frontend/tests/beforeTest.js
diff --git a/tests/getBrowser.js b/frontend/tests/getBrowser.js
similarity index 100%
rename from tests/getBrowser.js
rename to frontend/tests/getBrowser.js
diff --git a/tests/run-tests.js b/frontend/tests/run-tests.js
similarity index 100%
rename from tests/run-tests.js
rename to frontend/tests/run-tests.js
diff --git a/tsconfig.json b/frontend/tsconfig.json
similarity index 100%
rename from tsconfig.json
rename to frontend/tsconfig.json
diff --git a/yarn.lock b/frontend/yarn.lock
similarity index 100%
rename from yarn.lock
rename to frontend/yarn.lock