【问题标题】:Permission denied metricbeat on openshiftopenshift上的权限被拒绝metricbeat
【发布时间】:2019-07-06 12:19:11
【问题描述】:

我正在尝试在 openshift 上部署 metricbeat,但经过数小时的工作后,我无法让它工作。 相同的图像在 docker 上正常运行。 谢谢你

#Dockerfile

FROM docker.elastic.co/beats/metricbeat:7.2.0
COPY metricbeat.yml /usr/share/metricbeat/metricbeat.yml
USER root 
RUN mkdir /var/log/metricbeat \
    && chown metricbeat /usr/share/metricbeat/metricbeat.yml \
    && chown metricbeat /usr/share/metricbeat/metricbeat \
    && chmod go-w /usr/share/metricbeat/metricbeat.yml \
    && chown metricbeat /var/log/metricbeat

COPY entrypoint.sh /usr/local/bin/custom-entrypoint
RUN chmod +x /usr/local/bin/custom-entrypoint \
    && chown metricbeat /usr/local/bin/custom-entrypoint

ENV PATH="/usr/share/metricbeat:${PATH}"

USER metricbeat

ENTRYPOINT [ "/usr/local/bin/custom-entrypoint" ]

#entrypoint.sh
#!/usr/bin/env bash
/usr/share/metricbeat/metricbeat -e --strict.perms=false -c /usr/share    /metricbeat/metricbeat.yml  

错误:/usr/local/bin/custom-entrypoint:第 2 行:/usr/share/metricbeat/metricbeat:权限被拒绝

【问题讨论】:

  • 你能检查一下该文件有什么确切的权限docker run -it --rm image-name /bin/sh然后ls -ltrh /usr/share/metricbeat/
  • 这是结果:-rwxr-x---
  • 映像设计为以root 运行,但OpenShift 将以不同于root 的分配用户ID 运行。你需要设计你的镜像来处理这个问题,或者放宽 OpenShift 的安全策略。 cookbook.openshift.org/users-and-role-based-access-control/…
  • 谢谢@mchawre,我会尝试构建整个项目。

标签: docker kubernetes openshift metricbeat


【解决方案1】:

Dockerfile显示切换到root用户,同时在构建镜像时设置目录结构和权限,最后切换到USER metricbeat运行容器。

但是,默认情况下,OpenShift 使用具有随机 UID(来自预配置范围)的用户运行容器。

一种选择是按照 Graham Dumpleton 的建议放宽安全策略。

为了在不放松安全性的情况下使其正常工作,我建议按如下方式更改所有权:

RUN chown -R metricbeat:root /usr/share/metricbeat \
 && chmod -R 0775 /usr/share/metricbeat

...或者将以上两个命令合并到第一条RUN 指令中。

【讨论】:

    猜你喜欢
    • 2014-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    相关资源
    最近更新 更多