Except core runtime and REST api, there are some features that are allowed to be enabled or disabled during compilation by go build constraints. Uses can customize the built binary to include only the desired features to reduce the binary size according to the limit of the target environment.
Feature | Build Tag | Description |
---|---|---|
Core | core | The core of eKuiper. It contains the processor and REST API for stream/table/rule, the configuration processing, the SQL parser, the rule runtime etc. |
CLI | rpc | The cli server |
EdgeX Foundry integration | edgex | The built-in edgeX source, sink and connection |
Native plugin | plugin | The native plugin runtime, REST API, CLI API etc. |
Portable plugin | portable | The portable plugin runtime, REST API, CLI API etc. |
External service | service | The external service runtime, REST API, CLI API etc. |
Msgpack-rpc External service | msgpack | Support msgpack-rpc protocol in external service |
UI Meta API | ui | The REST API of the metadata which is usually consumed by the ui |
Prometheus Metrics | prometheus | Support to send metrics to prometheus |
Extended template functions | template | Support additional data template function from sprig besides default go text/template functions |
Codecs with schema | schema | Support schema registry and codecs with schema such as protobuf |
In makefile, we already provide three feature sets: standard, edgeX and core. The standard feature set include all features in the list except edgeX; edgeX feature set include all features; And the core feature set is the minimal which only has core feature. Build these feature sets with default makefile:
# standard
make
# EdgeX
make build_with_edgex
# core
make build_core
Feature selection is useful in a limited resource target which is unlikely to run as docker container. So we only provide standard feature set in the docker images.
And users need to build from source to customize the feature sets. To build with the desired features:
go build --tags "<FEATURE>"
For example, to build with core and native plugin support:
go build --tags "core plugin"
Recommend updating the build command in the Makefile with tags and build from make.