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 <[email protected]> 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 = [email protected] -;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
