【发布时间】:2021-09-25 19:39:59
【问题描述】:
Kubernetes cronjob 可用于使用 git 存储库中的最新数据更新某些卷。
containers:
- name: hello
image: alpine/git
volumeMounts:
- name: requirements
mountPath: /workdir
imagePullPolicy: IfNotPresent
command:
- /bin/sh
- -c
- cd /workdir/dashboard; git pull http://url..
但它还没有准备好开箱即用。如果卷为空,我需要先执行 git clone,然后每次执行 git pull。
但是由于某种原因,将 bash if 语句作为 cronjob 命令不起作用 - cronjob 只会失败。
if cd /workdir/dashboard; then git pull http://url..; else git clone http://url..; fi
日志是fatal: not a git repository (or any parent up to mount point /) Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set)
有谁知道如何让它工作?
【问题讨论】:
-
不使用 Git,您可以将您的内容放入 Docker 映像,然后在 Deployment 中更新
image:标签吗?您希望在这本书中包含哪些内容? -
“命令由于某种原因不起作用”——会发生什么? pod 日志中是否有错误?
-
@larsks 致命:不是 git 存储库(或挂载点 / 之前的任何父级)停止在文件系统边界(未设置 GIT_DISCOVERY_ACROSS_FILESYSTEM)。当我在没有 git clone 的情况下运行 cronjob 时,也会引发同样的错误。据我了解,命令在 git pull 处停止
-
@DavidMaze requirements.txt 文件。
-
该错误听起来像是您正在运行
git pull而不是git clone。可能只是调试你的脚本(也许添加set -x?)会让你发现问题的根源。也许/workdir/dashboard存在但不是 git 存储库?
标签: git kubernetes cron yaml