Comments (1)
Each Kelemetry controller instance can only watch events from one cluster, namely its "target cluster". The recommended approach is like this:
- Deploy central diff cache + span cache databases
- Deploy central webhook + consumer instances and connect to the central cache databases
- Deploy in-cluster informers instances and connect to the central cache databases.
graph TB
subgraph central deployment
consumer[webhook + consumer]
cache[diff & span cache]
consumer --> cache
end
subgraph cluster1
apiserver1[kube-apiserver]
informers1[informers]
apiserver1 --> |list-watch| informers1
end
apiserver2 -->|audit\nwebhook| consumer
subgraph cluster2
apiserver2[kube-apiserver]
informers2[informers]
apiserver2 --> |list-watch| informers2
end
apiserver1 -->|audit\nwebhook| consumer
informers1 --> cache
informers2 --> cache
But due to multi-cluster linking (if you e.g. use the annotation linker or the LinkRule linker in #109), informers and consumer also need out-of-cluster GET
access to all other apiservers. That is, if an informer/consumer processes audit/events from cluster1 but the processed object references a parent-link in cluster2, then the informer/consumer also needs to know how to access the parent object in order to generate transitive parents. (omitted in the diagram since full connection is too messy)
The current helm chart does not explicitly support multi-cluster deployment due to various cluster management techniques, but the rough idea is to do this:
- Deploy an etcd cluster and an ElasticSearch cluster without using the Helm chart from Kelemetry.
- Edit values.yaml:
- Update
multiCluster.clusters
include connection details for all clusters. - Change
externalEndpoint: false
fordiffCache
andspanCache
to the URL for the etcd cluster deployed in step 1. (optionally, also change fortraceCache
to share search results between frontend instances) - Change
storageBackend.type
toelasticsearch
and updatestorageBackend.options
to point to the ElasticSearch cluster deployed in step 1.
- For each cluster, update
multiCluster.currentClusterName
to its cluster name and deploy the chart for that cluster.
Nevertheless, if you expect no inter-cluster parent references, you can skip all these steps and just switch the storageBackend
to a common storage backend.
from kelemetry.
Related Issues (20)
- kelemetry-consumer and kelemetry-kelemetry-frontend CrashLoopBackOff HOT 2
- metric "diff_decorator_retry_count" was not initialized HOT 1
- ERROR: Failed to init storage factory HOT 18
- frontend: Why the service deployment resource uses 2 identical storage services and wants to be optimized HOT 1
- Add integration tests for Helm charts
- Audit log is not missed in the tracing data HOT 4
- etcd CrashLoopBackOff and health check failed HOT 3
- Move linking to frontend
- kelemetry-jaeger-query-1 keep restarting in dev deployment HOT 10
- how to configure the storageBackend to use elasticsearch HOT 1
- how to enable extension trace from apiserver in chart
- Deploy using helm chart failed HOT 1
- jaeger ui no data HOT 1
- jaeger UI Service count is 8 HOT 3
- Some questions about getting started with the project HOT 2
- etcd is easily overloaded HOT 2
- Links are prematurely merged during Search
- support for redis HOT 1
- Use admission webhooks for diff
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 kelemetry.