The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
grafana/pkg/services/grafana-apiserver
Ryan McKinley e1d387d826
K8s/Storage: Register field-selector on all kinds (#79822)
1 year ago
..
auth/authorizer K8s: Refactor authorization initialization (#79670) 1 year ago
endpoints/request K8s: Add resource type helper to avoid so many hardcoded names (#79344) 1 year ago
registry/generic K8s/Playlist: Support full CRUD from k8s to existing storage (#75709) 2 years ago
rest K8s: Add etcd tests for dual write (local) (#78161) 2 years ago
storage K8s/Storage: Register field-selector on all kinds (#79822) 1 year ago
utils K8s: Move GrafanaMetaAccessor into grafana-apiserver and remove usage of kinds metadata (#79602) 1 year ago
README.md Storage: Unified Storage based on Entity API (#71977) 1 year ago
common.go APIServer: Move shared code to a utility/helper function (#80261) 1 year ago
config.go Storage: Unified Storage based on Entity API (#71977) 1 year ago
config_test.go Settings: Actually deprecate access to feature flags (#78073) 2 years ago
helper.go APIServer: Move shared code to a utility/helper function (#80261) 1 year ago
log.go K8s: Remove duplicate listener in production (#76583) 2 years ago
openapi.go K8s: Move shared apis to a common folder with shared openapi spec (#80484) 1 year ago
request_handler.go APIServer: Move shared code to a utility/helper function (#80261) 1 year ago
service.go K8s/Storage: Register field-selector on all kinds (#79822) 1 year ago
wireset.go K8s: Refactor authorization initialization (#79670) 1 year ago

README.md

Grafana Kubernetes compatible API Server

Basic Setup

[feature_toggles]
grafanaAPIServer = true
kubernetesPlaylists = true

Start Grafana:

make run

Enable dual write to etcd

Start etcd:

make devenv sources=etcd

Set storage type and etcd server address in custom.ini:

[grafana-apiserver]
storage_type = etcd
etcd_servers = 127.0.0.1:2379

Enable dual write to JSON files:

Set storage type:

[grafana-apiserver]
storage_type = file

Objects will be written to disk under the {data.path}/grafana-apiserver/ directory.

For example:

data/grafana-apiserver
├── grafana.kubeconfig
└── playlist.grafana.app
    └── playlists
        └── default
            └── hi.json

kubectl access

For kubectl to work, grafana needs to run over https. To simplify development, you can use:

app_mode = development

[feature_toggles]
grafanaAPIServer = true
grafanaAPIServerEnsureKubectlAccess = true 
kubernetesPlaylists = true

This will create a development kubeconfig and start a parallel ssl listener. It can be registered by navigating to the root grafana folder, then running:

export KUBECONFIG=$PWD/data/grafana-apiserver/grafana.kubeconfig
kubectl api-resources

Grafana API Access

The Kubernetes compatible API can be accessed using existing Grafana AuthN at: http://localhost:3000/apis.

The equivalent openapi docs can be seen in http://localhost:3000/swagger, select the relevant API from the dropdown in the upper right.