Grafana
- By Canonical Observability
Channel | Revision | Published | Runs on |
---|---|---|---|
latest/stable | 114 | 01 Aug 2024 | |
latest/candidate | 117 | 28 Jun 2024 | |
latest/beta | 117 | 21 Jun 2024 | |
latest/edge | 118 | 12 Aug 2024 | |
1.0/stable | 93 | 12 Dec 2023 | |
1.0/candidate | 93 | 22 Nov 2023 | |
1.0/beta | 93 | 22 Nov 2023 | |
1.0/edge | 93 | 22 Nov 2023 |
juju deploy grafana-k8s
Deploy Kubernetes operators easily with Juju, the Universal Operator Lifecycle Manager. Need a Kubernetes cluster? Install MicroK8s to create a full CNCF-certified Kubernetes system in under 60 seconds.
Platform:
charms.grafana_k8s.v0.grafana_auth
-
- Last updated 05 Jun 2023
- Revision Library version 0.4
grafana-auth library.
This library implements the grafana-auth relation interface, it contains the Requirer and Provider classes for handling the interface. With this library charms can to configure authentication to Grafana. The provider will set the authentication mode that it needs, and will pass the necessary configuration of that authentication mode. The requirer will consume the authentication configuration to authenticate to Grafana.
Getting Started
From a charm directory, fetch the library using charmcraft
:
charmcraft fetch-lib charms.grafana_k8s.v0.grafana_auth
You will also need to add the following library to the charm's requirements.txt
file:
- jsonschema
Provider charm
Example:
An example on how to use the AuthProvider with proxy mode using default configuration options.
The default arguments are:
charm : CharmBase
relation_name: str : grafana-auth
header_name: str : X-WEBAUTH-USER
header_property: str : username
auto_sign_up: bool : True
sync_ttl: int : None
whitelist: list[str] : None
headers: list[str] : None
headers_encoded: bool : None
enable_login_token: bool : None
from charms.grafana_k8s.v0.grafana_auth import GrafanaAuthProxyProvider
from ops.charm import CharmBase
class ExampleProviderCharm(CharmBase):
def __init__(self, *args):
super().__init__(*args)
...
self.grafana_auth_proxy_provider = GrafanaAuthProxyProvider(self)
self.framework.observe(
self.grafana_auth_proxy_provider.on.urls_available, self._on_urls_available
)
...
Values different than defaults must be set from the class constructor. The official documentation of Grafana provides further explanation on the values that can be assigned to the different variables. Example:
from charms.grafana_k8s.v0.grafana_auth import GrafanaAuthProxyProvider
from ops.charm import CharmBase
class ExampleProviderCharm(CharmBase):
def __init__(self, *args):
super().__init__(*args)
...
self.grafana_auth_proxy_provider = GrafanaAuthProxyProvider(
self,
header_property="email",
auto_sign_up=False,
whitelist=["localhost","canonical.com"],
)
self.framework.observe(
self.grafana_auth_proxy_provider.on.urls_available, self._on_urls_available
)
...
Requirer charm
Example: An example on how to use the auth requirer.
from charms.grafana_k8s.v0.grafana_auth import AuthRequirer
from ops.charm import CharmBase
class ExampleRequirerCharm(CharmBase):
def __init__(self, *args):
super().__init__(*args)
self.auth_requirer = AuthRequirer(
self,
auth_requirer=["https://example.com/"]
)
self.framework.observe(
self.auth_requirer.on.auth_conf_available, self._on_auth_conf_available
)
Index
class UrlsAvailableEvent
Description
Charm event triggered when provider charm extracts the urls from relation data. None
Methods
UrlsAvailableEvent. __init__( self , handle , urls: list , relation_id: int )
UrlsAvailableEvent. snapshot( self )
Description
Returns snapshot. None
UrlsAvailableEvent. restore( self , snapshot: dict )
Description
Restores snapshot. None
class AuthProviderCharmEvents
Description
List of events that the auth provider charm can leverage. None
class AuthProvider
Base class for authentication configuration provider classes.
Description
This class shouldn't be initialized, Its children classes define the authentication mode and configuration to be used.
Methods
AuthProvider. __init__( self , charm: CharmBase , relation_name: str , refresh_event )
class AuthConfAvailableEvent
Description
Charm Event triggered when authentication config is ready. None
Methods
AuthConfAvailableEvent. __init__( self , handle , auth: dict , relation_id: int )
AuthConfAvailableEvent. snapshot( self )
Description
Returns snapshot. None
AuthConfAvailableEvent. restore( self , snapshot: dict )
Description
Restores snapshot. None
class AuthRequirerCharmEvents
Description
List of events that the auth requirer charm can leverage. None
class AuthRequirer
Description
Authentication configuration requirer class. None
Methods
AuthRequirer. __init__( self , charm , urls , relation_name: str , refresh_event )
Constructs an authentication requirer that consumes authentication configuration.
Arguments
CharmBase: the charm which manages this object.
List[str]: a list of urls to access the service the charm needs to authenticate to.
str: name of the relation in metadata.yaml
that has the grafana_auth
interface.
an optional bound event which will be observed to re-set authentication configuration.
Description
The charm initializing this class requires authentication configuration, and it's expected to provide a list of url(s) to the service it's authenticating to. This class can be initialized as follows:
self.auth_requirer = AuthRequirer(
self,
auth_requirer=["https://example.com/"]
)
class GrafanaAuthProxyProvider
Authentication configuration provider class.
Description
Provides proxy mode for authentication to Grafana.
Methods
GrafanaAuthProxyProvider. __init__( self , charm: CharmBase , relation_name: str , refresh_event , header_name: str , header_property: str , auto_sign_up: bool , sync_ttl , whitelist , headers , headers_encoded , enable_login_token )
Constructs GrafanaAuthProxyProvider.
Arguments
CharmBase: the charm which manages this object.
str: name of the relation in metadata.yaml
that has the grafana_auth
interface.
an optional bound event which will be observed to re-set urls.
str: HTTP Header name that will contain the username or email
str: HTTP Header property, defaults to username but can also be email
.
bool: Set to true
to enable auto sign-up of users who do not exist in Grafana DB.
int: Define cache time to live in minutes.
list[str]: Limits where auth proxy requests come from by configuring a list of IP addresses.
list[str]: Optionally define more headers to sync other user attributes.
bool: Non-ASCII strings in header values are encoded using quoted-printable encoding
bool
Returns
None
Description
The charm initializing this object configures the authentication to grafana using proxy authentication mode. This object can be initialized as follows:
self.grafana_auth_proxy_provider = GrafanaAuthProxyProvider(self)