grafana/pkg/services/apiserver
2024-03-25 10:12:55 -07:00
..
aggregator K8s: replace a noop certKey content func with actual if available (#84524) 2024-03-25 10:12:55 -07:00
auth K8s: Pass ID token in X-Extra-id-token header (#82893) 2024-02-16 17:07:37 +02:00
endpoints/request K8s: Add apimachinery and apiserver packages (#83190) 2024-02-23 15:15:43 -05:00
options K8s: replace a noop certKey content func with actual if available (#84524) 2024-03-25 10:12:55 -07:00
standalone Chore: Remove unused dependenices in plugin client middlewares (#84624) 2024-03-22 12:54:35 +01:00
storage/entity Storage: Add support for listing resource history (#84331) 2024-03-15 19:17:54 -04:00
utils Storage: Add support for listing resource history (#84331) 2024-03-15 19:17:54 -04:00
config.go k8s: ensure unified storage address is populated from config ini (#84373) 2024-03-13 15:17:26 +01:00
README.md K8s: Add Aggregation to Backend Service (#81591) 2024-02-12 22:59:35 +02:00
service.go K8s: disallow MT storage functionality for Aggregator builders (#84408) 2024-03-14 01:54:30 +02:00
wireset.go K8s: Add apimachinery and apiserver packages (#83190) 2024-02-23 15:15:43 -05:00

Grafana Kubernetes compatible API Server

Basic Setup

[feature_toggles]
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

Enable aggregation

See aggregator/README.md for more information.

kubectl access

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

app_mode = development

[feature_toggles]
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.