情况:
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"
问题内容: 在Debian服务器上,我安装了Node.js。我了解如何使用以下命令行从腻子启动应用程序: 并通过地址(IP和端口)访问它。 但是,一旦我关闭腻子,那我就无法到达地址了。 如何使Node.js应用程序永久运行? 如您所料,我是Linux和Node.js的初学者。 问题答案: 尽管其他答案解决了OP的问题,但它们都是过大的,不能解释为什么他或她遇到此问题。 关键是这一行,“我关闭油灰,
我想运行perl6/raku Cro应用程序,作为前端Web服务器后面的服务。 只是运行不会处理分段错误后的重新启动 以前在perl5中,我使用过FastCGI-但是的惯用语看起来不兼容FastCGI::Native的示例。 由确实有一个处理程序,但是我不确定这是否足以在服务中指向它,即。 人们目前如何托管Cro应用程序?
问题内容: 我试图在将Hibernate与PostgreSQL数据库结合使用以实现持久性的同时使用Maven开发Java应用程序。我不明白如何将PostgreSQL驱动程序连接到我的应用程序。我知道您在Maven的pom.xml文件中添加了依赖项,该文件从远程存储库中查找jar,但是其他jar呢? 问题答案: PostgreSQL驱动程序jars包含在Maven的中央存储库中: 包含的Postgr
我有一个Kubernetes pod(让我们称之为POD-A),我希望它使用某个配置文件来使用k8s API执行一些操作。配置文件将是一个YAML或JSON,由POD中的应用程序解析。 配置文件由云上的应用服务器托管,它的最新版本可以根据触发器提取。配置文件包含k8s集群中所有部署的配置细节,并将用于使用POD-A中的k8s API更新部署。 现在我想的是将这个配置文件保存在配置映射中,每次拉出一
我现在尝试在Kubernetes集群上运行一个带有shell(/bin/bash)的简单容器。 我认为有一种方法可以通过使用和detach选项(命令上的选项)来保持容器在Docker容器上运行。 但是容器会退出几秒钟(就像使用命令启动一样,没有上面提到的选项)。并且ReplicationController重复地再次启动它。 是否有一种方法可以像命令中的选项一样,使容器在Kubernetes上运行
问题内容: 我现在正在尝试在Kubernetes集群上运行带有shell(/ bin / bash)的简单容器。 我以为有一种方法可以通过使用and detach选项(命令上的选项)来保持容器在Docker容器上运行。 例如, Kubernetes中有这样的选择吗? 我试过使用类似以下的命令来运行容器: 但是容器会退出几秒钟(就像使用不带我上面提到的选项的命令启动一样)。然后Replication