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

如何在更新configmaps时在kubernetes中的应用程序内获取通知

冉俊德
2023-03-14

我在kubernetes中运行了一个应用程序,它通过configmaps挂载了一个文件。现在,在应用程序内部,我希望在更新此文件(来自configmap)时执行一些操作(比如通过kubectl update configmaps xyz命令)。

假设我使用以下命令创建了configmap:

kubectl create configmap myy-config --from-file=config.json

我的部署是这样创建的:

apiVersion: apps/v1beta2
kind: Deployment
metadata:
  name: myapp
spec:
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
        -
          image: "xyz"
          name: myapp
          ports:
            -
              containerPort: 5566
          volumeMounts:
            -
              mountPath: /myapp/config
              name: config
      dnsPolicy: ClusterFirstWithHostNet
      volumes:
        -
          name: config
          configMap:
            name: my-config

现在,如果我做kubectl exec-it

当然,如果我在笔记本电脑上运行同一个应用程序,代码会得到fsnotify,我的应用程序会更新它的配置。来自kubernetes的代码与来自configmap的文件相同,但不起作用。我读过其他类似的SOF问题和其他各种问题,但没有任何具体的解决方案可以解决我所面临的问题。

我知道文件(来自配置图)是一个符号链接,实际文件位于一个名为... data/config.json的文件夹中。我试图添加该文件也,但仍然没有得到fs通知信号。是否有可能从应用程序内的配置图(以及机密)中获取文件的fs通知信号?如果是的话,有人能帮助我并告诉我如何做吗(最好是在GO lang中)?


共有2个答案

养振濂
2023-03-14

听起来像是你要找的那个。它将监视configmap/secret并更新与其相关的部署。

澹台鸿熙
2023-03-14

您可能会遇到这样的问题:

当ConfigMap更改时,它包含的配置文件的实际路径会更改,但这有点被两级符号链接“隐藏”:[…]

因此,您似乎需要遵循符号链接链并注意这一点。由于您的应用程序是用go编写的,您可以使用spf13/viper,因为添加了WatchConfig和Kubernetes功能。

或者,您可以通过Kubernetes API获得有关ConfigMap更改的通知。这可能需要预先配置一些访问规则。

 类似资料:
  • 我有一个小型java webapp,由三个微服务组成——api-service、book-service和db-service,所有这些都使用mini kube本地部署在kubernetes集群上。 我计划为api-service和book-service保留单独的UI,从单独的pod提供常见的静态文件,可能是映像。 我能够创建一个前端,为参考本教程的nginx:alpine中的静态文件提供服务。

  • 要获取请求URL,可以在堆栈溢出中找到以下方法。 第一种方法: 第二种方法: 第三种方法: 我不知道在spring boot应用程序中使用哪一个来获取请求URL。 如果我使用第三种方法,那么我是否需要在配置类中创建RequestContextListener的bean,如下所示?

  • 我想在通知屏幕上显示通知,无论应用程序是在后台还是前台。我为寻找解决办法而疲惫不堪。非常感谢任何帮助。

  • 当应用程序在后台时,如何更新包含数据负载的Firebase推送通知?有没有办法在通知中指定通知id给Firebase API? 完整的项目在github https://github.com/akshatashan/FireBaseCloudMessagingDemo中

  • 问题内容: 您能否解释一下如何在我的子类中获取实例?可能吗?我已尝试按照以下代码片段的方式进行操作,但它似乎不起作用- 未设置: web.xml: 问题是我需要从中获取上下文参数。如果有其他方法,请给我一个提示,我将不胜感激。 我了解注记可能并非为此目的。实际上,我不需要自己。如果只有我可以从web.xml中获取上下文参数,我将非常高兴。 这是我真正需要的一个例子: 谢谢。 问题答案: 从Jers

  • 我使用了Web API控制器中的IActionResult和邮递员的加热方法,我的功能正在工作,但没有得到成功响应。我的代码是: Postman中的响应是:无法获得任何响应连接到https://localhost:44303/api/pousada/markasinactive时出错。可能发生这种情况的原因:服务器无法发送响应:确保后端正常工作自签名SSL证书被阻止:通过关闭设置>常规代理配置错误