Я настраиваю кластер kubernet для развертывания наших контейнерных приложений. Приложениям действительно нужны все метки, но они длиннее 63 символов, и я получаю ошибку . Это делает меня зависимым от аннотаций.
Аннотация к услуге выглядит следующим образом: com.example.development.london/component.proxy-config.secure-routes.backend.proxy-path
. /
служит только для обхода ошибки домена RFC.
В приложении Golang запрашиваются все службы пространства имен. На самом деле на основе меток. Для этого я использовал следующий код:
func (kc *KubernetesCollector) generateRoutes(errorChannel chan<- error) {
log.Println("INFO: Try to generate routes")
services, err := kc.iface.Services(kc.namespace).List(metav1.ListOptions{
LabelSelector: fmt.Sprintf("%s==true", ConvertLabelToKubernetesAnnotation(ProxyConfDiscoverableLabel)),
})
...
func ConvertLabelToKubernetesAnnotation(label string) string {
return strings.Replace(label, "com.example.development.london.", "com.example.development.london/", -1)
}
Но нет возможности вернуть услуги, используя аннотации. Кто-нибудь знает другой способ, как я могу получить все услуги, которые относятся к аннотации с Go?