You need a loadbalancer, that is tipically provided by your cloud provider (which from that host name I guess it's AWS) which is very likely missing because you are also missing
ingressClassName: nginx
in spec section in your yaml file. This way the cloud load balancer can update the LoadBalancer ip address in the status section of nginx-ingress objects wich belong to that class.
The whole mechanis is in charge by the CCM (cloud controller manager), the k8s component which provides cloud specific features such as routing and service management (https://kubernetes.io/docs/concepts/architecture/cloud-controller/#service-controller)
When you have your ingress binded correctly it will show something like this:
$ kubectl get ingress
NAME CLASS HOSTS ADDRESS PORTS AGE
myingress nginx myhostname.my 10.11.12.13 80, 443 6d9h
Here is (part of) my ingress manifest, for reference:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
name: myingress
namespace: myns
spec:
ingressClassName: nginx
rules:
- host: myhostname.my
http:
paths:
- backend:
service:
name: myservice
port:
number: 8080
path: /
pathType: Prefix