Documentation

Overview

    Package gce is an implementation of Interface, LoadBalancer and Instances for Google Compute Engine.

    Index

    Constants

    View Source
    const (
    	DiskTypeSSD      = "pd-ssd"
    	DiskTypeStandard = "pd-standard"
    )
    View Source
    const (
    	ProviderName = "gce"
    )

    Variables

    This section is empty.

    Functions

    func GetGCERegion

    func GetGCERegion(zone string) (string, error)

      GetGCERegion returns region of the gce zone. Zone names are of the form: ${region-name}-${ix}. For example, "us-central1-b" has a region of "us-central1". So we look for the last '-' and trim to just before that.

      func NewAltTokenSource

      func NewAltTokenSource(tokenURL, tokenBody string) oauth2.TokenSource

      Types

      type AltTokenSource

      type AltTokenSource struct {
      	// contains filtered or unexported fields
      }

      func (*AltTokenSource) Token

      func (a *AltTokenSource) Token() (*oauth2.Token, error)

      type Config

      type Config struct {
      	Global struct {
      		TokenURL           string   `gcfg:"token-url"`
      		TokenBody          string   `gcfg:"token-body"`
      		ProjectID          string   `gcfg:"project-id"`
      		NetworkName        string   `gcfg:"network-name"`
      		NodeTags           []string `gcfg:"node-tags"`
      		NodeInstancePrefix string   `gcfg:"node-instance-prefix"`
      		Multizone          bool     `gcfg:"multizone"`
      	}
      }

      type DiskType

      type DiskType string

      type Disks

      type Disks interface {
      	// AttachDisk attaches given disk to the node with the specified NodeName.
      	// Current instance is used when instanceID is empty string.
      	AttachDisk(diskName string, nodeName types.NodeName, readOnly bool) error
      
      	// DetachDisk detaches given disk to the node with the specified NodeName.
      	// Current instance is used when nodeName is empty string.
      	DetachDisk(devicePath string, nodeName types.NodeName) error
      
      	// DiskIsAttached checks if a disk is attached to the node with the specified NodeName.
      	DiskIsAttached(diskName string, nodeName types.NodeName) (bool, error)
      
      	// DisksAreAttached is a batch function to check if a list of disks are attached
      	// to the node with the specified NodeName.
      	DisksAreAttached(diskNames []string, nodeName types.NodeName) (map[string]bool, error)
      
      	// CreateDisk creates a new PD with given properties. Tags are serialized
      	// as JSON into Description field.
      	CreateDisk(name string, diskType string, zone string, sizeGb int64, tags map[string]string) error
      
      	// DeleteDisk deletes PD.
      	DeleteDisk(diskToDelete string) error
      
      	// GetAutoLabelsForPD returns labels to apply to PersistentVolume
      	// representing this PD, namely failure domain and zone.
      	// zone can be provided to specify the zone for the PD,
      	// if empty all managed zones will be searched.
      	GetAutoLabelsForPD(name string, zone string) (map[string]string, error)
      }

        Disks is interface for manipulation with GCE PDs.

        type GCECloud

        type GCECloud struct {
        	// contains filtered or unexported fields
        }

          GCECloud is an implementation of Interface, LoadBalancer and Instances for Google Compute Engine.

          func CreateGCECloud

          func CreateGCECloud(projectID, region, zone string, managedZones []string, networkURL string, nodeTags []string, nodeInstancePrefix string, tokenSource oauth2.TokenSource, useMetadataServer bool) (*GCECloud, error)

            Creates a GCECloud object using the specified parameters. If no networkUrl is specified, loads networkName via rest call. If no tokenSource is specified, uses oauth2.DefaultTokenSource. If managedZones is nil / empty all zones in the region will be managed.

            func (*GCECloud) AddInstancesToInstanceGroup

            func (gce *GCECloud) AddInstancesToInstanceGroup(name string, zone string, instanceNames []string) error

              AddInstancesToInstanceGroup adds the given instances to the given instance group.

              func (*GCECloud) AddPortToInstanceGroup

              func (gce *GCECloud) AddPortToInstanceGroup(ig *compute.InstanceGroup, port int64) (*compute.NamedPort, error)

                AddPortToInstanceGroup adds a port to the given instance group.

                func (*GCECloud) AddSSHKeyToAllInstances

                func (gce *GCECloud) AddSSHKeyToAllInstances(user string, keyData []byte) error

                func (*GCECloud) AttachDisk

                func (gce *GCECloud) AttachDisk(diskName string, nodeName types.NodeName, readOnly bool) error

                func (*GCECloud) Clusters

                func (gce *GCECloud) Clusters() (cloudprovider.Clusters, bool)

                func (*GCECloud) CreateBackendService

                func (gce *GCECloud) CreateBackendService(bg *compute.BackendService) error

                  CreateBackendService creates the given BackendService.

                  func (*GCECloud) CreateDisk

                  func (gce *GCECloud) CreateDisk(name string, diskType string, zone string, sizeGb int64, tags map[string]string) error

                    CreateDisk creates a new Persistent Disk, with the specified name & size, in the specified zone. It stores specified tags encoded in JSON in Description field.

                    func (*GCECloud) CreateFirewall

                    func (gce *GCECloud) CreateFirewall(name, desc string, sourceRanges netsets.IPNet, ports []int64, hostNames []string) error

                      CreateFirewall creates the given firewall rule.

                      func (*GCECloud) CreateGlobalForwardingRule

                      func (gce *GCECloud) CreateGlobalForwardingRule(targetProxyLink, ip, name, portRange string) (*compute.ForwardingRule, error)

                        CreateGlobalForwardingRule creates and returns a GlobalForwardingRule that points to the given TargetHttp(s)Proxy. targetProxyLink is the SelfLink of a TargetHttp(s)Proxy.

                        func (*GCECloud) CreateHttpHealthCheck

                        func (gce *GCECloud) CreateHttpHealthCheck(hc *compute.HttpHealthCheck) error

                          CreateHttpHealthCheck creates the given HttpHealthCheck.

                          func (*GCECloud) CreateInstanceGroup

                          func (gce *GCECloud) CreateInstanceGroup(name string, zone string) (*compute.InstanceGroup, error)

                            CreateInstanceGroup creates an instance group with the given instances. It is the callers responsibility to add named ports.

                            func (*GCECloud) CreateRoute

                            func (gce *GCECloud) CreateRoute(clusterName string, nameHint string, route *cloudprovider.Route) error

                            func (*GCECloud) CreateSslCertificate

                            func (gce *GCECloud) CreateSslCertificate(sslCerts *compute.SslCertificate) (*compute.SslCertificate, error)

                              CreateSslCertificate creates and returns a SslCertificate.

                              func (*GCECloud) CreateTargetHttpProxy

                              func (gce *GCECloud) CreateTargetHttpProxy(urlMap *compute.UrlMap, name string) (*compute.TargetHttpProxy, error)

                                CreateTargetHttpProxy creates and returns a TargetHttpProxy with the given UrlMap.

                                func (*GCECloud) CreateTargetHttpsProxy

                                func (gce *GCECloud) CreateTargetHttpsProxy(urlMap *compute.UrlMap, sslCert *compute.SslCertificate, name string) (*compute.TargetHttpsProxy, error)

                                  CreateTargetHttpsProxy creates and returns a TargetHttpsProxy with the given UrlMap and SslCertificate.

                                  func (*GCECloud) CreateUrlMap

                                  func (gce *GCECloud) CreateUrlMap(backend *compute.BackendService, name string) (*compute.UrlMap, error)

                                    CreateUrlMap creates an url map, using the given backend service as the default service.

                                    func (*GCECloud) CurrentNodeName

                                    func (gce *GCECloud) CurrentNodeName(hostname string) (types.NodeName, error)

                                      Implementation of Instances.CurrentNodeName

                                      func (*GCECloud) DeleteBackendService

                                      func (gce *GCECloud) DeleteBackendService(name string) error

                                        DeleteBackendService deletes the given BackendService by name.

                                        func (*GCECloud) DeleteDisk

                                        func (gce *GCECloud) DeleteDisk(diskToDelete string) error

                                        func (*GCECloud) DeleteFirewall

                                        func (gce *GCECloud) DeleteFirewall(name string) error

                                          DeleteFirewall deletes the given firewall rule.

                                          func (*GCECloud) DeleteForwardingRule

                                          func (gce *GCECloud) DeleteForwardingRule(name string) error

                                          func (*GCECloud) DeleteGlobalForwardingRule

                                          func (gce *GCECloud) DeleteGlobalForwardingRule(name string) error

                                            DeleteGlobalForwardingRule deletes the GlobalForwardingRule by name.

                                            func (*GCECloud) DeleteGlobalStaticIP

                                            func (gce *GCECloud) DeleteGlobalStaticIP(name string) error

                                              DeleteGlobalStaticIP deletes a global static IP by name.

                                              func (*GCECloud) DeleteHttpHealthCheck

                                              func (gce *GCECloud) DeleteHttpHealthCheck(name string) error

                                                DeleteHttpHealthCheck deletes the given HttpHealthCheck by name.

                                                func (*GCECloud) DeleteInstanceGroup

                                                func (gce *GCECloud) DeleteInstanceGroup(name string, zone string) error

                                                  DeleteInstanceGroup deletes an instance group.

                                                  func (*GCECloud) DeleteRoute

                                                  func (gce *GCECloud) DeleteRoute(clusterName string, route *cloudprovider.Route) error

                                                  func (*GCECloud) DeleteSslCertificate

                                                  func (gce *GCECloud) DeleteSslCertificate(name string) error

                                                    DeleteSslCertificate deletes the SslCertificate by name.

                                                    func (*GCECloud) DeleteTargetHttpProxy

                                                    func (gce *GCECloud) DeleteTargetHttpProxy(name string) error

                                                      DeleteTargetHttpProxy deletes the TargetHttpProxy by name.

                                                      func (*GCECloud) DeleteTargetHttpsProxy

                                                      func (gce *GCECloud) DeleteTargetHttpsProxy(name string) error

                                                        DeleteTargetHttpsProxy deletes the TargetHttpsProxy by name.

                                                        func (*GCECloud) DeleteTargetPool

                                                        func (gce *GCECloud) DeleteTargetPool(name string, hc *compute.HttpHealthCheck) error

                                                          DeleteTargetPool deletes the given target pool.

                                                          func (*GCECloud) DeleteUrlMap

                                                          func (gce *GCECloud) DeleteUrlMap(name string) error

                                                            DeleteUrlMap deletes a url map by name.

                                                            func (*GCECloud) DetachDisk

                                                            func (gce *GCECloud) DetachDisk(devicePath string, nodeName types.NodeName) error

                                                            func (*GCECloud) DiskIsAttached

                                                            func (gce *GCECloud) DiskIsAttached(diskName string, nodeName types.NodeName) (bool, error)

                                                            func (*GCECloud) DisksAreAttached

                                                            func (gce *GCECloud) DisksAreAttached(diskNames []string, nodeName types.NodeName) (map[string]bool, error)

                                                            func (*GCECloud) EnsureLoadBalancer

                                                            func (gce *GCECloud) EnsureLoadBalancer(clusterName string, apiService *v1.Service, nodes []*v1.Node) (*v1.LoadBalancerStatus, error)

                                                              EnsureLoadBalancer is an implementation of LoadBalancer.EnsureLoadBalancer. Our load balancers in GCE consist of four separate GCE resources - a static IP address, a firewall rule, a target pool, and a forwarding rule. This function has to manage all of them. Due to an interesting series of design decisions, this handles both creating new load balancers and updating existing load balancers, recognizing when each is needed.

                                                              func (*GCECloud) EnsureLoadBalancerDeleted

                                                              func (gce *GCECloud) EnsureLoadBalancerDeleted(clusterName string, service *v1.Service) error

                                                                EnsureLoadBalancerDeleted is an implementation of LoadBalancer.EnsureLoadBalancerDeleted.

                                                                func (*GCECloud) ExternalID

                                                                func (gce *GCECloud) ExternalID(nodeName types.NodeName) (string, error)

                                                                  ExternalID returns the cloud provider ID of the node with the specified NodeName (deprecated).

                                                                  func (*GCECloud) GetAllZones

                                                                  func (gce *GCECloud) GetAllZones() (sets.String, error)

                                                                    GetAllZones returns all the zones in which nodes are running

                                                                    func (*GCECloud) GetAutoLabelsForPD

                                                                    func (gce *GCECloud) GetAutoLabelsForPD(name string, zone string) (map[string]string, error)

                                                                      Builds the labels that should be automatically added to a PersistentVolume backed by a GCE PD Specifically, this builds FailureDomain (zone) and Region labels. The PersistentVolumeLabel admission controller calls this and adds the labels when a PV is created. If zone is specified, the volume will only be found in the specified zone, otherwise all managed zones will be searched.

                                                                      func (*GCECloud) GetBackendService

                                                                      func (gce *GCECloud) GetBackendService(name string) (*compute.BackendService, error)

                                                                        GetBackendService retrieves a backend by name.

                                                                        func (*GCECloud) GetComputeService

                                                                        func (g *GCECloud) GetComputeService() *compute.Service

                                                                          Raw access to the underlying GCE service, probably should only be used for e2e tests

                                                                          func (*GCECloud) GetFirewall

                                                                          func (gce *GCECloud) GetFirewall(name string) (*compute.Firewall, error)

                                                                            GetFirewall returns the Firewall by name.

                                                                            func (*GCECloud) GetGlobalForwardingRule

                                                                            func (gce *GCECloud) GetGlobalForwardingRule(name string) (*compute.ForwardingRule, error)

                                                                              GetGlobalForwardingRule returns the GlobalForwardingRule by name.

                                                                              func (*GCECloud) GetGlobalStaticIP

                                                                              func (gce *GCECloud) GetGlobalStaticIP(name string) (address *compute.Address, err error)

                                                                                GetGlobalStaticIP returns the global static IP by name.

                                                                                func (*GCECloud) GetHealth

                                                                                func (gce *GCECloud) GetHealth(name string, instanceGroupLink string) (*compute.BackendServiceGroupHealth, error)

                                                                                  GetHealth returns the health of the BackendService identified by the given name, in the given instanceGroup. The instanceGroupLink is the fully qualified self link of an instance group.

                                                                                  func (*GCECloud) GetHttpHealthCheck

                                                                                  func (gce *GCECloud) GetHttpHealthCheck(name string) (*compute.HttpHealthCheck, error)

                                                                                    GetHttpHealthCheck returns the given HttpHealthCheck by name.

                                                                                    func (*GCECloud) GetInstanceGroup

                                                                                    func (gce *GCECloud) GetInstanceGroup(name string, zone string) (*compute.InstanceGroup, error)

                                                                                      GetInstanceGroup returns an instance group by name.

                                                                                      func (*GCECloud) GetLoadBalancer

                                                                                      func (gce *GCECloud) GetLoadBalancer(clusterName string, service *v1.Service) (*v1.LoadBalancerStatus, bool, error)

                                                                                        GetLoadBalancer is an implementation of LoadBalancer.GetLoadBalancer

                                                                                        func (*GCECloud) GetSslCertificate

                                                                                        func (gce *GCECloud) GetSslCertificate(name string) (*compute.SslCertificate, error)

                                                                                          GetSslCertificate returns the SslCertificate by name.

                                                                                          func (*GCECloud) GetTargetHttpProxy

                                                                                          func (gce *GCECloud) GetTargetHttpProxy(name string) (*compute.TargetHttpProxy, error)

                                                                                            GetTargetHttpProxy returns the UrlMap by name.

                                                                                            func (*GCECloud) GetTargetHttpsProxy

                                                                                            func (gce *GCECloud) GetTargetHttpsProxy(name string) (*compute.TargetHttpsProxy, error)

                                                                                              GetTargetHttpsProxy returns the UrlMap by name.

                                                                                              func (*GCECloud) GetUrlMap

                                                                                              func (gce *GCECloud) GetUrlMap(name string) (*compute.UrlMap, error)

                                                                                                GetUrlMap returns the UrlMap by name.

                                                                                                func (*GCECloud) GetZone

                                                                                                func (gce *GCECloud) GetZone() (cloudprovider.Zone, error)

                                                                                                func (*GCECloud) InstanceID

                                                                                                func (gce *GCECloud) InstanceID(nodeName types.NodeName) (string, error)

                                                                                                  InstanceID returns the cloud provider ID of the node with the specified NodeName.

                                                                                                  func (*GCECloud) InstanceType

                                                                                                  func (gce *GCECloud) InstanceType(nodeName types.NodeName) (string, error)

                                                                                                    InstanceType returns the type of the specified node with the specified NodeName.

                                                                                                    func (*GCECloud) Instances

                                                                                                    func (gce *GCECloud) Instances() (cloudprovider.Instances, bool)

                                                                                                      Instances returns an implementation of Instances for Google Compute Engine.

                                                                                                      func (*GCECloud) ListBackendServices

                                                                                                      func (gce *GCECloud) ListBackendServices() (*compute.BackendServiceList, error)

                                                                                                        ListBackendServices lists all backend services in the project.

                                                                                                        func (*GCECloud) ListClusters

                                                                                                        func (gce *GCECloud) ListClusters() ([]string, error)

                                                                                                        func (*GCECloud) ListGlobalForwardingRules

                                                                                                        func (gce *GCECloud) ListGlobalForwardingRules() (*compute.ForwardingRuleList, error)

                                                                                                          ListGlobalForwardingRules lists all GlobalForwardingRules in the project.

                                                                                                          func (*GCECloud) ListHttpHealthChecks

                                                                                                          func (gce *GCECloud) ListHttpHealthChecks() (*compute.HttpHealthCheckList, error)

                                                                                                            ListHttpHealthCheck lists all HttpHealthChecks in the project.

                                                                                                            func (*GCECloud) ListInstanceGroups

                                                                                                            func (gce *GCECloud) ListInstanceGroups(zone string) (*compute.InstanceGroupList, error)

                                                                                                              ListInstanceGroups lists all InstanceGroups in the project and zone.

                                                                                                              func (*GCECloud) ListInstancesInInstanceGroup

                                                                                                              func (gce *GCECloud) ListInstancesInInstanceGroup(name string, zone string, state string) (*compute.InstanceGroupsListInstances, error)

                                                                                                                ListInstancesInInstanceGroup lists all the instances in a given instance group and state.

                                                                                                                func (*GCECloud) ListRoutes

                                                                                                                func (gce *GCECloud) ListRoutes(clusterName string) ([]*cloudprovider.Route, error)

                                                                                                                func (*GCECloud) ListSslCertificates

                                                                                                                func (gce *GCECloud) ListSslCertificates() (*compute.SslCertificateList, error)

                                                                                                                  ListSslCertificates lists all SslCertificates in the project.

                                                                                                                  func (*GCECloud) ListTargetHttpProxies

                                                                                                                  func (gce *GCECloud) ListTargetHttpProxies() (*compute.TargetHttpProxyList, error)

                                                                                                                    ListTargetHttpProxies lists all TargetHttpProxies in the project.

                                                                                                                    func (*GCECloud) ListTargetHttpsProxies

                                                                                                                    func (gce *GCECloud) ListTargetHttpsProxies() (*compute.TargetHttpsProxyList, error)

                                                                                                                      ListTargetHttpsProxies lists all TargetHttpsProxies in the project.

                                                                                                                      func (*GCECloud) ListUrlMaps

                                                                                                                      func (gce *GCECloud) ListUrlMaps() (*compute.UrlMapList, error)

                                                                                                                        ListUrlMaps lists all UrlMaps in the project.

                                                                                                                        func (*GCECloud) LoadBalancer

                                                                                                                        func (gce *GCECloud) LoadBalancer() (cloudprovider.LoadBalancer, bool)

                                                                                                                          LoadBalancer returns an implementation of LoadBalancer for Google Compute Engine.

                                                                                                                          func (*GCECloud) Master

                                                                                                                          func (gce *GCECloud) Master(clusterName string) (string, error)

                                                                                                                          func (*GCECloud) NodeAddresses

                                                                                                                          func (gce *GCECloud) NodeAddresses(_ types.NodeName) ([]v1.NodeAddress, error)

                                                                                                                            NodeAddresses is an implementation of Instances.NodeAddresses.

                                                                                                                            func (*GCECloud) ProviderName

                                                                                                                            func (gce *GCECloud) ProviderName() string

                                                                                                                              ProviderName returns the cloud provider ID.

                                                                                                                              func (*GCECloud) RemoveInstancesFromInstanceGroup

                                                                                                                              func (gce *GCECloud) RemoveInstancesFromInstanceGroup(name string, zone string, instanceNames []string) error

                                                                                                                                RemoveInstancesFromInstanceGroup removes the given instances from the instance group.

                                                                                                                                func (*GCECloud) ReserveGlobalStaticIP

                                                                                                                                func (gce *GCECloud) ReserveGlobalStaticIP(name, ipAddress string) (address *compute.Address, err error)

                                                                                                                                  ReserveGlobalStaticIP creates a global static IP. Caller is allocated a random IP if they do not specify an ipAddress. If an ipAddress is specified, it must belong to the current project, eg: an ephemeral IP associated with a global forwarding rule.

                                                                                                                                  func (*GCECloud) Routes

                                                                                                                                  func (gce *GCECloud) Routes() (cloudprovider.Routes, bool)

                                                                                                                                    Routes returns an implementation of Routes for Google Compute Engine.

                                                                                                                                    func (*GCECloud) ScrubDNS

                                                                                                                                    func (gce *GCECloud) ScrubDNS(nameservers, searches []string) (nsOut, srchOut []string)

                                                                                                                                      ScrubDNS filters DNS settings for pods.

                                                                                                                                      func (*GCECloud) SetProxyForGlobalForwardingRule

                                                                                                                                      func (gce *GCECloud) SetProxyForGlobalForwardingRule(fw *compute.ForwardingRule, targetProxyLink string) error

                                                                                                                                        SetProxyForGlobalForwardingRule links the given TargetHttp(s)Proxy with the given GlobalForwardingRule. targetProxyLink is the SelfLink of a TargetHttp(s)Proxy.

                                                                                                                                        func (*GCECloud) SetSslCertificateForTargetHttpsProxy

                                                                                                                                        func (gce *GCECloud) SetSslCertificateForTargetHttpsProxy(proxy *compute.TargetHttpsProxy, sslCert *compute.SslCertificate) error

                                                                                                                                          SetSslCertificateForTargetHttpsProxy sets the given SslCertificate for the given TargetHttpsProxy.

                                                                                                                                          func (*GCECloud) SetUrlMapForTargetHttpProxy

                                                                                                                                          func (gce *GCECloud) SetUrlMapForTargetHttpProxy(proxy *compute.TargetHttpProxy, urlMap *compute.UrlMap) error

                                                                                                                                            SetUrlMapForTargetHttpProxy sets the given UrlMap for the given TargetHttpProxy.

                                                                                                                                            func (*GCECloud) SetUrlMapForTargetHttpsProxy

                                                                                                                                            func (gce *GCECloud) SetUrlMapForTargetHttpsProxy(proxy *compute.TargetHttpsProxy, urlMap *compute.UrlMap) error

                                                                                                                                              SetUrlMapForTargetHttpsProxy sets the given UrlMap for the given TargetHttpsProxy.

                                                                                                                                              func (*GCECloud) UpdateBackendService

                                                                                                                                              func (gce *GCECloud) UpdateBackendService(bg *compute.BackendService) error

                                                                                                                                                UpdateBackendService applies the given BackendService as an update to an existing service.

                                                                                                                                                func (*GCECloud) UpdateFirewall

                                                                                                                                                func (gce *GCECloud) UpdateFirewall(name, desc string, sourceRanges netsets.IPNet, ports []int64, hostNames []string) error

                                                                                                                                                  UpdateFirewall applies the given firewall rule as an update to an existing firewall rule with the same name.

                                                                                                                                                  func (*GCECloud) UpdateHttpHealthCheck

                                                                                                                                                  func (gce *GCECloud) UpdateHttpHealthCheck(hc *compute.HttpHealthCheck) error

                                                                                                                                                    UpdateHttpHealthCheck applies the given HttpHealthCheck as an update.

                                                                                                                                                    func (*GCECloud) UpdateLoadBalancer

                                                                                                                                                    func (gce *GCECloud) UpdateLoadBalancer(clusterName string, service *v1.Service, nodes []*v1.Node) error

                                                                                                                                                      UpdateLoadBalancer is an implementation of LoadBalancer.UpdateLoadBalancer.

                                                                                                                                                      func (*GCECloud) UpdateUrlMap

                                                                                                                                                      func (gce *GCECloud) UpdateUrlMap(urlMap *compute.UrlMap) (*compute.UrlMap, error)

                                                                                                                                                        UpdateUrlMap applies the given UrlMap as an update, and returns the new UrlMap.

                                                                                                                                                        func (*GCECloud) Zones

                                                                                                                                                        func (gce *GCECloud) Zones() (cloudprovider.Zones, bool)

                                                                                                                                                          Zones returns an implementation of Zones for Google Compute Engine.