FROM docker.io/bitnami/kubectl:1.25.5 AS kubectl
FROM docker.io/jenkins/agent:4.13-3
USER root
COPY --from=kubectl /opt/bitnami/kubectl/bin/kubectl /usr/local/bin/kubectl
RUN usermod --shell /bin/bash jenkins
USER jenkins
ENTRYPOINT ["/usr/local/bin/jenkins-agent"]
2条答案
按热度按时间z0qdvdin1#
我想说,这个问题可以在几个不同的层面上解决。
如果可能的话,我会从
container image
开始。你可以在构建过程中复制二进制文件,这样它就可以被烘焙,你的图像就不会变。示例:
如果在构建过程中无法下载所需的二进制文件,我们也可以使用
ENTRYPOINT
,在那里我们提供一些脚本,将下载一些东西到特定位置或安装一些东西。通过这种方法,我们可以使用环境变量来参数化我们的脚本。最后一个选项是使用一些k8s资源,如前面提到的
initContainer
或configMap
。总结一下,从安全的Angular 来看,我建议第一种方法是最好的选择。如果这不可能,你需要选择在哪里放置下载步骤。如果你是应用程序
Dockerfile
和k8s的所有者,选择最适合你的。如果开发人员是应用程序的所有者,他们正在生产容器映像,我会选择一些k8s资源,因为它会更容易为您管理它。suzh9iv82#
...use initContainer to download
如何维护这样的文件在NFS上,你的容器可以在运行时挂载。这样你就不需要下载每次pod启动,也为你提供了一种方法来预筛选,签名和批准文件,可以在集群中使用。