The idea is to consider your actual rig as the "deforming bones rig" and build another rig (which can have IK, constraints, drivers) and use it as "machinary rig": The MACH rig will have the joints in the exact same place of the DEF rig, but different bones orientation. Then you will put a rotation constraint (with local space-local space settings) in every joint of the DEF rig, pointing to the corrispondent bone of the MECH rig.
Set all MECH bones as "non deforming" and put them in a different layer of the armature.
You will use the MECH rig to program the animation and the DEF rig will follow exactly.
Then you can select the DEF bones layer, select all bones and - in pose mode - go to "pose - animation - bake action", checking "only selected" and "visual keys".
In this way you can export your animation that will act on you original rig, without any IK or constraint (expecially useful if you want to export to another software).
In this example I'm building a simple IK control for a leg;
This is the original rig:
Then I add 3 MACH bones with an IK chain of 2 bones, pointing to IK control bone as target:
The Upper Leg bone will copy the rot of the IK Upper, the lower Leg copies Rot of IK Lower.
In this example I've left the original foot bone without constraints and unchecking its "inherit rotation" option.
Consider that - using this tecnique - it's easy to control your original rig with a Rigify rig, with all its great features of IK-FK switching and tip toe foot controllers, just use the snap tools to build the metarig in the exact locations of your original DEF rig.
It's more complicated to explain than to build, once you get the idea everything works fine!