On doing K8s updates on GCP we lose the link between the nodes and their external IPs. That causes some issues afterwards on K8s apps communicating with other clouds secured by firewalls.
I have to assign them manually afterwards again. Why is this? Can I prevent this somehow?
First of all, ensure you have set your IP to static in the cloud console -> Networking -> External IP addresses.
Once it's set to static you can assign your Service to the static IP using the loadBalancerIP
property. Note that your Service should be a LoadBalancer type. See https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer for more information.
If you don't require a Loadbalancer you could also try out https://kubernetes.io/docs/concepts/services-networking/service/#external-ips