0

有没有办法jts-core在文件夹中安装/下载库SOLR_INSTALL/server/solr-webapp/webapp/WEB-INF/lib/?如官方指南中所述:https ://solr.apache.org/guide/8_10/spatial-search.html#jts-and-polygons-flat

实际上,我尝试将下载此类 jar 的 an 放在中间initContainer,但显然我Permission denied从 Solr 容器中获得了 a,因为只有 root 才能在最终的 solr 容器上写入。

我还尝试securityContext只为我的, 设置一个initContainer,以便以 root 身份运行,但是该配置在 中没有效果initContainer,我认为 Solr CRD 看不到它。

podOptions:
  initContainers:
  - name: "install-jts-core"
    image: solr:8.9.0
    command: ['sh', '-c', 'wget -O /opt/solr-8.9.0/server/solr-webapp/webapp/WEB-INF/lib/jts-core-1.15.1.jar https://repo1.maven.org/maven2/org/locationtech/jts/jts-core/1.15.1/jts-core-1.15.1.jar']
    securityContext:   <--- this has no effect on SolrCloud CRD
      runAsUser: 0

另一种分散尝试是设置 a podSecurityContext.runAsUser: 0,因此对于 pod 中的所有容器,但 Solr 不运行 as root,我顺便放弃了该选项。

请问有什么提示/想法/解决方案吗?

非常感谢您提前。

4

2 回答 2

1

我最近发现了一个可能不优雅的解决方案,但在任何版本的 Solr 图像中都能很好地工作,下面是一个配置示例:

podOptions:
  initContainers:
  - name: "install-jts-lib"
    image: solr:8.9.0
    command:
    - 'sh'
    - '-c'
    - |
      wget -O /tmp-webinf-lib/jts-core-1.15.1.jar https://repo1.maven.org/maven2/org/locationtech/jts/jts-core/1.15.1/jts-core-1.15.1.jar
      cp -R /opt/solr/server/solr-webapp/webapp/WEB-INF/lib/* /tmp-webinf-lib
    volumeMounts:
    - mountPath: /tmp-webinf-lib
      name: web-inf-lib
  volumes:
  - name: web-inf-lib
    source:
      emptyDir: {}
    defaultContainerMount:
      name: web-inf-lib
      mountPath: /opt/solr/server/solr-webapp/webapp/WEB-INF/lib

在此示例中,我创建了一个emptyDir卷并将其initContainer附加到target directory ($SOLR_HOME/server/solr-webapp/webapp/WEB-INF/lib).

这将清空../WEB-INF/lib目录,但由于我使用的是相同的 Solr 图像,所以我可以在最后复制../WEB-INF/lib(jar 和文件夹)的内容initContainer

效果是最终容器将拥有它应该拥有的所有内容以及jts-core-1.15.1.jarjar。

这也适用于您想要在 Solr 容器中引入的其他文件或库。

让我知道您对这种解决方法有何看法

谢谢你。

于 2021-11-09T13:43:14.263 回答
0

在这种情况下,它与权限或 CRD 无关;由于命名空间隔离,a 下载的文件install-jts-core将不可用于其他容器。

您可以使用 solr 作为基础镜像和 jar 来创建一个 DockerfileCOPY到镜像中。然后在 helm install 期间替换image.repositorysolr helm 参数。通过这种方式,您可以运行预先安装了库的映像。

于 2021-11-04T05:17:17.423 回答