60
docs/en/guides/kubesphere-logging-devlopment-guide.md
Normal file
60
docs/en/guides/kubesphere-logging-devlopment-guide.md
Normal file
@@ -0,0 +1,60 @@
|
||||
# Logging
|
||||
|
||||
This documentation contains backend development guides for interaction with key components behind KubeSphere logging system. Logging backend provides the capabilities of:
|
||||
|
||||
- Log search
|
||||
- Log export
|
||||
- Log output configuration
|
||||
- Multi-tenant isolation
|
||||
|
||||
## File Tree
|
||||
|
||||
The listing below covers all folders related to the logging backend.
|
||||
|
||||
```
|
||||
/pkg
|
||||
├─api
|
||||
│ └─logging # declares structs for api responses
|
||||
│ └─v1alpha2
|
||||
├─apiserver # implements handler for http requests
|
||||
│ ├─logging
|
||||
│ └─tenant
|
||||
├─kapis # registers APIs and routing
|
||||
│ ├─logging
|
||||
│ │ ├─install
|
||||
│ │ └─v1alpha2
|
||||
│ ├─tenant
|
||||
│ │ ├─install
|
||||
│ │ └─v1alpha2
|
||||
├─models
|
||||
│ ├─log # constants, utils and fluent-bit crd operation
|
||||
│ │ ├─constants.go
|
||||
│ │ ├─logcollector.go # some utils
|
||||
│ │ ├─logcrd.go # interacts with fluent-bit crd
|
||||
│ │ └─types.go
|
||||
│ └─tenant
|
||||
└─simple
|
||||
├─factory.go # contains factory functions for es client options
|
||||
└─client
|
||||
├─elasticsearch # wraps es search apis
|
||||
│ ├─esclient.go # constructs es search body
|
||||
│ ├─interface.go # general interface methods for es clients
|
||||
│ ├─options.go # es client options
|
||||
│ └─versions # client code by es versions
|
||||
│ ├─v5
|
||||
│ ├─v6
|
||||
│ └─v7
|
||||
└─fluentbit # autogenerated client code for fluent-bit crd
|
||||
```
|
||||
|
||||
## API Design
|
||||
|
||||
There are two types of APIs in logging. One for log query, and the other for interacting with the CustomResourceDefinition used by [Fluent-bit Operator](https://github.com/kubesphere/fluentbit-operator). For information about CRD and Fluent-bit Operator, please go to its own repo.
|
||||
|
||||
To support multi-tenant isolation, KubeSphere's logging query APIs have the format like below, though the underlying logic is using Elastic Search APIs:
|
||||
|
||||
```
|
||||
GET /namespaces/{namespace}/pods/{pod}/containers/{container}
|
||||
```
|
||||
|
||||
KubeSphere API gateway will decode the URL and conduct authorization. A person who doesn't belong to a namespace will be rejected to make a request.
|
||||
Reference in New Issue
Block a user