<p>Following the tutorial for Kubernetes (in my case on GKE) <a href="https://docs.traefik.io/v2.0/user-guides/crd-acme/" rel="nofollow noreferrer">https://docs.traefik.io/v2.0/user-guides/crd-acme/</a> I am stuck on how to assign the global static IP (GKE wants a forwarding rule). Am I missing something (e.g. adding another ingress)? I understand that annotations are not possible in the IngressRoute. So how would I assign the global reserved IP?</p>

<p>The answer to question 3 on this Q&amp;A online meetup (<a href="https://gist.github.com/dduportal/13874113cf5fa1d0901655e3367c31e5" rel="nofollow noreferrer">https://gist.github.com/dduportal/13874113cf5fa1d0901655e3367c31e5</a>) mentions that "classic ingress" is also possible with version 2.x. Does this mean I can set up traefik as in 1.x (like this: <a href="https://docs.traefik.io/user-guide/kubernetes/" rel="nofollow noreferrer">https://docs.traefik.io/user-guide/kubernetes/</a>) use 2.x configuration and no need for CRD?</p>

chriscross
<p>You do it like with every other Ingress Controller.</p>

<p>A good step-by-step instructions on how to assign a Static IP address to an Ingress are given on nginx-ingress`s website.</p>

<p>Follow the section called '<a href="https://kubernetes.github.io/ingress-nginx/examples/static-ip/#promote-ephemeral-to-static-ip" rel="nofollow noreferrer">Promote ephemeral to static IP</a>' </p>

<p>If to follow Traefik 2.0's <a href="https://github.com/containous/traefik/tree/master/docs/content/user-guides/crd-acme" rel="nofollow noreferrer">exemplary</a> manifests files made for Kubernetes, once you patch your Traefik's K8S Service (with kubectl patch traefik...), you can verify if IngressRoute's took effect with following command:</p>

<pre><code> curl -i http://&lt;static-ip-address&gt;:8000/notls -H 'Host: your.domain.com'
</code></pre>

<p><strong>Update</strong></p>

<pre><code>apiVersion: v1
kind: Service
metadata:
  name: traefik
spec:
  ports:
    - protocol: TCP
      name: web
      port: 8000
    - protocol: TCP
      name: admin
      port: 8080
    - protocol: TCP
      name: websecure
      port: 4443
  selector:
    app: traefik
  type: LoadBalancer
</code></pre>

<p>and patch it with:</p>

<pre><code>kubectl patch svc traefik -p '{"spec": {"loadBalancerIP": "&lt;your_static_ip&gt;"}}'
</code></pre>
