Manchester City captain Ilkay Gundogan will join Barcelona on a free transfer when his contract expires at the end of this month.