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.

¿Cómo puedo crear un usuario en ArgoCD con acceso únicamente mediante apiKey?

Tengo un script de shell en un contenedor, que necesita acceder a la API de ArgoCD.
El script solicita a la API un token, y luego utiliza este token para reiniciar una implementación.

JSON=$(jq -c -n --arg username "$USERNAME" --arg password "$PASSWORD" '$ARGS.named')
TOKEN=$(curl -k $ARGOCD-SERVER/api/v1/session -d "$JSON" | jq -r ".token")

PARAMETERS=”namespace=$NAMESPACE&resourceName=$RESOURCE-NAME&kind=Deployment&group=apps&version=v1″
curl -k -H “Authorization: Bearer $TOKEN” \
-d “\”restart\”” \
“$ARGOCD-SERVER/api/v1/applications/argocd/resource/actions?$PARAMETERS”

Esto parece funcionar solo cuando tengo la opción de ‘login’ habilitada en mi archivo argo-cd-cm.yaml.

...
data:
  admin.enabled: "false"
  accounts.<service-user>: apiKey, login
  accounts.<service-user>.enabled: "true"
...

Dado que estoy utilizando OIDC para usuarios regulares, no me gustaría deshabilitar esta opción de inicio de sesión.

¿Existe alguna forma de especificar una ‘apiKey’ para un usuario determinado en uno de los configmaps?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, puedes especificar una apiKey para un usuario dado en el argocd-cm configmap. Aquí tienes un ejemplo:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: argocd-cm
    data:
      accounts.<service-user>: apiKey
      accounts.<service-user>.enabled: "true"
      accounts.<service-user>.passwordHash: <hashed-password>
    

    En este ejemplo, especificamos una apiKey para la cuenta <service-user>, establecemos el campo enabled en true y proporcionamos una contraseña cifrada para la cuenta. Puedes generar una contraseña cifrada utilizando la utilidad htpasswd o con una herramienta en línea.

    Después de actualizar el argocd-cm configmap, puedes autenticarte en la API de ArgoCD utilizando la apiKey en lugar del username y password. Aquí tienes una versión actualizada del script que utiliza la apiKey:

    TOKEN=$(curl -k -u "<service-user>:<api-key>" $ARGOCD_SERVER/api/v1/session | jq -r ".token")
    
    PARAMETERS="namespace=$NAMESPACE&resourceName=$RESOURCE_NAME&kind=Deployment&group=apps&version=v1"
    curl -k -H "Authorization: Bearer $TOKEN" \
            -d "\"restart\"" \
            "$ARGOCD_SERVER/api/v1/applications/argocd/resource/actions?$PARAMETERS"
    

    Con esta configuración, puedes deshabilitar la opción login en el argocd-cm configmap y continuar utilizando OIDC para los usuarios regulares.

Comments are closed.