Comments (1)
For 3/5/6, the jaeger-clickhouse plugin is a standalone binary that gets executed as a subprocess of Jaeger, which is then communicated with over gRPC. As a result of this design, the docker image really only needs to hold the jaeger-clickhouse
binary itself, which can then be mounted into the Jaeger container's filesystem. For example see handling in jaeger-operator that sets up access to the binary using an initContainer
. Switching to a model of including both Jaeger and the plugin in the same image would require first updating this existing gRPC handling in jaeger-operator
to support the combined image structure. There's also be the loss of independent versioning between the plugin itself and Jaeger in a production deployment - e.g. when testing changes to the plugin I am able to pair an arbitrary plugin version with an arbitrary Jaeger version.
But there are still a couple other issues in the existing structure that you point out:
- The current Dockerfile copies in a built binary that was created externally on the host, rather than via a controlled builder image. Like you point out in item (1) this makes it harder to get reproducible builds.
- As you pointed out in item (4), once the binary is being built internally, it should probably use Debian rather than Alpine for the base images. The current use of Alpine effectively doesn't matter that much since the binary isn't actually being built nor run in that Alpine environment. If we were going to extremes, the main stage's base image could technically be
scratch
, except that it's often useful to keep the linux utilities available for debugging etc. But once a builder stage has been added, we'd probably want to make sure that there isn't a risk of weird libc vs musl conflicts when the imported plugin binary is being run from a jaeger image.
So I think the main changes to address items 1 and 4 would be:
- Update the current Dockerfile (and Makefile) to have an in-docker build stage, instead of doing the build on the host system.
- Switch the base images in the Dockerfile from Alpine to Debian, just to reduce the risk of weird musl issues later.
- Future/extra credit: Once the build is being done in a docker stage, it should be pretty straightforward to have multiarch builds with architecture coverage on par with the main Jaeger docker images.
Does this make sense?
from jaeger-clickhouse.
Related Issues (20)
- Add option to limit number of fetched spans per trace
- Looking for maintainers HOT 5
- Model alternative for jaeger_index table HOT 1
- How to support ARM HOT 1
- Support writeSpan via grpc stream
- [Feature]: Support Native JSON columns in Clickhouse HOT 1
- [Feature]: Use native ClickHouse interface instead of database/sql HOT 1
- [Feature]: Add ttl_only_drop_parts into table setting or possible be configured
- [Feature]: Allow changing TTL configuration on existing tables
- [Bug]: Resolve High CVEs
- [Bug]: why jaeger don't connect clickhouse databases; HOT 3
- [Feature]: Dependencies job for clickhouse backend HOT 3
- [Feature]: change insert HOT 1
- [Bug]: System Architecture reported an error when I used Click House as the storage backend HOT 1
- [Feature]: jaeger sampling strategy should sampling down /jaeger.storage.v1.SpanWriterPlugin/WriteSpan opertaion HOT 1
- [Feature]: Support communication over HTTP to allow connecting to clickhouse proxy
- Add integration test for replicated database. HOT 1
- Search by error tag does not work HOT 3
- Got plugin error "transport: error while dialing: dial unix /tmp/plugin" HOT 6
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from jaeger-clickhouse.