so easy:用标签监听特定的kubenetes部署的变动

2022-01-24  本文已影响0人  CloudsDocker

背景

现在kubernetes广泛应用于devops各个领域,很多时候你可能需要使用Kubenetes Java客户端库来监听Kubenets中的任何更改,以便您可以设置钩子逻辑,以便在K8s中的任何更改时调用业务逻辑处理这些数据。

痛点

一般情况下,默认监听所有的变动信息是又浪费资源又慢,因此您可以通过安装Kube标签来对特定更改进行过滤监听。这个博客就是来展示如何做到这一点。

检查如何过滤已经过滤哪个标签

这是Kubenetes LENS的快照页面,我将使用labelrun=dummy-service作为示例。如下图所示。

Java代码示例

如果您在Kubenetse中的部署标签是run=dummy-service,您可以使用以下代码逻辑

public void run() {

        Watch<V1Deployment> watch = null;
        try {
            watch = Watch.createWatch(
                    client,
                    appsApi.listNamespacedDeploymentCall("YOU_NAME_SPACE", null, null, null, null, "run=dummy-service", null,
                            null, null, null, true, null),
                    new TypeToken<Watch.Response<V1Deployment>>() {
                    }.getType());
        } catch (ApiException e) {
            LOGGER.error("Error occurred in DeploymentWatcher,", e);           
        }
        assert watch != null;
        watch.forEach(this::setMetadata);
    }

因此,上述代码将返回所有带有“run=dummy-service”标签的部署,这样你就可以对此过滤过的子集进行任何相应的处理

参考链接

https://appdoc.app/artifact/io.kubernetes/client-java-api/0.1/io/kubernetes/client/apis/AppsV1beta1Api.html#listNamespacedDeploymentCall-java.lang.String-java.lang.String-java.lang.String-java.lang.String-java.lang.String-java.lang.Integer-java.lang.Boolean-io.kubernetes.client.ProgressResponseBody.ProgressListener-io.kubernetes.client.ProgressRequestBody.ProgressRequestListener-

–结束–

欢迎大家浏览关注我的公众号 “竹书纪年的IT男”. 更多类似文章,请访问我的网站www.todzhang.com
上一篇下一篇

猜你喜欢

热点阅读