如何将`nifi.properties`文件位置从`/opt/nifi/nifi-current/conf/`更改为其他位置

问题描述 投票:0回答:1

我正在尝试做的事情:

我正在尝试在 kubernetes 中将 nifi 作为单个 Pod 有状态集运行,并将持久卷附加到

/mnt/
并在其中安装了一些配置映射
/mnt/

我尝试过的:

  1. 我创建了
    nifi.properties
    作为配置映射,当我安装在
    mountPath
    subPath
    中时,但像这样安装替换了
    /opt/nifi/nifi-current/conf/
    中存在的所有其他文件,并且 Pod 无法启动。 我如何安装 nifi.properties:
        - name: nifi-properties
          mountPath: /opt/nifi/nifi-current/conf/nifi.properties
          subPath: nifi.properties
      volumes:
      - name: nifi-properties
        configMap:
          name: nifi-properties

启动 nifi pod 时出现以下错误。

File [/opt/nifi/nifi-current/conf/nifi.properties] replacing [nifi.web.https.port]
sed: cannot rename /opt/nifi/nifi-current/conf/sedROXqjT: Device or resource busy

但是,如果我以与上面相同的方式安装

zookeeper.properties
。 Pod 可以正常启动,不会出现任何错误。

  1. 我在我的 Pod 中使用了这个
    env
    NIFI_PROPERTIES_FILE=/mnt/nifi.properties

我需要什么:

  1. 了解如何告诉 nifi 从不同位置读取
    nifi.properties
    文件。
  2. 了解nifi所有状态数据持久化的正确方法。
  3. /opt/nifi/nifi-current/conf/
    中挂载一些配置文件(存在于conf/中)而不覆盖其他默认配置。

如果可能的话,请与我分享一些关于如何将 nifi 迁移到 k8s 或在 kubernetes 上开始使用 nifi 的好文章/视频/课程。

kubernetes apache-nifi
1个回答
0
投票

我最近遇到了同样的问题。我发现NiFi的启动脚本使用sed修改nifi.properties。但是,如果安装该文件,它将是只读的。我通过修改YAML文件解决了这个问题,如下:

volumes:
  - ./config/nifi/nifi.properties:/opt/nifi/nifi-current/conf/nifi-orig.properties
entrypoint: /bin/bash
command: |
  -c "
  cp /opt/nifi/nifi-current/conf/nifi-orig.properties /opt/nifi/nifi-current/conf/nifi.properties && \
  /opt/nifi/scripts/start.sh
  "
© www.soinside.com 2019 - 2024. All rights reserved.