是否可以使用 Kubernetes Deployment 和 PVC 引导 Artifactory-OSS Docker



我们希望运行引导程序默认artifactory.config.xmlsecurity.import.xml文件来预定义我们的用户和存储库。

我们还希望使用持久存储(特别是 PVC(在容器重启之间持久化项目。

根据他们的文档,您可以通过将配置文件放入artifactory_extra_config来设置额外的配置,它们将在容器启动时复制到$ARTIFACTORY_HOME/etc目录中。然而,Artifactory OSS似乎并非如此。

根据掌舵图: Bootstrapping Artifactory IMPORTANT: Bootstrapping Artifactory needs license. Pass license as shown in above section.

文档还提到,将artifactory.config.import.xmlsecurity.import.xml放在$ARTIFACTORY_HOME/etc目录中允许引导。

我们已经从 Artifactory-oss:6.1.0 基础映像构建了一个自定义 docker 映像,只需将两个配置文件复制到$ARTIFACTORY_HOME/etc目录,但在/var/opt/jfrog/artifactory处附加 PVC 似乎覆盖了导致引导失败的配置。

我发现 Helm 图表将包含引导配置文件的 ConfigMap 挂载到/bootstrap/卷中,并将它们复制到lifecycle.postStart命令中的/artifactory_extra_conf。这似乎也不起作用。

我注意到Artifactory PRO基础映像的ENV包含ARTIFACTORY_EXTRA_CONF=/artifactory_extra_conf而Artifactory OSS不包含。

我还尝试了一些实验,将自定义映像中的配置文件复制到其他目录并使用initContainers复制加载卷,但到目前为止,我尝试过的任何东西都不允许我引导 Arrtifactory OSS 并使用挂载在/var/opt/jfrog/artifactory的持久卷。

我在 Artifactory 的 Dockerfile 中指出,/var/opt/jfrog/artifactory子目录实际上链接到基本映像中相应的/opt/jfrog/artifactory目录。

我们的解决方案是修改他们的/entrypoint-artifactory.sh并创建自定义映像。

首先,我们在/etnrypoint-artifactory.sh中添加了一个copyExtraConf()的新函数

copyExtraConf () {
logger "Copying from artifactory_extra_conf"
chown ${ARTIFACTORY_USER_NAME}:${ARTIFACTORY_USER_NAME} /artifactory_extra_conf/*
cp -pv /artifactory_extra_conf/* ${ARTIFACTORY_HOME}/etc/
}

然后,我们在设置目录和用户后调用它,以防止装载卷的所有权错误:

printDockerFileLocation
checkULimits
checkMounts
setupDataDirs
setupArtUser
# CUSTOM:START - do this after setupDataDirs and setupArtUser so we can chown and copy our files.
copyExtraConf
# CUSTOM:END
setAccessCreds
setMasterKey
setupPermissions
setDBType
addExtraJavaArgs

Dockerfile:

# Dockerfile
#
# NOTE:
# entrypoint-artifactory.sh is based on the one from artifactory-oss:6.1.0
# When changing versions, be sure to compare entrypoint-artifactory-ta.sh to entrypoint-artifactory.sh
FROM docker.bintray.io/jfrog/artifactory-oss:6.1.0
COPY entrypoint-artifactory.sh /entrypoint-artifactory.sh
RUN chmod +x /entrypoint-artifactory.sh
ENTRYPOINT ["/entrypoint-artifactory.sh"]
COPY configs/artifactory.config.import.xml /artifactory_extra_conf/artifactory.config.import.xml
COPY configs/security.import.xml /artifactory_extra_conf/security.import.xml

我必须成为root才能交换/entrypoint-artifactory.sh

FROM docker.bintray.io/jfrog/artifactory-oss:6.16.0
USER root
COPY entrypoint-artifactory.sh /entrypoint-artifactory.sh
RUN chmod +x /entrypoint-artifactory.sh
COPY configs/artifactory.config.import.xml /artifactory_extra_conf/
COPY configs/security.import.xml /artifactory_extra_conf/
USER artifactory
ENTRYPOINT ["/entrypoint-artifactory.sh"]

最新更新