GoogleCloudPlatform / k8s-multicluster-ingress

kubemci: Command line tool to configure L7 load balancers using multiple kubernetes clusters
Apache License 2.0
376 stars 68 forks source link

Store LoadBalancerStatus on a resource other than forwarding rule #145

Closed nikhiljindal closed 6 years ago

nikhiljindal commented 6 years ago

Problem: We cant support kubemci remove-clusters without downtime. This is because we need to update LoadBalancerStatus which is stored as description on ForwardingRule. But Forwarding rule does not have an update API. We need to delete and recreate it resulting in user visible downtime. Solution: Store LoadBalancerStatus on some other resource that supports update API :)

Longer version: Today we store LoadBalancerStatus on forwarding rule. We store this status to be able to surface useful information when users run kubemci list and kubemci get-status. While implementing kubemci remove-clusters, I realized that there is no UpdateForwardingRule API. We need to delete and recreate it to be able to update the description field (link to code) This results in downtime for the user. The whole point of adding a remove-clusters command was to let users remove an existing MCI from some clusters without resulting in user facing downtime.

cc @csbell @G-Harmon @mdelio

nikhiljindal commented 6 years ago

cc @bowei & @nicksardo

nikhiljindal commented 6 years ago

I like URLMap to store the status. We have a single URLMap per ingress.

This is unlike other resources which can be multiple - multiple BackendServices for multiple services in ingress and http and https forwarding rules and target proxies).

It also has an update API :)

nikhiljindal commented 6 years ago

Turns our ListUrlMaps is missing from LoadBalancers interface. We need it for kubemci list to list all existing MCIs.

Filed https://github.com/kubernetes/ingress-gce/issues/162 for the request. Will need to add it to the interface and then revendor the updated interface.

nikhiljindal commented 6 years ago

This is now fixed.