Q:

Dynamically adding/removing named hosts from k8s ingress

I'm setting up a k8s cluster on GKE.  A wildcard DNS *.server.com will point to a Ingress controller.  Internally to the cluster, there will be webserver pods, each exposing a unique service.  The Ingress controller will use the server name to route to the various services. 
Servers will be created and destroyed on a nearly daily basis.  I'd like to know if there's a way to add and remove a named server from the ingress controller without editing the whole list of named servers.  

A:

It appears like you're planning to host multiple domain names on a single Load Balancer (==single Ingress resource). If not, this answer doesn't apply.
You can do this by configuring Ingress with a long list of domain names like:
spec:
  rules:
  - host: cats.server.com
    http:
      paths:
      - path: /*
        backend:
          serviceName: cats
          servicePort: 8080
  - host: dogs.server.com
    http:
      paths:
      - path: /*
        backend:
          serviceName: dogs
          servicePort: 8080
  - [...]

If that's your intention, there's no way of doing this without editing this whole list and applying it to the cluster every time.
You can build a tool to construct this manifest file, then apply the changes. The Ingress controller is smart enough that existing domains will not see a downtime if they're still on the list.
However the domains you removed from the list will also be removed from the URL Map of the load balancer and hence stop accepting the traffic.

