如何使用Kubernetes和Helm为Jenkins Blue Ocean设置SSH密钥



我使用稳定的Jenkins-Helm图表和BlueOcean插件建立了一个CI系统。

在我的SCM系统(BitBucket Server(中,我创建了一个Jenkins构建用户,并配置了SSH密钥。

我想做的是使用SSH密钥引导Jenkins安装,这样在配置BlueOcean管道时,身份验证就可以无缝处理。事实上,我必须进入我想要构建的存储库,并添加对BlueOcean生成的SSH密钥的访问权限。这显然并不理想,因为它为要配置的每个构建管道添加了额外的手动步骤。

Jenkins-Helm图表文档在values.yaml中指定了一个Agent.volumes值,该值可用于装载例如包含SSH密钥的Kubernetes机密。然而,这是代理配置,因此可能允许从构建代理(例如,从Jenkinsfile(进行SCM身份验证。我想做的是将密钥引导到Jenkinsmaster中。

我看到有一个Master.CredentialsXmlSecret,它允许一个包含Credentials XML文件的Kubernetes秘密,但有关这方面的文档很少(或根本不存在(。

有人用这种SSH配置在Kubernetes/Hem上设置Jenkins吗?

*编辑:所以我已经成功地生成了一个正确的credentials.xml文件,方法是登录Jenkins并手动设置SSH密钥,然后复制生成的credentials.xml文件,通过base64编码运行它,将它添加为Kubernetes机密,然后将它绑定到Jenkins-Helm图表的values.yaml中的Master.CredentialsXmlSecret。完成此操作后,我的Jenkins实例将加载credentials.xml文件(/var/jenkins_home/credentials.xml(。凭据似乎没有正确加载到Jenkins UI中,但我认为我走在了正确的轨道上。

您可以通过对bitbucket的API调用来设置SSH密钥。API 1.0 类似

$ curl --user <USER>:<PASSWORD> -X POST 
  https://bitbucket.org/api/1.0/users/<USER>/ssh-keys 
  --data-urlencode "key=<PUBLIC_KEY>" 
  --data-urlencode "label=<LABEL>"

此处记录,或API 2.0:

 $ curl -X POST -H "Content-Type: application/json" 
   -d '{"key": "ssh-ed25519 ...."}' 
   https://api.bitbucket.org/2.0/users/<USER</ssh-keys

此处记录

不确定您正在寻找什么类型的权限,但您可能想要Jenkins Blue Ocean管道的repo SSH密钥对。

在任何一种情况下,您都必须使用一个入口点脚本来构建您的自定义docker映像,该脚本会拾取生成的ssh密钥,并将其发布到您想要发布的任何位置。

相关内容

  • 没有找到相关文章

最新更新