Marwin Gonzalez, who played every position for the Astros in 2018 except pitcher and catcher, has reached a two-year, $21 million deal with the Twins, sources told ESPN.