README
¶
k8see (Kubernetes Events Exporter)
Kubernetes Events Exporter is a suit of three tools to export kubernertes events in an external database. The goal is to get events in an SQL DB to be able to analyze what happened.
The 3 tools are :
- k8see-exporter : Deployment inside the kubernetes cluster to export events in a redis stream
- k8see-importer : Tool that read the redis stream to import events in a database (PostGreSQL)
- k8see-webui : Web interface to query the database
- k8see-deploy : kubernetes manifests to deploy k8see-exporter and also the whole procedure to deploy a full test environment in a k8s cluster (with kind).
k8see-exporter
The image is available on GitHub Container Registry: ghcr.io/sgaunet/k8see-exporter:version
Deployment
The application can be deployed using:
- Helm Chart: helm-k8see
- Kubernetes Manifests: k8see-deploy
Health Endpoints
k8see-exporter exposes HTTP health endpoints for Kubernetes probes on port 2112 (configurable via METRICS_PORT environment variable):
/healthz- Liveness probe (returns 200 OK if running)/readyz- Readiness probe (returns 200 OK if Redis is connected and informer is synced)/metrics- Prometheus metrics endpoint
Kubernetes Probe Configuration
apiVersion: apps/v1
kind: Deployment
spec:
template:
spec:
containers:
- name: k8see-exporter
ports:
- name: metrics
containerPort: 2112
livenessProbe:
httpGet:
path: /healthz
port: metrics
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 2
failureThreshold: 3
readinessProbe:
httpGet:
path: /readyz
port: metrics
initialDelaySeconds: 5
periodSeconds: 5
timeoutSeconds: 2
failureThreshold: 2
The readiness probe will mark the pod as NotReady during Redis connection issues, preventing traffic routing to unhealthy instances.
RBAC Requirements
k8see-exporter requires cluster-wide read permissions for Kubernetes events.
Required Permissions
apiVersion: v1
kind: ServiceAccount
metadata:
name: k8see-exporter
namespace: k8see
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: k8see-exporter
rules:
- apiGroups: [""]
resources: ["events"]
verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: k8see-exporter
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: k8see-exporter
subjects:
- kind: ServiceAccount
name: k8see-exporter
namespace: k8see
Why Cluster-Wide?
k8see-exporter monitors events across all namespaces to provide comprehensive cluster observability. It uses a Kubernetes informer that watches the entire cluster.
Security Considerations
- Read-only access: Only requires
get,list,watch(no write permissions) - Events only: No access to Pods, Secrets, or other sensitive resources
- Standard pattern: Same permissions as
kubectl get events --all-namespaces
Note: If using Helm deployment, RBAC resources are automatically created. Manual deployments require creating these resources.
Development environment
The repository k8see-deploy contains the whole procedure to deploy a full test environment in a k8s cluster (with kind). The repository contains also themanifests to deploy k8see-exporter.
Build
This project is using :
- golang 1.17+
- task for development
- docker
- docker buildx
- docker manifest
- goreleaser
## Binary
task
Build the image
task image
Make a release
task release
Project Status
🟨 Maintenance Mode: This project is in maintenance mode.
While we are committed to keeping the project's dependencies up-to-date and secure, please note the following:
- New features are unlikely to be added
- Bug fixes will be addressed, but not necessarily promptly
- Security updates will be prioritized
Issues and Bug Reports
We still encourage you to use our issue tracker for:
- 🐛 Reporting critical bugs
- 🔒 Reporting security vulnerabilities
- 🔍 Asking questions about the project
Please check existing issues before creating a new one to avoid duplicates.
Contributions
🤝 Limited contributions are still welcome.
While we're not actively developing new features, we appreciate contributions that:
- Fix bugs
- Update dependencies
- Improve documentation
- Enhance performance or security
If you're interested in contributing, please read our CONTRIBUTING.md guide for more information on how to get started.
Support
As this project is in maintenance mode, support may be limited. We appreciate your understanding and patience.
Thank you for your interest in our project!