pkg/services/apiserver/README.md
Start Grafana:
make run
etcdStart 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
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
See aggregator/README.md for more information.
kubectl accessFor kubectl to work, grafana needs to run over https. To simplify development, you can use:
app_mode = development
[feature_toggles]
grafanaAPIServerEnsureKubectlAccess = true
[unified_storage.playlists.playlist.grafana.app]
dualWriterMode = 2
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
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.
The folder structure aims to follow the patterns established in standard (https://github.com/kubernetes/kubernetes)[kubernetes] projects when possible.
pkg/apimachinerypkg/apiserver and pkg/apimachinery. the closest analog in the Kubernetes monorepo is the kube-apiserver cmd.pkg/apis. it is based on the update-codegen.sh from sample-apiserverpkg/apis are registered with the API server by implementing the builder interface. this pattern is unique to grafana, and is needed to support using wire dependencies in legacy storage implementations. this is separated from pkg/apis to avoid issues with k8s codegen.grafana apiserver CLI command, which can be used to launch standalone API servers. this will eventually be merged with the config in pkg/services/apiserver to reduce duplication.