The Uruguay international joins Atletico Madrid on a free transfer as his contract with Porto is set to expire.
Rodriguez came close to leaving Porto in January after having fallen out with Vitor Pereira.
The 26-year-old has become Atletico Madrid’s first summer signing.