Ingress-Controller and Ingress Confusion

I am following this Azure Kubernetes Ingress tutorial without success.

I am trying to build everything using the yaml file and this tutorial focus on the kubectl so maybe I am miss interpreting something.

My understanding is that there are two parts that must be created: Ingress-Controller and Ingress.

The Ingress-Controller seems not to be something to be created by Helm (yaml file).

If I use:

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm install nginx-ingress ingress-nginx/ingress-nginx 

It installs and I see the controller but without an external IP assigned.

If I enabled the yaml for the Ingress in the Helm during the applying of the configuration there is this error message:

Error: UPGRADE FAILED: failed to create resource: Internal error occurred: failed calling webhook "validate.nginx.ingress.kubernetes.io": Post "[https://realtimepixel-ingress-ingress-nginx-controller-admission.realtimepixel-prod.svc:443/networking/v1/ingresses?timeout=10s](https://realtimepixel-ingress-ingress-nginx-controller-admission.realtimepixel-prod.svc/networking/v1/ingresses?timeout=10s)": service "realtimepixel-ingress-ingress-nginx-controller-admission" not found

The realtimepixel-ingress-ingress-nginx-controller-admission does not exist because the helm install nginx-ingress created one but without the prefix realtimepixel which is the namespace. I do not see where in the Ingress (see full template of the ingress here)

If someone has a very basic and simple instructions to apply an Ingress-Controller and Ingress I would really appreciate it. Also, if I can get confirmation how people create/manage Ingress-Controller it would help me since it seems to be different from other kind of resources (pod/service/deployment,etc)

Cluster information:

Kubernetes version:
Cloud being used: Azure
Installation method: Helm
Host OS:
CNI and version:
CRI and version: