Preheat the oven to 375°. Spray a large casserole dish with vegetable spray and set aside.
Bring a pot of water to a boil and cook the macaroni according to package instructions -- just until al dente. Rinse and drain the noodles and set aside.
Heat the oil over medium heat in a large skillet add the onions, cook for 3-5 minutes until tender and translucent. Rinse the kale to remove any grit, chop the kale and add it directly to the pan (don't dry the water off of the kale - you want a little bit to steam and wilt the kale leaves) and cover tightly with a lid. Cook for 2-3 minutes, stirring occasionally until the kale has wilted. Stir in the ham and set aside.
In a large saucepan, melt 3 tablespoons of butter. Add the flour and cook, whisking constantly to combine. Stir in the salt, pepper and cayenne. When the roux begins to bubble, cook for one minute, then gradually whisk in the milk a little at a time. Stir the sauce constantly and scraping the bottom and sides of the pan so it doesn't stick. Bring to a boil over medium high heat and cook for 1 minute until sauce is thickened. Remove from heat and stir in the grated cheese until melted, set aside.
Add the noodles to the cheese sauce and stir until well coated. Add the noodle mixture to the kale mixture and mix until combined and transfer to the casserole dish.
Tear the bread into chunks and add them to the mini prep food processor. Add the butter and parsley and pulse until bread crumbs are formed. Sprinkle the bread crumbs evenly over the casserole and bake for 15-20 minutes until bubbly and browned on top. Serve.