es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Grafana oauth con Gitlab

Entorno:
– Versión de Grafana: 8.2.1
Implementado en GKE utilizando kube-promethues-stack

Lo que sucedió:
Tengo un clúster de GKE donde se ejecuta GitLab y está expuesto con dos ingresos: 1 con dirección IP interna y 1 con dirección IP externa.

En un segundo clúster tengo una implementación de Grafana a la que me gustaría “conectar” con GitLab para usar GitLab como proveedor de autenticación.
Dado que la URL interna de GitLab no es accesible desde Grafana, utilizo la URL externa, pero algo parece no estar funcionando:
en los registros veo que una solicitud va desde Grafana a la dirección IP interna, y no puedo entender por qué.
Esta es la configuración de Grafana:

auth.gitlab:
enabled: true
allow_sign_up: true
scopes: read_api
auth_url: https://external-url/oauth/authorize
token_url: https://external-url/oauth/token
api_url: https://external-url/api/v4

y estos son los registros de Grafana:

t=2021-12-01T12:36:30+0000 lvl=dbug msg="OAuthLogin Got token" logger=oauth token="&{AccessToken:redacted TokenType:Bearer RefreshToken:redacted Expiry:0001-01-01 00:00:00 +0000 UTC raw: map[access_token:redacted created_at:1.637755993e+09 refresh_token:redacted scope:read_api token_type:Bearer]}"
t=2021-12-01T12:36:30+0000 lvl=dbug msg="HTTP GET https://external-url/api/v4/user: 200 OK {redacted information}
t=2021-12-01T12:36:30+0000 lvl=dbug msg="HTTP GET https://external-ip/api/v4/groups: 200 OK {redacted information}
t=2021-12-03T07:20:42+0000 lvl=eror msg=login.OAuthLogin(NewTransportWithCode) logger=context userId=0 orgId=0 uname= error="oauth2: cannot fetch token: 400 Bad Request\nResponse: {\"error\":\"invalid_grant\",\"error_description\":\"The provided authorization grant is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client.\"}"
t=2021-12-03T07:20:42+0000 lvl=eror msg="Request Completed" logger=context userId=0 orgId=0 uname= method=GET path=/login/gitlab status=500 remote_addr=10.175.1.36 time_ms=58 size=1365 referer=https://EXTERNAL/

t=2021-12-01T12:38:42+0000 lvl=eror msg="Error getting groups from GitLab API" logger=oauth.gitlab err="Get \"https://INTERNAL-URL/api/v4/groups?order_by=name&owned=false&page=2&per_page=20&sort=asc&statistics=false&with_custom_attributes=false\": dial tcp internal-ip:443: connect: connection timed out"
t=2021-12-01T12:38:42+0000 lvl=dbug msg="OAuthLogin got user info" logger=oauth userInfo="&{redacted information}

¿Alguien puede ayudarme con esto?
Gracias de antemano

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Solución

    Basándose en los registros proporcionados, parece que la configuración de autenticación de GitLab en Grafana es correcta. Sin embargo, el problema parece estar en la configuración de la red.

    Los registros indican que Grafana no puede llegar a la dirección IP interna de GitLab. Esto se debe probablemente a que la dirección IP interna no se expone externamente y solo es accesible dentro de la misma red o agrupación.

    Para solucionar este problema, puedes hacer lo siguiente:

    1. Actualizar la configuración de red de las agrupaciones para permitir la comunicación entre las dos direcciones IP internas. Esto puede implicar la configuración de una VPN, la configuración de cortafuegos u otros cambios a nivel de red. Sin embargo, esta no puede ser la solución ideal, especialmente si quieres mantener la dirección IP interna privada y no expuesta externamente.
    2. Usar un equilibrador de carga o un servidor proxy inverso para exponer la dirección IP interna externamente. Puedes configurar el equilibrador de carga o el servidor proxy inverso para enrutar las solicitudes entrantes a la dirección IP interna de GitLab. De esta manera, Grafana puede acceder a GitLab utilizando la URL externa, que se enruta a la dirección IP interna de GitLab.

    Una vez que hayas actualizado la configuración de red, puedes probar la conectividad entre Grafana y GitLab. Si todo está correctamente configurado, Grafana debería ser capaz de autenticarse con GitLab y acceder a la información de usuario y grupo.

Comments are closed.