首页 文章

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

提问于
浏览
0

我使用带有BlueOcean插件的stable Jenkins Helm chart设置了CI系统 .

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

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

Jenkins Helm图表文档指定 values.yaml 中的 Agent.volumes 值,可用于挂载包含SSH密钥的Kubernetes机密 . 然而,这是代理配置,因此可能允许来自构建代理(例如,来自Jenkins文件)的SCM认证 . 我想要做的是将密钥引导到Jenkins master .

我看到有一个 Master.CredentialsXmlSecret 允许包含Credentials XML文件的Kubernetes机密,但是关于它的文档很稀疏(或者不存在) .

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

*编辑:所以我设法生成一个正确的 credentials.xml 文件,登录到Jenkins并手动设置SSH密钥,然后复制生成的 credentials.xml 文件,通过 base64 编码运行它,将其添加为Kubernetes秘密,然后将其绑定到 Master.CredentialsXmlSecret 在詹金斯头盔图表中 values.yaml . 执行此操作后,我的Jenkins实例将加载 credentials.xml 文件( /var/jenkins_home/credentials.xml ) . 凭证在正确的轨道上显示't appear to be loading into the Jenkins UI correctly but I think I' m .

1 回答

  • 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密钥并将其发布到您要发布的任何位置 .

相关问题