reference to App Stack documentation
edit the csrf_trusted_origins
value to domain that will be used for the grafana http load balancer, and save as grafana.ini
.
#################################### Paths ####################################
[paths]
#################################### Server ####################################
[server]
[server.custom_response_headers]
#################################### GRPC Server #########################
#################################### Database ####################################
[database]
################################### Data sources #########################
[datasources]
#################################### Cache server #############################
[remote_cache]
#################################### Data proxy ###########################
[dataproxy]
#################################### Analytics ####################################
[analytics]
#################################### Security ####################################
[security]
csrf_trusted_origins = nupic-grafana.f5xc-demo.net
[security.encryption]
#################################### Snapshots ###########################
[snapshots]
#################################### Dashboards History ##################
[dashboards]
#################################### Users ###############################
[users]
[secretscan]
[service_accounts]
[auth]
#################################### Anonymous Auth ######################
[auth.anonymous]
#################################### GitHub Auth ##########################
[auth.github]
#################################### GitLab Auth #########################
[auth.gitlab]
#################################### Google Auth ##########################
[auth.google]
#################################### Grafana.com Auth ####################
[auth.grafana_com]
#################################### Azure AD OAuth #######################
[auth.azuread]
#################################### Okta OAuth #######################
[auth.okta]
#################################### Generic OAuth ##########################
[auth.generic_oauth]
#################################### Basic Auth ##########################
[auth.basic]
#################################### Auth Proxy ##########################
[auth.proxy]
#################################### Auth JWT ##########################
[auth.jwt]
#################################### Auth LDAP ##########################
[auth.ldap]
#################################### AWS ###########################
[aws]
#################################### Azure ###############################
[azure]
#################################### Role-based Access Control ###########
[rbac]
#################################### SMTP / Emailing ##########################
[smtp]
[smtp.static_headers]
[emails]
#################################### Logging ##########################
[log]
[log.console]
[log.file]
[log.syslog]
[log.frontend]
#################################### Usage Quotas ########################
[quota]
#################################### Unified Alerting ####################
[unified_alerting]
[unified_alerting.reserved_labels]
[unified_alerting.state_history]
[unified_alerting.state_history.external_labels]
[unified_alerting.upgrade]
#################################### Alerting ############################
[alerting]
#################################### Annotations #########################
[annotations]
[annotations.dashboard]
[annotations.api]
#################################### Explore #############################
[explore]
#################################### Help #############################
[help]
#################################### Profile #############################
[profile]
#################################### News #############################
[news]
#################################### Query #############################
[query]
#################################### Query History #############################
[query_history]
#################################### Internal Grafana Metrics ##########################
[metrics]
[metrics.environment_info]
[metrics.graphite]
#################################### Grafana.com integration ##########################
[grafana_com]
#################################### Distributed tracing ############
[tracing.jaeger]
[tracing.opentelemetry]
[tracing.opentelemetry.jaeger]
[tracing.opentelemetry.otlp]
#################################### External image storage ##########################
[external_image_storage]
[external_image_storage.s3]
[external_image_storage.webdav]
[external_image_storage.gcs]
[external_image_storage.azure_blob]
[external_image_storage.local]
[rendering]
[panels]
[plugins]
#################################### Grafana Live ##########################################
[live]
#################################### Grafana Image Renderer Plugin ##########################
[plugin.grafana-image-renderer]
[support_bundles]
[enterprise]
[feature_toggles]
[date_formats]
[expressions]
[geomap]
[navigation.app_sections]
[navigation.app_standalone_pages]
#################################### Secure Socks5 Datasource Proxy #####################################
[secure_socks_datasource_proxy]
################################## Feature Management ##############################################
[feature_management]
#################################### Public Dashboards #####################################
[public_dashboards]
use the previously created grafana.ini
file to create a ConfigMap
k create configmap -n grafana grafana-ini-cm --from-file=grafana.ini
save the following as grafana.yaml
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: grafana-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: grafana
name: grafana
spec:
selector:
matchLabels:
app: grafana
template:
metadata:
labels:
app: grafana
spec:
securityContext:
fsGroup: 472
supplementalGroups:
- 0
containers:
- name: grafana
image: grafana/grafana:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 3000
name: http-grafana
protocol: TCP
readinessProbe:
failureThreshold: 3
httpGet:
path: /robots.txt
port: 3000
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 2
livenessProbe:
failureThreshold: 3
initialDelaySeconds: 30
periodSeconds: 10
successThreshold: 1
tcpSocket:
port: 3000
timeoutSeconds: 1
resources:
requests:
cpu: 250m
memory: 750Mi
volumeMounts:
- name: grafana-pv
mountPath: /var/lib/grafana
- name: grafana-ini-vol
mountPath: /etc/grafana/grafana.ini
subPath: grafana.ini
volumes:
- name: grafana-pv
persistentVolumeClaim:
claimName: grafana-pvc
- name: grafana-ini-vol
configMap:
name: grafana-ini-cm
---
apiVersion: v1
kind: Service
metadata:
name: grafana
spec:
ports:
- port: 3000
protocol: TCP
targetPort: http-grafana
selector:
app: grafana
sessionAffinity: None
type: LoadBalancer
apply the grafana.yaml
manifest
kubectl apply -n grafana -f grafana.yaml
configure the HTTP load balancer with an origin pool pointing to the grafana service running App Stack.
TBD details
HTTP Load Balancer -> Routes -> New Route
- Simple Route
- ANY
- Path
- /live/api
Advanced Options -> Protocol Upgrades -> Enable Websocket -> Use Websocket
Apply Apply Save etc.