English | 中文
Pixiu-Admin is a management platform based on the Pixiu ecosystem, primarily used for configuring, monitoring, and managing Pixiu gateway resources. It provides centralized management functionality via a web user interface and RESTful API. This document explains how to deploy and configure Pixiu-Admin in a Linux environment.
For backend API documentation, please refer to API.md.
First, ensure you are in the root directory of the project (the directory containing the Dockerfile). Then, start instantly with Docker Compose:
docker-compose up -d
If you prefer not to use Docker, you can download the source code by running:
git clone https://github.com/apache/dubbo-go-pixiu
To manually deploy the etcd service, run the following command:
docker run -d -p 2379:2379 --env ALLOW_NONE_AUTHENTICATION=yes --name etcd bitnami/etcd
For M1/M1 Pro users, use the following command:
docker run -d -p 2379:2379 --platform linux/amd64 --env ALLOW_NONE_AUTHENTICATION=yes --name etcd bitnami/etcd:3.5.1
Go to the project directory and run:
cd dubbo-go-pixiu # Run directly go run ./cmd/admin/admin.go -c /your/local/path/conf.yaml # Run in the background nohup go run ./cmd/admin/admin.go -c /your/local/path/conf.yaml &
Default config can refer to pixiu_with_admin_config.yaml
go run ./cmd/pixiu/pixiu.go gateway start -c ./configs/pixiu_with_admin_config.yaml
Go to the web directory and install dependencies:
cd ./admin/web/ yarn install # Install dependencies yarn run serve # Test run
Edit the vue.config.js file in the web directory to configure the backend service address:
devServer: {
host: '0.0.0.0',
port: 8080, // Web app address
hot: true,
https: false,
open: false,
disableHostCheck: true,
proxy: {
"/config": {
target: "http://127.0.0.1:8081", // Backend service address
ws: true, // Enable websockets
changeOrigin: true, // Enable proxy
}
}
}
After running successfully, you can access the Admin web interface in the browser at http://127.0.0.1:8081/login.html#/Overview.
Type the mapping configuration in the code editor and click “Confirm” to create it.
path: '/api/v1/test-dubbo/user' type: restful description: user filters: - filter0 methods: - httpVerb: GET onAir: true timeout: 1000ms inboundRequest: requestType: http queryStrings: - name: name required: true integrationRequest: requestType: dubbo mappingParams: - name: queryStrings.name mapTo: 0 mapType: "java.lang.String" applicationName: "UserProvider" interface: "com.ic.user.UserProvider" method: "GetUserByName" group: "test" version: 1.0.0 clusterName: "test_dubbo" - httpVerb: POST onAir: true timeout: 10s inboundRequest: requestType: http integrationRequest: requestType: dubbo mappingParams: - name: requestBody._all mapTo: 0 mapType: "object" applicationName: "UserProvider" interface: "com.ic.user.UserProvider" method: "CreateUser" group: "test" version: 1.0.0 clusterName: "test_dubbo"
You can modify the mapping configuration in the edit area and click “Save” to apply changes.
Click the “Add” button to add a new method mapping. Example:
httpVerb: PUT onAir: true timeout: 10s inboundRequest: requestType: http integrationRequest: requestType: dubbo mappingParams: - name: requestBody._all mapTo: 0 mapType: "object" applicationName: "UserProvider" interface: "com.ic.user.UserProvider" method: "CreateUser" group: "test" version: 1.0.0 clusterName: "test_dubbo"
After confirming, the method mapping will appear in the list.
You can view detailed information of method mappings or delete them.
For example, change the httpVerb of the second method mapping from POST to DELETE.
Note: The ID cannot be modified, and even after saving changes, it will revert to the old value. Click “Confirm” to update the method mapping.
Click the “Plugin Configuration” menu on the left to view plugin-related configurations.
Click the “Add” button in the top right to create a new plugin group.
Plugin group configuration example:
groupName: "group2" plugins: - name: "rate limit" version: "0.1.0" priority: 1000 externalLookupName: "ExternalPluginRateLimit" - name: "log" version: "0.2.0" priority: 2000 externalLookupName: "ExternalPluginLog"
After saving, the list will refresh to show the newly created plugin group.
Similar to mapping configurations, you can click “View” to edit the plugin group configuration, or click “Delete” to remove the entire plugin group configuration.
Click “View” to edit the plugin group configuration, or “Delete” to remove the plugin group.
Click the “Rate Limiting Configuration” menu to configure the rate-limiting components. Example configuration:
resources: - name: test-http items: - pattern: /api/v1/test-dubbo/user - matchStrategy: 1 pattern: /api/*/test-dubbo/user rules: - flowRule: resource: "" tokencalculatestrategy: 0 threshold: 100 enable: true
After saving, the rate-limiting configuration will take effect.
Click the “OPA Policy Configuration” menu to manage the OPA policy. You can change policy_id, synchronize the latest policy from the OPA server, and edit Rego policy content in the editor.
After editing, click “Save” to upload the policy to OPA. You can also click “Delete” to remove the policy.
Start Pixiu and specify the configuration file. In the configuration file, define the etcd address and configuration path:
api_meta_config: address: "127.0.0.1:2379" api_config_path: "/pixiu/config/api"
Create resource configurations in the admin panel and test Pixiu forwarding functionality using curl:
curl "http://127.0.0.1:8888/api/v1/test-dubbo/user?name=tc" curl -X POST "http://127.0.0.1:8888/api/v1/test-dubbo/user?name=tc"
If no matching service is found, an error message will be returned; if the configuration is correct, the service response will be returned.
This project is licensed under the Apache License 2.0.