问题标签 [jenkins-kubernetes]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jenkins - 在 Jenkins Kubernetes Pipeline 中创建然后使用容器的模式
我是 Jenkins 的长期用户,但对 Kubernetes 有点陌生,并在这里寻求专家的一些指导。基本上,我有许多项目需要三步构建:
- 运行一些流程以生成定制的 Containerfile。
- 将该 Containerfile 转换为图像(buildah、kaniko、img 等)。
- 为该图像创建一个新的“工作”容器,输入它,然后做一些事情。
刚开始,Kubernetes pods 是不可变的,所以工作容器不能在以后添加,但如果它的镜像没有,它也不能与初始容器同时创建。还存在。因此,要使其正常工作,它需要一个多 pod 构建。这似乎是可行的,但可能更适用于并行而不是顺序运行多个进程的情况 [ 1 ]。
第二种可能的方法是将工作容器作为 Kaniko 映像启动,然后使用 Kaniko 执行程序“就地”构建它,然后在步骤 3 中输入它。
最后,我可以将其拆分为两个 Jenkins 作业——让第一个准备容器,然后使用参数化触发器让第二个获取并运行它。
我认为我可以使这些方法中的任何一种都起作用,但我不想在这方面与系统抗争——什么是最能使我与良好实践和这些工具的设计意图保持一致的选项?
jenkins - Jenkins kubernetes 代理结帐 scm 未使用配置的密钥
checkout scm
由于两个问题,我在管道中使用时遇到错误。
设置:
- 私有 Kubernetes 集群 - 1 个控制器,2 个工作器,在 Ubuntu 20.04 虚拟机上
- Jenkins 在 Kubernetes pod 中运行
- Kubernetes 插件实例化 Jenkins 构建代理
- 集群外控制器 VM 上的私有 GIT 服务器,ssh 访问
- 在 Jenkins 凭证中配置的 GIT 的 ssh 私钥
- Jenkins 项目 'hello' 配置为使用此私有 GIT 和关联的 ssh 密钥
- Jenkinsfile(管道)构建
我想checkout scm
在 Jenkinsfile 中使用一个简单的步骤。
问题 1构建失败,Host key verification failed.
因为 Kubernetes 代理 pod 的known_hosts
.
问题 2如果我强制控制器证书进入known_hosts
(例如,将 echo 硬编码到 Jenkinsfile 中,然后添加一个git ls-remote
步骤),它会失败,Permission denied
因为代理 pod 中不存在配置的 ssh 私钥。
我找到了解决这两种方法的方法:
我需要什么来避免这种解决方法并按checkout scm
预期使用?
失败日志示例:
jenkins - 在詹金斯装饰管道中使用 kubernetes 代理的 yamlFile 中的参数
我有一个用于多个管道的共享 yaml 文件,我想参数化 yaml 文件中其中一个图像的标签。
最简单的方法是什么?目前我正在维护多个KubernetesPods.yaml
,例如KubernetesPods-1.5.0.yaml
并将参数插入名称(yamlFile "KubernetesPods-${params.AGENT_POD_SPEC}.yaml"
),但这不能很好地扩展。
我可以在不必在每个管道中写出 yaml 的情况下将参数放入 yaml 吗?
示例管道:
KubernetesPods.yaml 示例:
jenkins - 詹金斯 + Kubernetes + ccache
我们正在考虑将 Jenkins 迁移到 Kubernetes (GKE) 并使用 Jenkins Kubernetes 插件在 pod 中运行作业。但是,我们的构建基础设施使用 ccache 来优化构建速度,并且我们将 ccache 文件保存在 jenkins 代理上(每个构建都会读取和写入每个代理上的本地 ccache 文件夹)。
据我了解,k8s 中的 Jenkins 代理 pod 是短暂的,这意味着它们仅供一次性使用。我正在努力了解 ccache 是如何工作的。这是我的想法:
- 在 pod 模板中使用 hostpath 卷让代理 pod 在节点上挂载路径。恐怕这行不通,因为基于 GKE 文档 hostpath 不允许 ReadWriteMany,这意味着多个 pod 将无法同时写入 ccache 挂载。
- 使用基于 NFS 的卷 - 我知道它不会很好地工作,因为它会很慢并且会出现锁定问题。
- 以某种方式配置带有“podRetention”和“idleMinutes”选项的 pod 模板,以便重新使用 Pod。我认为这是可行的,但 IMO 这违背了使用 Kubernetes 的目的。
- 使用 StateFull Jenkins 代理——我再次认为这是可行的,但违背了使用 Kubernetes 的目的。
我发现https://issues.jenkins.io/browse/JENKINS-42422可能是相关的,但我认为没有解决方案。
关于如何实施的任何其他想法?不能使用 ccache 对我们来说是一个交易破坏者,因为与静态代理相比,它会使构建周转时间变得更糟。
jenkins - Jenkins 2.249.1 + 插件 + kubernetes pod
我们是否有任何来源可以找到哪些插件与 Jenkins 版本兼容 - 2.249.1,目前我们正在使用不同的插件,如下所示
我的jenkins pod一直在重启,它抱怨“基本配置验证失败,请更正Jenkins CR ”,我们收到错误消息
jenkins-kubernetes - 有没有办法在 powerPC (ppc64le) 架构上安装 Jenkins-Operator?
我正在尝试在 kubernetes on power (ppc64le) 架构上安装 jenkins-operator,但我还没有找到任何合适的 jenkins-operator 映像可以安装在 power 架构上。有没有办法在电源上安装它?
如果有办法安装它或者如果有人已经尝试过安装电源,请给我一些指示。
jenkins - 如何在代理中运行的作业脚本中访问 JENKINS_HOME
在这种情况下,Jenkins 托管在 Kubernetes 上,并使用 kubernetes 插件在同一集群上将代理作为 pod 运行。
- jenkins_home 是安装在主服务器上的 pvc。
- jenkins 代理工作区默认定义为代理清单上的 emptydir 卷。
鉴于此,我正在编写一个使用 pod 作为代理并希望读取 jenkins_home 下的文件的管道脚本。默认情况下,它会切换到作为 emptyDir 挂载的作业工作区。
我显然不能cd $JENKINS_HOME
,因为该卷没有安装。
我可以通过哪些方式实现这一目标?一种方法是将 jenkins_home 卷安装到代理?请问还有其他解决方案吗?
探索的替代解决方案:作为代理在主服务器上运行步骤 -> 不鼓励这样做,因为出于安全原因,主服务器上的执行程序需要为零。
jenkins - 通过 Jenkins 使用 Kubernetes 中的现有服务
我有一个 Jenkins 管道,它使用 Kubernetes 插件在云中运行应用程序。
到目前为止,我有一个配置 pod 的简单 yaml 文件。Jenkins 管道创建一个 pod 并执行一些操作(它正在解析一些数据)。
我创建了一个已部署的服务(带有 1 个副本),我想在 Jenkins 中使用它,而不是每次运行时都创建同一个 pod。
有人可以建议如何做到这一点吗?目前这是我运行管道的方式:
您能否建议我每次运行管道时如何使用创建的服务“日志解析器”而不是创建一个 pod?
jenkins - Jenkins Kubernetes 插件云选择
我在我们公司有 2 个集群。一个由 Jenkins 与 Kubernetes 插件一起使用。它运作良好。不,我尝试将第二个集群添加到插件并在此集群内启动管道,但看起来 JEnkins 忽略了新集群。我尝试使用:
我已将“第二集群”添加到 Jenkins 的云设置中。Master的IP和端口没问题。我还添加了 jenkins-agent 命名空间并在那里安装了“pipelineinstance”服务。
但最终它总是在“第一集群”中运行。我需要将云参数放在另一个位置吗?
jenkins - 一段时间后,Jenkins Kubernetes 插件 URL 连接失败
正如标题所示,我遇到了一个奇怪的问题。
我在 IBM Cloud 上的 Kubernetes 集群上运行我的 Jenkins。我使用 kubernetes 插件来配置云并动态创建从容器来运行作业。
当我设置这个云配置时,我提供了 Jenkins 所在集群的 Kubernetes 公共服务端点 URL(正如我在其他一些指南中找到的),作为 Kubernetes URL。我可以对其进行测试,并且可以成功运行。
奇怪的是,在运行了几个作业之后,它开始给我错误,它无法启动容器。
如果我回到云配置,然后单击“测试连接”,它现在会抛出一个错误:Error testing connection https://<Public Service Endpoint URL>: null
. 如果我重新启动 Jenkins,它会再次运行。
非常感谢任何建议!谢谢!