functions/grafana/InstallGrafana.ps1

<#
.SYNOPSIS
InstallGrafana
 
.DESCRIPTION
InstallGrafana
 
.INPUTS
InstallGrafana - The name of InstallGrafana
 
.OUTPUTS
None
 
.EXAMPLE
InstallGrafana
 
.EXAMPLE
InstallGrafana
 
 
#>

function InstallGrafana()
{
    [CmdletBinding()]
    param
    (
    )

    Write-Verbose 'InstallGrafana: Starting'
    Set-StrictMode -Version latest
    $ErrorActionPreference = 'Stop'

    # https://github.com/helm/charts/tree/master/stable/prometheus-operator

    DeleteHelmPackage -package prometheus-operator

    kubectl delete crd prometheuses.monitoring.coreos.com --ignore-not-found
    kubectl delete crd prometheusrules.monitoring.coreos.com --ignore-not-found
    kubectl delete crd servicemonitors.monitoring.coreos.com --ignore-not-found
    kubectl delete crd alertmanagers.monitoring.coreos.com --ignore-not-found

     helm install stable/prometheus-operator `
        --name prometheus-operator `
        --namespace monitoring

        # --set-string "grafana\.ini".server.root_url='"http://hcut.healthcatalyst.net/grafana"'

        # prometheus.prometheusSpec.routePrefix
    # set subpath: https://github.com/helm/charts/issues/6264

    # {"apiVersion":"extensions/v1beta1","kind":"Ingress","metadata":{"name":"grafana-ingress-path","namespace":"monitoring","labels":{"expose":"external"},"annotations":{"kubernetes.io/ingress.class":"nginx","nginx.ingress.kubernetes.io/add-base-url":"true","nginx.ingress.kubernetes.io/rewrite-target":"/"}},"spec":{"rules":[{"http":{"paths":[{"path":"/grafana","backend":{"serviceName":"prometheus-operator-grafana","servicePort":80}}]}}]}}

    # --set-string grafana.ingress.annotations."kubernetes\.io/ingress.class"='"nginx"'

    # https://akomljen.com/get-kubernetes-cluster-metrics-with-prometheus-in-5-minutes/

    # oauth proxy
    # https://akomljen.com/protect-kubernetes-external-endpoints-with-oauth2-proxy/

    Write-Verbose 'InstallGrafana: Done'
}

Export-ModuleMember -Function 'InstallGrafana'