<p>Having set the default gce ingress controller working with ingresses resources set to respond to hostnames</p>

<p>The advantage of having a static ip (in my very current point of view) is that you never wonder where to configure your domain to, it will always remain the same ip; and on the other side you can stick as much service as you want behind it</p>

<p>I'm quite new using this gce loadbalancer, can I rely on it as I would with a static ip (meaning it'll <em>never</em> change) ? Or is there a layer to add to point a static ip to a loadbalancer ?</p>

<p>I'm asking because you can set the ip of a service resource. But I have no clue yet about doing the same with this lbc/ingress combo — assigning a static ip to an ingress ?</p>

<p>I've checked around, there seem to exist some 'forwarding' (static ip to load balancer)… but I'd really appreciate some experienced help on this one, at least to end up understanding it all clearly</p>

<p>Best</p>

<p>Finally I have a working solution. You gotta add an L4 Service using <code>loadBalancerIP: x.x.x.x</code> where you put a previously reserved static IP, and then put a selector that the deployment/RC already has, like this:</p>

<blockquote>
  <p>UPDATE [Nov-2017]: Static IP should be regional and in the same region as cluster</p>
</blockquote>

<p>Service:</p>

<pre><code>apiVersion: v1
kind: Service
metadata:
  name: nginx-ingress-svc
spec:
  type: LoadBalancer
  loadBalancerIP: 104.155.55.37  # static IP pre-allocated.
  ports:
    - port: 80
      name: http
    - port: 443
      name: https
  selector:
    k8s-app: nginx-ingress-lb
</code></pre>

<p>Controller:</p>

<pre><code>apiVersion: v1
kind: ReplicationController
metadata:
  name: nginx-ingress-rc
  labels:
    k8s-app: nginx-ingress-lb
spec:
  replicas: 1
  selector:
    k8s-app: nginx-ingress-lb
  template:
    metadata:
      labels:
        k8s-app: nginx-ingress-lb
    spec:
      containers:
      - image: eu.gcr.io/infantium-platform-20/nginx-ingress
        imagePullPolicy: Always
        name: nginx-ingress
        ports:
        - containerPort: 80
          hostPort: 80
        - containerPort: 443
          hostPort: 443
        args:
        - -nginx-configmaps=staging/nginx-staging-config
</code></pre>

<p>Solution hint was sourced from this example: <a href="https://beroux.com/english/articles/kubernetes/?part=3" rel="nofollow noreferrer">https://beroux.com/english/articles/kubernetes/?part=3</a></p>

<p>Hope this helps.</p>
