首页 > 解决方案 > 在 kubernetes API 中是否有一个通过注解获取所有服务的函数

问题描述

我正在建立一个 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 注释的所有服务?

标签: gokubernetes

解决方案


没有用于注释的 FieldSelector。您可以做的是将所有服务添加到您的列表中,然后根据每个服务中的注释过滤它们。


推荐阅读