当前位置: 首页 > 知识库问答 >
问题:

使用java kubernetes客户端从kubernetes入口删除路径

顾单弓
2023-03-14

我正在尝试从入口规则中删除一个后端路径,但无法使其正常工作。

这就是我尝试删除它的方式:

// get path to delete
Optional<HTTPIngressPath> pathToDelete = kubernetesClient.extensions().ingresses().withName("my-ingress")
    .get()
    .getSpec()
    .getRules()
    .get(0)
    .getHttp()
    .getPaths().stream()
        .filter(path -> path.getBackend().getServiceName().equals(buildServiceNameById(id))).findFirst();

if(!pathToDelete.isPresent()) {
    LOGGER.warn("Couldn't determine ingress path for " + buildServiceNameById(id) + ".");
    return;
}

kubernetesClient.extensions().ingresses().withName("my-ingress")
    .edit()
    .editSpec()
    .editFirstRule()
    .editHttp()
        .removeFromPaths(pathToDelete.get())
    .endHttp()
    .endRule()
    .endSpec()
    .done();

LOGGER.info("Deleted ingress routing " + pathToDelete.toString());

当我查看日志时,我可以看到它找到了路径并输出了以下内容:

已删除入口路由可选[HTTPIngressPath(backend=IngressBackend(serviceName=my-service-6,servicePort=IntOrString(IntVal=8080,Kind=null,StrVal=null,additionalProperties={}),additional Properties={}),path=/myservice/6,additionallProperties={}]

但是当我描述入口时,我可以看到规则仍然存在:

Name:             my-ingress
Namespace:        default
Address:          someAdress
Default backend:  default-http-backend:80 (<none>)
Rules:
  Host                                                 Path  Backends
  ----                                                 ----  --------
  someHost  
                                                       /                                           admin:8888 (<none>)
                                                       /myservice/6   my-service-6:8080 (<none>)
Annotations:
Events:
  Type     Reason               Age   From                                                             Message
  ----     ------               ----  ----                                                             -------
  Normal   Success              21m   public  Successfully applied ingress resource.
  Warning  ConfigReloadFailure  21m   public  Failed to apply ingress resource.
  Warning  ConfigReloadFailure  21m   public  Failed to apply ingress resource.
  Warning  ConfigReloadFailure  20m   public  Failed to apply ingress resource.
  Normal   Success              18m   public  Successfully applied ingress resource.
  Normal   Success              18m   public  Successfully applied ingress resource.
  Normal   Success              17m   public  Successfully applied ingress resource.
  Normal   Success              16m   public  Successfully applied ingress resource.

所以我的问题是:如何使用 kubernetes-client-java 动态删除 Ingress 中的路径?我使用 kubernetes-client 创建了规则,所以我知道它在理论上是有效的,我只是无法让它再次删除它。

共有1个答案

笪欣嘉
2023-03-14

您可以这样删除igress:

k8sClient.extensions().ingresses().withName("my-ingress").delete();
 类似资料:
  • 我正在为Kubernetes使用fabric8 java客户端库。我无法找到对容器执行更新操作的最佳方法。基本上,我想做的是,我已经创建了一个容器映像为“nginx”的pod,现在我想更新这个映像为“nginx:1.16.1”。 我想做的是

  • 我有以下入口设置: 当我点击时,我被重定向到,并带有NGINX 404未找到。 根据日志,可以看到< code>grafana窗格被查询命中: logger = context traceID = 0000000000000000000000000000 userId = 0 orgId = 0 uname = t = 2022-10-13t 16:19:57.989170173 z level

  • type String - clientCertificate. origin String - 必须从缓存中删除相关客户端证书的服务器的来源。

  • 我已经使用下面的代码从Azure active directory B2C中删除了一个用户。 但我最终得到了异常消息“not initialized”。 谁能告诉我这有什么问题吗?

  • 我的服务器中有此入口。 事实上,当我给ra2打电话的时候,我希望是这样。我的公司。通用域名格式。br/conteudo/health,例如,它触及seo生产部署节点port/health,但它将访问seo生产部署节点port/conteudo/health,并收到404答案。 在我的入口中查看它似乎没有错误。我只是不知道为什么它没有按预期“清理”路径。正常/路径中的请求正在按预期发生。

  • Kubernetic - 一款kubenretes桌面客户端,https://kubernetic.com/,支持以下特性: 实时展示集群状态 多集群,多个namespace管理 原生kubernetes支持 支持使用chart安装应用 使用kubeconfig登陆认证 该客户端支持Mac和Windows系统,beta版本免费使用,stable版本需要付费。beta版本某些功能不完善,比如无法在应