我正在使用kubernetes 插件在 jenkins上设置管道来编译一些代码。
我的目标:
在这个管道中,我试图从 docker 容器中访问一些数据,以便在一秒钟内将其用作缓存(如下所示)。
apiVersion: v1
kind: Pod
metadata:
name: cache-test
spec:
restartPolicy: Never
volumes:
- name: shared-data
emptyDir: {}
containers:
- name: cache-container
image: cache:latest
volumeMounts:
- name: shared-data
mountPath: /cache
command:
- cat
- name: debian-container
image: debian
volumeMounts:
- name: shared-data
mountPath: /pod-data
command:
- cat
问题:
我的问题是,当我直接安装时,我shared-folder
的/cache
所有数据都会被删除(覆盖)。
解决方法:
一种解决方法是创建一个中间目录,我可以在其中复制我的数据:
apiVersion: v1
kind: Pod
metadata:
name: cache-test
spec:
restartPolicy: Never
volumes:
- name: shared-data
emptyDir: {}
containers:
- name: cache-container
image: cache:latest
volumeMounts:
- name: shared-data
mountPath: /shared-folder
command:
- cat
- name: debian-container
image: debian
volumeMounts:
- name: shared-data
mountPath: /pod-data
command:
- cat
在我的 Jenkins 管道中添加这一步:
container('cache-container') {
sh """#!/usr/bin/env bash
set -exu
cp -r /cache/* /shared-folder
"""
} // container
问题:
有没有办法避免这个复制步骤?也许 kubernetes 卷设置不会覆盖容器中的内容?我浏览了几次文档,但没有找到任何东西..