top of page

Cómo usar GitHub como SSO en ArgoCD en 3 pasos

  • victoriagimenez5
  • 22 jul
  • 3 Min. de lectura

creating-the-necessary-permissions-with-ArgoCD-and-Github

Podemos optimizar el acceso a ArgoCD aprovechando las integraciones que la herramienta ya proporciona. Utilizando los usuarios y grupos de tu organización en GitHub, podés simplificar la configuración y enfocarte únicamente en asignar los permisos adecuados.


Además, esta estrategia garantiza que tu dashboard de ArgoCD sea seguro, fácil de administrar y bajo control.

Veamos cómo implementarlo paso a paso.


Paso 1: Registrar una aplicación OAuth en GitHub


Primero, necesitamos registrar una nueva aplicación OAuth dentro de la organización en GitHub.


  • Ingresá a la configuración de tu organización.

  • En el menú lateral, al final, hacé clic en Developer settings > OAuth Apps.

    ""
  • En la ventana, verás las aplicaciones ya creadas (si las hubiera) y el botón para crear una nueva. Hacé clic en “New OAuth App”.


""

En el formulario:


Haz clic en "Register application".

""

Esto te devolverá un Client ID y generará un Client Secret. ¡Guardalos bien! Los vas a necesitar en el siguiente paso.

""

Paso 2: Integrar el login de GitHub en ArgoCD

En este paso, vamos a modificar el ConfigMap llamado argocd-cm que se genera al instalar ArgoCD en el clúster de Kubernetes. En este ejemplo, asumimos que ArgoCD está instalado en el namespace argocd.

Ejecutá:

kubectl edit configmap argocd-cm -n argocd

Dentro del bloque data, agregá o modificá lo siguiente:


data:

  url: https://argocd.example.com
  dex.config: |
    connectors:
      - type: github
        id: github
        name: GitHub
        config:
          clientID: <CLIENTID>
          clientSecret:<CLIENTSECRET>
          orgs:
          - name: <ORG_NAME>

Reemplazá url, clientID, clientSecret y el nombre de la organización con tus datos reales.


" "

Recomendado: Deshabilitar el usuario admin por defecto, ya que la gestión de accesos ahora se hará desde GitHub.

Una vez aplicado, el dashboard mostrará la opción para iniciar sesión con GitHub.


Paso 3: Asignar permisos a los grupos


Ahora queda asignar los permisos a cada grupo de GitHub. Para eso, debemos conocer:


  • Recursos disponibles: clusters, projects, applications, applicationsets, repositories, certificates, accounts, gpgkeys, logs, exec, extensions.

  • Acciones permitidas: get, create, update, delete, sync, override, action/<group/kind/action-name>.



¿Cómo se crea un rol?

ArgoCD trabaja con roles. Primero definimos políticas para un rol, y luego ese rol se asocia a un grupo de GitHub. Un grupo puede tener múltiples roles, ya que el sistema parte de una política de "deny all".


Editamos el ConfigMap llamado argocd-rbac-cm:

kubectl edit configmap argocd-cm -n argocd

Y dentro del bloque data:


data:
   policy.csv: |
p, <role/user/group>, <resource>, <action>, <object>
p, <role/user/group>, <resource>, <action>, <appproject>/<object>
p, role:app-developer-role, applications, get, /, allow
p, role:app-developer-role, applications, update, /, allow

g, <ORG_NAME>:<GIT_GROUP>, role:app-developer-role

Esto crea el rol app-dev con permisos sobre todas las aplicaciones, y lo asocia al grupo EquipoDev de GitHub dentro de la organización ORG.


data:

   policy.csv: |│

     p, role:default, projects, get, *, allow
     p, role:default, applications, get, /, allow
     p, role:default, logs, get, *, allow
     p, role:powerdevelopers, projects, get, *, allow
     p, role:powerdevelopers, projects, create, *, allow
     p, role:powerdevelopers, projects, sync, *, allow
     p, role:powerdevelopers, applications, get, /, allow
     p, role:powerdevelopers, applications, create, /, allow
     p, role:powerdevelopers, applications, update, /, allow
     p, role:powerdevelopers, applications, sync, /, allow
     p, role:powerdevelopers, applications, delete, /, allow
     p, role:powerdevelopers, applications, override, /, allow
     p, role:powerdevelopers, repositories, get, *, allow
     p, role:powerdevelopers, repositories, create, *, allow
     p, role:powerdevelopers, repositories, update, *, allow
     p, role:powerdevelopers, repositories, delete, *, allow
     p, role:powerdevelopers, certificates, get, *, allow
     p, role:powerdevelopers, certificates, create, *, allow
     p, role:powerdevelopers, certificates, update, *, allow
     p, role:powerdevelopers, certificates, delete, *, allow
     p, role:developers, project, sync, *, allow
     p, role:developers, applications, update, /, allow
     p, role:developers, applications, sync, /, allow
     p, role:developers, applications, override, /, allow

     g, ORG:Developers, role:developers
     g, ORG:PowerDev, role:powerdevelopers
     g, ORG:Admins, role:admin

¡Listo! GitHub y ArgoCD conectados

Ahora que tenés GitHub como proveedor de identidad para ArgoCD, podés gestionar accesos de forma centralizada, segura y escalable. Es momento de asignar a tus equipos los permisos que necesitan


fabricio-blas



Fabricio Blas

Cloud Engineer

Teracloud

 
 
bottom of page