code: func (g *Cloud) AddAliasToInstance(nodeName types.NodeName, alias *net.IPNet) error {
  	ctx, cancel := cloud.ContextWithCallTimeout()
  	defer cancel()
  
  	v1instance, err := g.getInstanceByName(mapNodeNameToInstanceName(nodeName))
  	if err != nil {
  		return err
  	}
  	instance, err := g.c.BetaInstances().Get(ctx, meta.ZonalKey(v1instance.Name, lastComponent(v1instance.Zone)))
  	if err != nil {
  		return err
  	}
  
  	switch len(instance.NetworkInterfaces) {
  	case 0:
  		return fmt.Errorf("instance %q has no network interfaces", nodeName)
  	case 1:
  	default:
  		klog.Warningf("Instance %q has more than one network interface, using only the first (%v)",
  			nodeName, instance.NetworkInterfaces)
  	}
  
  	iface := &computebeta.NetworkInterface{}
  	iface.Name = instance.NetworkInterfaces[0].Name
  	iface.Fingerprint = instance.NetworkInterfaces[0].Fingerprint
  	iface.AliasIpRanges = append(iface.AliasIpRanges, &computebeta.AliasIpRange{
  		IpCidrRange:         alias.String(),
  		SubnetworkRangeName: g.secondaryRangeName,
  	})
  
  	mc := newInstancesMetricContext("add_alias", v1instance.Zone)
  	err = g.c.BetaInstances().UpdateNetworkInterface(ctx, meta.ZonalKey(instance.Name, lastComponent(instance.Zone)), iface.Name, iface)
  	return mc.Observe(err)
  }
docs: // AddAliasToInstance adds an alias to the given instance from the named
  // secondary range.