Preheat your oven to 350°F (175°C). Line a roasting pan with a rack and set aside.
Place the turkey breast on a cutting board, pat it dry with paper towels, and set it aside.
In a medium bowl, combine softened butter, shallot, garlic, thyme, sage, rosemary, garlic powder, salt, and pepper. Mix until a smooth herb butter forms.
Using clean hands or a spoon, gently loosen the skin from the turkey breast without tearing it. Spread about half of the herb butter underneath the skin, then spread the remaining butter all over the top of the skin and sides of the turkey breast.
Place the turkey breast, skin-side up, on the rack in the roasting pan.
Roast the turkey for about 20 minutes per pound, or until the internal temperature in the thickest part of the breast reaches 160°F. This should take approximately 1 hour 15 minutes to 1 hour 30 minutes, depending on the exact size. Begin checking at the 1-hour mark.
If the skin begins to darken too quickly, loosely tent the turkey with aluminum foil.
Once done, remove the turkey from the oven and let it rest for at least 15 minutes. The temperature will rise to 165°F as it rests.
While the turkey rests, make the gravy. Pour the turkey drippings from the roasting pan into a measuring cup. Skim off any excess fat if desired, then measure out ¼ cup of the drippings. (You can use more of the drippings, just adjust the flour amount as needed).
In a medium saucepan over medium heat, add the drippings and sprinkle in the flour. Whisk continuously to form a smooth roux and cook for about 2 minutes.
Gradually whisk in the turkey stock, making sure there are no lumps. Continue whisking until the mixture is smooth.
Bring the gravy to a simmer and cook for 5 to 8 minutes, or until thickened to your liking. Taste and adjust seasoning if needed.
Carve the turkey and serve with the warm gravy.