I make mine out of landscape block. For larger beds I use
keystone legacy block. It has great drainage and you can reconfigure it if necessary. For smaller beds I use narrow cinder block with rebar - BUT I do not put cement grout between the blocks because I want drainage. I do fill them with mortar so they are sturdy.