美文网首页
so easy:用标签监听特定的kubenetes部署的变动

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

作者: CloudsDocker | 来源:发表于2022-01-24 12:00 被阅读0次

    背景

    现在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

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/bddbhrtx.html