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

时间:2018-11-13 20:00:50

标签: git jenkins kubernetes kubernetes-helm jenkins-blueocean

我有一个使用stable Jenkins Helm chart和BlueOcean插件的CI系统。

在我的SCM系统(BitBucket服务器)中,我有一个配置了SSH密钥的Jenkins构建用户。

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

Jenkins Helm图表文档在Agent.volumes中指定了一个values.yaml值,该值可用于装入(例如)包含SSH密钥的Kubernetes机密。但是,这是 agent 配置,因此大概可以允许来自构建代理(例如,来自Jenkinsfile)的SCM身份验证。我要做的是将密钥引导到Jenkins master 中。

我看到有一个Master.CredentialsXmlSecret,它允许包含凭证XML文件的Kubernetes机密,但是有关此文档的文档很少(或不存在)。

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

* Edit:因此,通过登录到Jenkins并手动设置SSH密钥,然后复制生成的credentials.xml文件,并通过{{1 }}编码,将其添加为Kubernetes机密,然后将其绑定到Jenkins Helm图表的credentials.xml中的base64。之后,我的Jenkins实例加载了Master.CredentialsXmlSecret文件(values.yaml)。凭据似乎没有正确加载到Jenkins UI中,但我认为我走在正确的轨道上。

1 个答案:

答案 0 :(得分:1)

您可能可以通过对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>"

文档here或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

记录here

不确定您要查找哪种类型的权限,但您可能需要a repo SSH key pair获得Jenkins Blue Ocean管道。

无论哪种情况,您都必须使用entrypoint脚本构建您的自定义docker映像,该脚本将拾取生成的ssh密钥并将其发布到您要发布的任何位置。