fix(prometheus): fix grafana auth

This commit is contained in:
Masaki Yatsu
2025-11-23 16:09:04 +09:00
parent cc77b4a5e0
commit 9d839cf8c7
2 changed files with 21 additions and 9 deletions

View File

@@ -6,7 +6,7 @@ export GRAFANA_HOST := env("GRAFANA_HOST", "")
export PROMETHEUS_HOST := env("PROMETHEUS_HOST", "") export PROMETHEUS_HOST := env("PROMETHEUS_HOST", "")
export ALERTMANAGER_HOST := env("ALERTMANAGER_HOST", "") export ALERTMANAGER_HOST := env("ALERTMANAGER_HOST", "")
export GRAFANA_ADMIN_PASSWORD := env("GRAFANA_ADMIN_PASSWORD", "") export GRAFANA_ADMIN_PASSWORD := env("GRAFANA_ADMIN_PASSWORD", "")
export GRAFANA_OIDC_ENABLED := env("GRAFANA_OIDC_ENABLED", "false") export GRAFANA_OIDC_ENABLED := env("GRAFANA_OIDC_ENABLED", "")
export GRAFANA_OIDC_CLIENT_SECRET := env("GRAFANA_OIDC_CLIENT_SECRET", "") export GRAFANA_OIDC_CLIENT_SECRET := env("GRAFANA_OIDC_CLIENT_SECRET", "")
export KEYCLOAK_NAMESPACE := env("KEYCLOAK_NAMESPACE", "keycloak") export KEYCLOAK_NAMESPACE := env("KEYCLOAK_NAMESPACE", "keycloak")
export KEYCLOAK_REALM := env("KEYCLOAK_REALM", "") export KEYCLOAK_REALM := env("KEYCLOAK_REALM", "")
@@ -116,9 +116,6 @@ install: check-env
just create-credentials just create-credentials
fi fi
export GRAFANA_OIDC_ENABLED="${GRAFANA_OIDC_ENABLED:-false}"
export GRAFANA_OIDC_CLIENT_SECRET="${GRAFANA_OIDC_CLIENT_SECRET:-}"
gomplate -f values.gomplate.yaml -o values.yaml gomplate -f values.gomplate.yaml -o values.yaml
helm upgrade --cleanup-on-fail --install kube-prometheus-stack \ helm upgrade --cleanup-on-fail --install kube-prometheus-stack \
prometheus-community/kube-prometheus-stack \ prometheus-community/kube-prometheus-stack \
@@ -146,8 +143,17 @@ install: check-env
echo "Grafana admin user: admin" echo "Grafana admin user: admin"
echo "Grafana admin password: ${admin_password}" echo "Grafana admin password: ${admin_password}"
echo "" echo ""
echo "To setup Keycloak OIDC authentication for Grafana:"
echo " just prometheus::setup-oidc" if [ -z "${GRAFANA_OIDC_ENABLED}" ]; then
if gum confirm "Setup Keycloak OIDC authentication for Grafana?"; then
GRAFANA_OIDC_ENABLED="true"
else
GRAFANA_OIDC_ENABLED="false"
fi
fi
if [ "${GRAFANA_OIDC_ENABLED}" = "true" ]; then
just setup-oidc
fi
# Uninstall kube-prometheus-stack # Uninstall kube-prometheus-stack
uninstall: uninstall:
@@ -179,11 +185,13 @@ setup-oidc:
just keycloak::delete-client "${KEYCLOAK_REALM}" "grafana" || true just keycloak::delete-client "${KEYCLOAK_REALM}" "grafana" || true
oidc_client_secret=$(just utils::random-password) oidc_client_secret=$(just utils::random-password)
redirect_urls="https://${GRAFANA_HOST}/login/generic_oauth" redirect_urls="https://${GRAFANA_HOST}/login/generic_oauth"
post_logout_redirect_urls="https://${GRAFANA_HOST}/login"
just keycloak::create-client \ just keycloak::create-client \
realm="${KEYCLOAK_REALM}" \ realm="${KEYCLOAK_REALM}" \
client_id="grafana" \ client_id="grafana" \
redirect_url="${redirect_urls}" \ redirect_url="${redirect_urls}" \
client_secret="${oidc_client_secret}" client_secret="${oidc_client_secret}" \
post_logout_redirect_uris="${post_logout_redirect_urls}"
just keycloak::add-groups-mapper "grafana" just keycloak::add-groups-mapper "grafana"
echo "✓ Keycloak client 'grafana' created" echo "✓ Keycloak client 'grafana' created"
@@ -228,6 +236,10 @@ setup-oidc:
--wait \ --wait \
-f values.yaml -f values.yaml
# Restart Grafana to ensure new OIDC configuration is loaded
kubectl rollout restart deployment -n ${PROMETHEUS_NAMESPACE} -l app.kubernetes.io/name=grafana
kubectl rollout status deployment -n ${PROMETHEUS_NAMESPACE} -l app.kubernetes.io/name=grafana --timeout=120s
echo "" echo ""
echo "=== OIDC Setup Complete ===" echo "=== OIDC Setup Complete ==="
echo "Grafana is now configured to use Keycloak for authentication" echo "Grafana is now configured to use Keycloak for authentication"

View File

@@ -30,7 +30,7 @@ grafana:
userKey: admin-user userKey: admin-user
passwordKey: admin-password passwordKey: admin-password
{{- if .Env.GRAFANA_OIDC_ENABLED }} {{- if eq .Env.GRAFANA_OIDC_ENABLED "true" }}
# Reference OIDC client secret from Kubernetes Secret # Reference OIDC client secret from Kubernetes Secret
envValueFrom: envValueFrom:
GRAFANA_OIDC_CLIENT_SECRET: GRAFANA_OIDC_CLIENT_SECRET:
@@ -54,7 +54,7 @@ grafana:
grafana.ini: grafana.ini:
server: server:
root_url: https://{{ .Env.GRAFANA_HOST }} root_url: https://{{ .Env.GRAFANA_HOST }}
{{- if .Env.GRAFANA_OIDC_ENABLED }} {{- if eq .Env.GRAFANA_OIDC_ENABLED "true" }}
auth.generic_oauth: auth.generic_oauth:
enabled: true enabled: true
name: Keycloak name: Keycloak