grafana/pkg/services/grafana-apiserver
2023-12-20 11:26:35 -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 Storage: Use int64 for resourceVersion (#79735) 2023-12-20 11:26:35 -08:00
utils K8s/Folders: Add folders api service (with legacy storage) (#79413) 2023-12-20 20:28:56 +02:00
common.go K8s: Refactor authorization initialization (#79670) 2023-12-19 19:12:35 +02:00
config_test.go Settings: Actually deprecate access to feature flags (#78073) 2023-11-13 11:39:01 -08:00
config.go Storage: Unified Storage based on Entity API (#71977) 2023-12-06 15:21:21 -05:00
log.go K8s: Remove duplicate listener in production (#76583) 2023-10-23 21:42:10 +03:00
openapi.go K8s: fix standalone command and add hack scripts (#79052) 2023-12-05 14:31:49 -08:00
README.md Storage: Unified Storage based on Entity API (#71977) 2023-12-06 15:21:21 -05:00
request_handler.go K8s: Update OpenAPI post processing structures (#79553) 2023-12-15 07:53:35 -08:00
service.go K8s: Refactor authorization initialization (#79670) 2023-12-19 19:12:35 +02: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.