What you need is already there. All services may be referenced by it's name. There is an internal DNS service for that.
Suppose you've created 2 microservices: ms1 and ms2. In order to ms1 connect to ms2, just use the hostname as the same name for the service, i.e. "ms2".
Regarding deployments, "templates" are exactly what you are looking for. Templates have "parameters", where one can input data. Those values can be used inside other objects of the templates (a templates is basically a list of objects to be built, plus optional parameters). Those parameters can be referenced like shell variables.
For example, see how this parameter is being used here.
You may what to start from an existing template from your own installation. Just "oc get templates -n openshift", then "oc export templates/<name> -n openshift".