code: func (c *ComputeUtil) uploadSSHKey(instance *raw.Instance, sshKeyPath string) error {
  	log.Infof("Uploading SSH Key")
  
  	sshKey, err := ioutil.ReadFile(sshKeyPath + ".pub")
  	if err != nil {
  		return err
  	}
  
  	metaDataValue := fmt.Sprintf("%s:%s %s\n", c.userName, strings.TrimSpace(string(sshKey)), c.userName)
  
  	op, err := c.service.Instances.SetMetadata(c.project, c.zone, c.instanceName, &raw.Metadata{
  		Fingerprint: instance.Metadata.Fingerprint,
  		Items: []*raw.MetadataItems{
  			{
  				Key:   "sshKeys",
  				Value: &metaDataValue,
  			},
  		},
  	}).Do()
  
  	return c.waitForRegionalOp(op.Name)
  }
docs: // uploadSSHKey updates the instance metadata with the given ssh key.