The 20-year-old FC Seoul player, voted Asian Young Player of the Year after helping his country reach next year's World Cup finals, put pen to paper at a packed news conference in Seoul.
"I am really happy everything has been completed now. As soon as I signed a contract with Celtic I started to learn more and more about the club," Ki told Celtic's website.
"I used to watch Shunsuke Nakamura when I was young, especially when he played for Celtic and he did a great job for the club. This club is one of the biggest and best in the world and I know playing for Celtic will make me a better player."
Japan's Nakamura spent four years at Celtic, being named Scotland's Player of the Year in 2007, before joining Spanish club Espanyol this year.
The signing of Ki, who spent part of his life in Australia, is a rare piece of good news for Celtic in a season in which they have already been eliminated from European competition and are struggling to keep pace with Rangers in the title race.
Chief executive Peter Lawwell said the signing would strengthen the club's appeal in South Korea at a time when Scottish football is struggling to compete with other more lucrative European leagues.
"We are delighted to welcome Ki to Celtic and we are sure he will be a great addition to our squad," he said. "In difficult economic times for Scottish football, we are delighted to make this commitment and bring Ki to Scotland.
"In signing Ki, we are sure we will welcome a whole new audience to Celtic. However, we also welcome a new audience to Scottish football, something which we hope will positively raise the profile of the SPL and our game in general."
"This is something which proved very successful through the signing of players such as Shunsuke Nakamura previously and we are sure Scottish football will again benefit through this signing," he added.
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.