The 23-year-old forward was a restricted free agent. He scored 22 points (11 goals, 11 assists) in 51 games for Calgary last season.
"My first time going through it (free agency), but I knew it was going to get done," Dube said. "It was pretty easy for me being here, being around the guys. … I'm really happy to get it done before (camp), now I can kind of focus, take that next step. It's weighing on you a little bit over the offseason.
"Have a little bit longer term, feel a part of it, really dig in now and look to make those the best three years and help the team win and be a big part of it."
Dube, who sustained an upper-body injury in the Flames' final game of the regular season on May 19, said he is fully healthy.
"I nursed it a lot more knowing I didn't have to play," he said. "The season was done so I felt like that benefitted me a lot having that time knowing I didn't have to do anything. … Probably best time for it to happen in the last game of the year, just to get full recovery and not have to push anything and just get 100 percent recovery."
Selected by the Flames in the second round (No. 56) of the 2016 NHL Draft, Dube has scored 43 points (18 goals, 25 assists) in 121 regular-season NHL games and five points (four goals, one assist) in 10 Stanley Cup Playoff games.
"Don't really like to do any personal goals throughout the year," Dube said. "It's just a lot of pressure on yourself. …You want to be part of a winning team and whatever direction you have to pull in to make that happen is a goal leading into the summer."