You'll need to have a self.Castbar, self.text, and self.icon. There's also self.casttime which is optional.

Here's an example
	--- Cast bar
	local castbar = CreateFrame"StatusBar"
	castbar:SetWidth(180)
	castbar:SetHeight(12)
	castbar:SetStatusBarTexture("Interface\\AddOns\\oUF_Starlon\\Armory")
	castbar:SetParent(self)
	castbar:SetPoint("LEFT", 12, 0)
	castbar:SetPoint"RIGHT"
	castbar:SetPoint("BOTTOM", 0, 6)
	castbar:SetMinMaxValues(1, 100)
	castbar:SetValue(1)
	castbar:Hide()
	self.Castbar = castbar
	
	local cbbg = castbar:CreateTexture(nil, "BORDER")
	cbbg:SetParent(self)
	cbbg:SetPoint("LEFT")
	cbbg:SetPoint("RIGHT")
	cbbg:SetPoint("BOTTOM", 0, 6)
	cbbg:SetHeight(12)
	cbbg:SetTexture(tex)
	cbbg:SetBlendMode("BLEND")
	cbbg:SetVertexColor(0.5, 0.5, 0.5)
	castbar.bg = cbbg
	
	local cbt = castbar:CreateFontString(nil, "OVERLAY")
	cbt:SetPoint("LEFT", castbar, 2, 0)
	cbt:SetWidth(180)
	cbt:SetFontObject(GameFontNormalSmall)
	cbt:SetTextColor(1,1,1)
	cbt:SetJustifyH"LEFT"
	castbar.text = cbt
	
	local cbicon = castbar:CreateTexture(nil, "ARTWORK")
	cbicon:SetPoint("LEFT", castbar, -12,0)
	cbicon:SetHeight(12)
	cbicon:SetWidth(12)
	castbar.icon = cbicon
	
	local casttime = castbar:CreateFontString(nil, "OVERLAY")
	casttime:SetPoint("RIGHT", castbar, -2, 0)
	casttime:SetPoint("LEFT", cbt, 0, 0)
	casttime:SetFontObject(GameFontNormalSmall)
	casttime:SetTextColor(1,1,1)
	casttime:SetJustifyH("RIGHT")
	castbar.casttime = casttime