如何使用Kubernetes运行程序在Gitlab中为Maven添加持久卷

情况:

  • 服务器-答:我们在容器中运行Gitlab。
  • 服务器B:我们有Kubernetes

Gitlab使用Kubernetes运行程序。然后,我们的一些项目使用带有Git和Maven的docker容器构建应用程序。

Maven总是必须将各种东西下载到它的/root/.m2缓存中。我需要做的是创建一个可以供这些作业使用的持久卷,因此,一旦下载了该卷,就不必在每次有人要构建或测试某些东西时都再次进行操作。这些容器始终使用一个预制的映像重新构建。

非常基本的东西,除了我对Gitlab和Kubernetes绝对陌生。

我需要在哪里创建卷?我试图在运行程序中更改config.toml以包含host_path类型的卷,但是我不知道我是否成功,并且Maven当然每次都必须下载所有要求。我什至不知道是否必须重新启动运行器容器才能应用更改,以及如何更改。这是跑步者的config.toml:

listen_address = "[::]:9252"

concurrent = 4

check_interval = 3

log_level = "info"

[session_server]

session_timeout = 1800

[[runners]]

name = "runner-gitlab-runner-c55d9bf98-2nn7c"

url = "https://private_network:8443/"

token = "yeah, token"

executor = "kubernetes"

[runners.cache]

[runners.cache.s3]

[runners.cache.gcs]

[runners.kubernetes]

host = ""

bearer_token_overwrite_allowed = false

image = "ubuntu:16.04"

namespace = "gitlab-managed-apps"

namespace_overwrite_allowed = ""

privileged = true

service_account_overwrite_allowed = ""

pod_annotations_overwrite_allowed = ""

[runners.kubernetes.volumes.host_path]

name = "maven-volume"

mount_path = "/root/.m2"

read_only = false

我不了解我所缺少的。也许我必须在那些项目中的.gitlab-

ci.yml中定义某些内容或其他内容。我已经研究了教程,尝试了Gitlab帮助页面,但是仍然找不到有效的解决方案。

运行GitLab社区版11.6.5。

回答:

1)创建一个Kubernetes PersistentVolume(我使用NFS作为PersistentVolume类型):

apiVersion: v1

kind: PersistentVolume

metadata:

name: gitlabrunner-nfs-volume

spec:

accessModes:

- ReadWriteMany

capacity:

storage: 15Gi

mountOptions:

- nolock

nfs:

path: /kubernetes/maven/

server: NFS_SERVER_IP

persistentVolumeReclaimPolicy: Recycle

2)创建一个Kubernetes PersistentVolumeClaim:

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

name: gitlabrunner-claim

namespace: gitlab

spec:

accessModes:

- ReadWriteMany

resources:

requests:

storage: 15Gi

volumeName: gitlabrunner-nfs-volume

status:

accessModes:

- ReadWriteMany

capacity:

storage: 15Gi

3)在您的config.toml中参考PersistentVolumeClaim:

   [[runners.kubernetes.volumes.pvc]]

mount_path = "/cache/maven.repository"

name = "gitlabrunner-claim"

这使得每次使用此配置启动容器时都可以安装卷。

4)在.gitlab-ci.yml文件中,设置MVN_OPTS就像@thomas回答的那样:

variables:

MVN_OPTS: "-Dmaven.repo.local=/cache/maven.repository"

以上是 如何使用Kubernetes运行程序在Gitlab中为Maven添加持久卷 的全部内容, 来源链接: utcz.com/qa/403124.html

回到顶部