Kubernetes: exposing NGINX Ingress with Let's Encrypt

12/17/2018

I'm trying to set up the LetsEncrypt SSL ceritficate using cert manager. I have successfully deployed Cert Manager by Helm and stuck at configuring ingress.yaml.

$ sudo kubectl create --edit -f https://raw.githubusercontent.com/jetstack/cert-manager/master/docs/tutorials/quick-start/example/ingress.yaml

I've got this:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
  name: kuard
  namespace: default
spec:
  rules:
  - host: example.example.com
    http:
      paths:
      - backend:
          serviceName: kuard
          servicePort: 80
        path: /
  tls:
  - hosts:
    - example.example.com
    secretName: quickstart-example-tls

So I just replaced hosts from example.com to my external IP and got this:

A copy of your changes has been stored to "/tmp/kubectl-edit-qx3kw.yaml"
The Ingress "kuard" is invalid: spec.rules[0].host: Invalid value: must be a DNS name, not an IP address

Is there any way to set it up using just my external IP? I have't yet chosen the domain name for my app and want to use just plain IP for demoing and playing around.

-- Igniter
kubectl
kubernetes
kubernetes-ingress
lets-encrypt
nginx

1 Answer

12/17/2018

No. You cannot use an IP address for the Ingress. To use an IP address, you'd need to configure it to point to your worker nodes and create a NodePort Service, which will allow you to browse to http://IP:NODEPORT.

-- Rawkode
Source: StackOverflow