func (s Name) AnnotateService(svc *v1.Service, v interface{}) error {
	const op = "annotation/Name.AnnotateService"
	if svc.ObjectMeta.Annotations == nil {
		svc.ObjectMeta.Annotations = make(map[string]string)
	}
	k := string(s)
	switch vt := v.(type) {
	case bool:
		svc.ObjectMeta.Annotations[k] = strconv.FormatBool(vt)
	case int:
		svc.ObjectMeta.Annotations[k] = strconv.Itoa(vt)
	case string:
		svc.ObjectMeta.Annotations[k] = vt
	case []string:
		svc.ObjectMeta.Annotations[k] = strings.Join(vt, ",")
	case hcloud.CertificateType:
		svc.ObjectMeta.Annotations[k] = string(vt)
	case []*hcloud.Certificate:
		idsOrNames := make([]string, len(vt))
		for i, c := range vt {
			if c.ID == 0 && c.Name != "" {
				idsOrNames[i] = c.Name
				continue
			}
			idsOrNames[i] = strconv.Itoa(c.ID)
		}
		svc.ObjectMeta.Annotations[k] = strings.Join(idsOrNames, ",")
	case hcloud.NetworkZone:
		svc.ObjectMeta.Annotations[k] = string(vt)
	case hcloud.LoadBalancerAlgorithmType:
		svc.ObjectMeta.Annotations[k] = string(vt)
	case hcloud.LoadBalancerServiceProtocol:
		svc.ObjectMeta.Annotations[k] = string(vt)
	case fmt.Stringer:
		svc.ObjectMeta.Annotations[k] = vt.String()
	default:
		return fmt.Errorf("%s: %v: unsupported type: %T", op, s, v)
	}
	return nil
}
AnnotateService adds the value v as an annotation with s.Name to svc.

AnnotateService returns an error if converting v to a string fails.
package annotation
import (
	"errors"
	"fmt"
	"net"
	"strconv"
	"strings"
	"time"
	"github.com/hetznercloud/hcloud-go/hcloud"
	v1 "k8s.io/api/core/v1"
)
var ErrNotSet = errors.New("not set")
type Name string