<p>I have a simple meteor app deployed on kubernetes. I associated an external IP address with the server, so that it's accessible from within the cluster. Now, I am up to exposing it to the internet and securing it (using HTTPS protocol). Can anyone give simple instructions for this section?</p>

<p>In my opinion <a href="https://github.com/jetstack/kube-lego" rel="noreferrer">kube-lego</a> is the best solution for GKE. See why:</p>

<ul>
<li>Uses <a href="https://letsencrypt.org/" rel="noreferrer">Let's Encrypt</a> as a CA</li>
<li>Fully automated enrollment and renewals</li>
<li>Minimal configuration in a single ConfigMap object</li>
<li>Works with <a href="https://github.com/nginxinc/kubernetes-ingress" rel="noreferrer">nginx-ingress-controller</a> (see <a href="https://github.com/jetstack/kube-lego/tree/master/examples/nginx" rel="noreferrer">example</a>)</li>
<li>Works with <a href="https://cloud.google.com/container-engine/docs/tutorials/http-balancer" rel="noreferrer">GKE's HTTP Load Balancer</a> (see <a href="https://github.com/jetstack/kube-lego/tree/master/examples/gce" rel="noreferrer">example</a>)</li>
<li>Multiple domains fully supported, including virtual hosting multiple https sites on one IP (with nginx-ingress-controller's SNI support)</li>
</ul>

<p>Example configuration (that's it!):
</p>

<pre><code>kind: ConfigMap
apiVersion: v1
metadata:
  name: kube-lego
  namespace: kube-lego
data:
  lego.email: "your@email"
  lego.url: "https://acme-v01.api.letsencrypt.org/directory"
</code></pre>

<p>Example Ingress (you can create more of these):
</p>

<pre><code>apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: site1
  annotations:
    # remove next line if not using nginx-ingress-controller
    kubernetes.io/ingress.class: "nginx"
    # next line enable kube-lego for this Ingress
    kubernetes.io/tls-acme: "true"
spec:
  tls:
  - hosts:
    - site1.com
    - www.site1.com
    - site2.com
    - www.site2.com
    secretName: site12-tls
  rules:
    ...
</code></pre>
