grafana/pkg/services/grafana-apiserver
2024-01-23 08:27:28 -08:00
..
auth/authorizer K8s: Refactor authorization initialization (#79670) 2023-12-19 19:12:35 +02:00
endpoints/request K8s: Add resource type helper to avoid so many hardcoded names (#79344) 2023-12-11 22:03:48 +02:00
registry/generic K8s/Playlist: Support full CRUD from k8s to existing storage (#75709) 2023-11-01 12:32:24 -07:00
rest K8s: Add etcd tests for dual write (local) (#78161) 2023-11-17 14:20:54 -05:00
storage K8s/Storage: Register field-selector on all kinds (#79822) 2024-01-16 08:30:01 -08:00
utils K8s: Move GrafanaMetaAccessor into grafana-apiserver and remove usage of kinds metadata (#79602) 2024-01-12 16:18:14 -05:00
common.go APIServer: Move shared code to a utility/helper function (#80261) 2024-01-10 07:30:16 -08:00
config_test.go K8s: Remove grafanaAPIServer feature toggle (#81030) 2024-01-23 08:27:28 -08:00
config.go K8s: Remove grafanaAPIServer feature toggle (#81030) 2024-01-23 08:27:28 -08:00
helper.go APIServer: Move shared code to a utility/helper function (#80261) 2024-01-10 07:30:16 -08:00
log.go K8s: Remove duplicate listener in production (#76583) 2023-10-23 21:42:10 +03:00
openapi.go K8s: Move shared apis to a common folder with shared openapi spec (#80484) 2024-01-12 12:05:30 -08:00
README.md Storage: Unified Storage based on Entity API (#71977) 2023-12-06 15:21:21 -05:00
request_handler.go APIServer: Move shared code to a utility/helper function (#80261) 2024-01-10 07:30:16 -08:00
service.go K8s/Storage: Register field-selector on all kinds (#79822) 2024-01-16 08:30:01 -08:00
wireset.go K8s: Refactor authorization initialization (#79670) 2023-12-19 19:12:35 +02:00

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.