场景设置:
我已经设置了一个多节点 Kubernetes cluster 并使用 Jenkins Helm Chart 部署了 Jenkins Kubernetes plugin 。我们在(公司)内部运行企业 GitHub 安装,我们有多个私有(private)和公共(public)存储库。构建是使用非声明性 Jenkins pipelines ( many features are missing in the plugin for declarative pipelines ) 实现的。构建不在 Jenkins 主节点上运行,但由于显而易见的原因(最大横向扩展和完全隔离/无副作用),每个作业运行都会通过 podTemplates/containerTemplates 消耗自己的 pod。

问题/问题:
我没有找到如何从私有(private)存储库中获取的方法或描述,或者更一般地说,我发现无法从 Jenkins 主站(我喜欢集中维护它们的地方)中提取任何凭据/ secret 到插件创建的 pods/容器中对于我的工作运行,即我想念那些 pod /容器,例如从私有(private) repo 中提取的凭证/ secret 。我怎样才能在动态生成的 pods/containers 中提供这些?这甚至可能吗?

一些附加信息:
在我的 Jenkins master 上,我可以完美地从私有(private)仓库中获取,可以访问所有内容,一切都很好。直到最近我才尝试使用 Kubernetes 插件并从我的集群中获得更多。此外,我 kubectl exec 进入 JNLP 从属容器(及其基于我的 containerTemplates 的兄弟容器)并且找不到任何东西。不在 ENV 中,不在文件中。我不清楚我的凭据/ secret 将如何被注入(inject),以及我需要为此做些什么。

我已经使用过肮脏的解决方案,但我喜欢替换:
为了解决这个问题,我将我的凭据放入 JenkinsFile 中,但这很糟糕,因为我现在将它们涂抹在我的存储库中,而且这也不是公共(public)存储库的解决方案。我还做的是将它们烘焙到我的 pod/容器模板的图像中,但由于类似的原因,这很丑陋,因为我现在将它们放入 DockerFiles(在构建过程中直接或间接)并且不能使用现成的图像也不能再把我的放到公共(public)镜像仓库中了。我想也可以修改我最顶层的 podTemplate/containerTemplate 并手动添加带有凭证/ secret 的 ENV 变量,但这很丑陋,因为我不会再使用 Jenkins 主凭证/ secret 存储。

我正在寻找解决问题的干净方法。我希望,有可能将我的凭据/ secret 从 Jenkins 主服务器带入我也喜欢保留的动态生成的 pod/容器中(不是静态从属,而是针对每个作业运行的动态从属)。

最佳答案

git url: 'private-gitlab-address',
    branch: 'master',
    credentialsId : 'my_jenkins_credential_id'

您可以通过此页面创建自己的 my_jenkins_credential_id 可用 globaly :
jenkins-master-address/credentials/store/system/domain/_/newCredentials

关于jenkins - 在管道执行期间,Jenkins Kubernetes 插件没有从 master 提取凭据/ secret 到 PodTemplate/ContainerTemplate 吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46021541/

10-13 07:54