Scale up as you grow — whether you're running one virtual machine or ten thousand.

From GPU-powered inference and Kubernetes to managed databases and storage, get everything you need to build, scale, and deploy intelligent applications.

This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
I have tried this tutorial and another that did not use helm to install the nginx-ingress and I can’t seem to get either of them working.
I have the two hello-kubernetes deployments up with two pods each, I have the ingress configured and seems to be configured correctly.
I have the A records in the dns pointed to the IP address of the load balancer, but I don’t get any response from either of the services.
I have change the real domain to xxxxx.
Any ideas what I’m doing wrong??
thom@vm1:/projects/tlm$ kubectl get all
NAME READY STATUS RESTARTS AGE
pod/hello-kubernetes-first-786757b576-9qw5z 1/1 Running 0 16m
pod/hello-kubernetes-first-786757b576-hwlzv 1/1 Running 0 16m
pod/hello-kubernetes-second-66cc8f5d9b-8qtvv 1/1 Running 0 15m
pod/hello-kubernetes-second-66cc8f5d9b-w824n 1/1 Running 0 15m
pod/nginx-ingress-controller-7658988787-fdql4 1/1 Running 0 15m
pod/nginx-ingress-default-backend-7f5d59d759-zgnnh 1/1 Running 0 15m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/hello-kubernetes-first ClusterIP 10.245.32.51 <none> 80/TCP 16m
service/hello-kubernetes-second ClusterIP 10.245.115.242 <none> 80/TCP 15m
service/kubernetes ClusterIP 10.245.0.1 <none> 443/TCP 5d5h
service/nginx-ingress-controller LoadBalancer 10.245.114.161 159.203.159.77 80:31383/TCP,443:32645/TCP 15m
service/nginx-ingress-default-backend ClusterIP 10.245.251.24 <none> 80/TCP 15m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/hello-kubernetes-first 2/2 2 2 16m
deployment.apps/hello-kubernetes-second 2/2 2 2 15m
deployment.apps/nginx-ingress-controller 1/1 1 1 15m
deployment.apps/nginx-ingress-default-backend 1/1 1 1 15m
NAME DESIRED CURRENT READY AGE
replicaset.apps/hello-kubernetes-first-786757b576 2 2 2 16m
replicaset.apps/hello-kubernetes-second-66cc8f5d9b 2 2 2 15m
replicaset.apps/nginx-ingress-controller-7658988787 1 1 1 15m
replicaset.apps/nginx-ingress-default-backend-7f5d59d759 1 1 1 15m
thom@vm1:~$ kubectl describe ingress
Name: hello-kubernetes-ingress
Namespace: default
Address: 159.203.159.77
Default backend: default-http-backend:80 (<none>)
Rules:
Host Path Backends
---- ---- --------
hw1.xxxxx.com
hello-kubernetes-first:80 (10.244.0.175:8080,10.244.0.234:8080)
hw2.xxxxx.com
hello-kubernetes-second:80 (10.244.0.197:8080,10.244.0.242:8080)
Annotations:
kubernetes.io/ingress.class: nginx
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal CREATE 12m nginx-ingress-controller Ingress default/hello-kubernetes-ingress
Normal UPDATE 11m nginx-ingress-controller Ingress default/hello-kubernetes-ingress
thom@vm1:~$ nslookup hw1.xxxxx.com
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
Name: hw1.xxxxx.com
Address: 159.203.159.77
thom@vm1:~$ curl hw1.xxxxx.com
curl: (52) Empty reply from server
thom@vm1:~$ wget hw1.xxxxx.com
--2019-06-05 14:50:26-- http://hw1.xxxxx.com/
Resolving hw1.xxxxx.com (hw1.xxxxx.com)... 159.203.159.77
Connecting to hw1.xxxxx.com (hw1.xxxxx.com)|159.203.159.77|:80... connected.
HTTP request sent, awaiting response... No data received.
Retrying.
McFly, have you got any idea how to get the real IP address of a connecting user routed through to a pod? All I’m getting are the IP addresses of internal Kubernetes nodes:
https://kuard.gearstone.uk - See that the Real IP is from a 10.x.x.x network?
This comment has been deleted
Firstly, Thank you so much for this documentation. It helped me setup an TLS for my apps. This documentation has become a tad bit outdated. I would like to help you to update.
https://raw.githubusercontent.com/jetstack/cert-manager/release-0.11/deploy/manifests/00-crds.yamlapiVersion: cert-manager.io/v1alpha2cert-manager.k8s.io/cluster-issuerI have a little question about the resulting networking architecture when deploying the nginx ingress this way. When following these steps, it results in a single nginx-ingress-controller running on one node. It will also launch a LoadBalancer on DO which forwards port 80 & 443 to ports 32483 & 32315 (in my case, I guess they are generated) on the nodes. My questions are now:
It would be very helpful if someone could shed some light on how the traffic flows through this system. Thanks already :)
Sorry these instructions dont work. When try to install nginx ingress I get.
Error: validation failed: unable to recognize “”: no matches for kind “Deployment” in version “extensions/v1beta1”
Actually ANY thing you try to install with Helm, I get this.
Ive setup K8s on GCP with no problems, and referenced this CGP doco for help.
For some reason, helm on DO just wont work for me.
Spent a couple of hours but cant spend anymore time. DO instructions for setting up helm seem to be out of date.
Excellent writeup, thank you
Everything was working as expected, but now I got the following email: Let’s Encrypt certificate expiration notice for domain
Do you know how can I get automatic update of Let’s Encrypt Certificate ?
How to set proxy-body-size globally? I tried doing it in configmap, but it is not working. However, annotation in loadbalancer works.
@DuskoSavic @khancox THANK YOU for making this tutorial!
It’s really helpful to me as it merges bits of information scattered over many places, into one very well-written tutorial.
However, my suggestion is to add a section where we don’t want to use LoadBalancer and replace it with controller.hostNetwork=true, it turns out this requires additional DigitalOcean doctl firewall settings which bit me. :( https://www.digitalocean.com/community/questions/how-to-customize-firewall-rules-for-managed-kubernetes-service cc @efox