CĂłmo desplegar ArgoCD en EKS con SSO sin gestionar un solo pod

DespuĂ©s de bastante tiempo entre eventos, organizaciones y mucho trabajo, volvemos por aquĂ­ para hablar de uno de los Ășltimos “avances” que AWS ha presentado.

Con todo el tema de la IA, parece que solo estemos hablando de modelos, agentes y prompts. Pero nada mĂĄs lejos de la realidad, seguimos gestionando muchĂ­sima infraestructura, y AWS sigue lanzando cosas muy interesantes para simplificar esa parte. (menos mal, algĂșn anuncio no relacionado con IA tambiĂ©n nos gusta escuchar).

Sin intentar que esto tuviese algĂșn sentido, hemos terminado cerrando una rueda interesante alrededor de EKS, ArgoCD y IAM Identity Center en nuestros posts de #awstwins. La verdad es que en este post he tirado un poco de clickbait, a lo influencer, pero en realidad volvemos al barro y con lo de siempre: Kubernetes y automatizaciĂłn.

En concreto, vamos a hablar de EKS Capabilities.

En posts anteriores como el de acontinuaciĂłn instalĂĄbamos y gestionĂĄbamos Argo CD nosotros. Hoy toca darle otra vuelta. Que para eso estamos, Âżno?

argocd&terraform


¿Qué es EKS Capabilities?

EKS Capabilities es una nueva feature de AWS que permite utilizar herramientas del ecosistema Kubernetes gestionadas directamente por AWS.

Es decir,no tienes que instalar nada, mantener nada ni preocuparte de por qué algo estå caído.

BĂĄsicamente nuestro estilo de vida, no?

Actualmente hay 3 capabilities disponibles:

  • ArgoCD
    De este ya hemos hablado mucho en diferentes posts y es el que vamos a usar puesto que cerramos el circulo. Incluiremos la parte del SSO.

  • KRO (Kubernetes Resource Orchestrator)
    Permite crear recursos de forma declarativa agrupando varios recursos en uno solo.

  • ACK (AWS Controllers for Kubernetes)
    Permite gestionar recursos de AWS directamente desde Kubernetes.

ÂżLa parte interesante de todo esto?

Estas capabilities operan en el control plane de EKS, no en tus nodos ni en tu cuenta.
Resultado: menos componentes que mantener y menos cosas que se rompan.


¿Qué hemos desplegado?

Para ir rĂĄpido y evitar mantener algo "custom", hemos hecho lo de siempre: usar mĂłdulos de la community.

En este caso:

  • Una VPC
  • Un cluster EKS
  • Karpenter para el autoscaling de nodos (no entraremos en detalle aquĂ­)

Si querĂ©is ver mĂĄs sobre Karpenter, mi hermano ya publicĂł un post sobre esto, que siempre podĂ©is dejar un Like!💕:

karpenter

Volvamos a "Capabilities" que es lo que nos interesa. Tal y como decíamos, para esta PoC, podéis encontrar el módulo de EKS Capabilities aquí con los ejemplos, ya sabéis "Copy & Paste" o si no, siempre podéis tirar de IA para un código råpido.

terraform-aws-modules


SSO con IAM Identity Center

Una de las partes mĂĄs interesantes de usar EKS Capabilities con ArgoCD es que el SSO no requiere ninguna integraciĂłn adicional.

No hay que tocar:

  • ConfigMap de ArgoCD
  • argocd-cm
  • configuraciĂłn de OIDC

Simplemente le dices a AWS qué grupos de IAM Identity Center corresponden a qué roles dentro de ArgoCD, y a funcionar.

Ejemplo en Terraform:

module "argocd_eks_capability" {
  source = "terraform-aws-modules/eks/aws//modules/capability"

  type         = "ARGOCD"
  cluster_name = module.eks.cluster_name

  configuration = {
    argo_cd = {
      aws_idc = {
        idc_instance_arn = one(data.aws_ssoadmin_instances.this.arns)
      }

      namespace = "argocd"

      rbac_role_mapping = [{
        role = "ADMIN"

        identity = [{
          id   = data.aws_identitystore_group.aws_administrator.group_id
          type = "SSO_GROUP"
        }]
      }]
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

En mi caso, para ir rĂĄpido con la PoC:

  • He usado mi grupo Admin
  • He desplegado el cluster en la misma cuenta donde tengo IAM Identity Center

Si queréis hacerlo cross-account, tendrås que crear un Role que permita a Terraform leer los grupos de Identity Center.

Dicho esto, vamos a la prĂĄctica de cĂłmo quedarĂ­a esta parte.

Una vez desplegado nuestro cluster con todos los requisitos, podemos observar que tenemos argocd funcionando en nuestra pestaña de Capabilities.

Capabilities

Nos conectamos a nuestro endpoint (Argo API endpoint).

Endpoint

Como hemos comentado, la integración con SSO es super råpida, solo indica qué roles quieres usar y el mapping y listo!
SSO-boton

Introducimos nuestras credenciales de AWS.
Credenciales

Y ya tenemos argo cd funcionando.

Argo-UI

Lo mejor de todo

Cuando lances el cĂłdigo:

  • Se desplegarĂĄ ArgoCD como capability
  • TendrĂĄs SSO funcionando
  • PodrĂĄs loguearte directamente
  • Y empezar a desplegar tus aplicaciones

Y ahora viene lo mejor:

kubectl get pods -A
Enter fullscreen mode Exit fullscreen mode

kubectl

No verĂĄs ni un solo pod de ArgoCD.

Porque ArgoCD estĂĄ ejecutĂĄndose en el control plane de EKS, no dentro de tu cluster.

Llevamos varios posts hablando de ArgoCD, cual es el mejor diseño, como instalarlo, como configurarlo, como gestionarlo y de repente llega un update de AWS y nos dice y si lo hago por ti? Encima con SSO de serie que mĂĄs podemos pedir? 😁

Cabe remarcar como siempre que el objetivo es simplemente una PoC, para PROD deberíamos de revisar el tema de dominio privado, clusters adicionales, AppProjects por equipo... pero de eso ya hemos hablado en varias otros posts que podéis recuperar desde #AWTwinS.

Como siempre, cualquier feedback es bienvenido! o por aquĂ­, por LinkedIn o donde podĂĄis encontrarnos! Nos vemos por los eventos!