摘要

Jenkins连接低版本的Kubernetes(v1.11以下)时不需要进行验证,但新版本开启了https验证,需要为Jenkins制作访问apiserver的证书。

安装Kubernetes插件

登陆Jenkins后点击系统管理->插件管理->可选插件
在右上角搜索框中输入kubernetes,在下方筛选出来的结果中找到“Kubernetes”后,点击直接安装:
在这里插入图片描述
点击下方“安装完成后重启(空闲时)”按钮,重启Jenkins后生效。
重新登陆后点击“系统管理->系统配置”,拉到最下方选择“新增一个云”,如下:在这里插入图片描述
点击跳转后就会出现Kubernetes的配置界面,进行配置:在这里插入图片描述
没配置证书前的连接测试是会失败的,因为新版本的apiserver接口都是通过https去访问的,所以我们需要在k8s的master节点上为jenkins服务器生成一个credential。

创建证书

登陆master节点,输入以下命令安装cfssl,此工具生成证书非常方便, pem证书与crt证书,编码一致可直接使用:

wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
chmod +x cfssl_linux-amd64
mv cfssl_linux-amd64 /usr/local/bin/cfssl

wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
chmod +x cfssljson_linux-amd64
mv cfssljson_linux-amd64 /usr/local/bin/cfssljson

wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
chmod +x cfssl-certinfo_linux-amd64
mv cfssl-certinfo_linux-amd64 /usr/local/bin/cfssl-certinfo

准备签名证书请求

vim admin-csr.json
{
  "CN": "admin",
  "hosts": [],
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C": "CN",
      "ST": "HangZhou",
      "L": "XS",
      "O": "system:masters",
      "OU": "System"
    }
  ]
}

证书请求中的O 指定该证书的 Group 为 system:masters
而 RBAC 预定义的 ClusterRoleBinding 将 Group system:masters 与 ClusterRole cluster-admin 绑定,这就赋予了该证书具有所有集群权限 。

创建证书和私钥

cfssl gencert -ca=/etc/kubernetes/pki/ca.crt -ca-key=/etc/kubernetes/pki/ca.key --profile=kubernetes admin-csr.json | cfssljson -bare admin
#会生成如下三个文件
admin.csr
admin-key.pem
admin.pem

然后生成pkc证书,通过openssl来将证书转换为pkc格式:

openssl pkcs12 -export -out ./jenkins-admin.pfx -inkey ./admin-key.pem -in ./admin.pem -passout pass:secret

然后将生成的jenkins-admin.pfx下载至桌面准备上传

配置Jenkins认证

使用如下命令查看服务证书key:

root@k8s-master:~# cat /etc/kubernetes/pki/ca.crt

将该内容复制到Jenkins界面的“Kubernetes服务证书key”的文本框中,如下:
在这里插入图片描述
然后点击凭据后面的添加,将刚刚生成的证书进行上传,如下:在这里插入图片描述
选择文件jenkins-admin.pfk:在这里插入图片描述
输入密码secret,后面内容可以不填写,点击添加即可:在这里插入图片描述
选择 凭据,点击连接测试。
出现 Connection test successful 表示连接成功。在这里插入图片描述
添加jenkins地址:在这里插入图片描述
点击保存即可

本文参考链接:
参考文档

Logo

开源、云原生的融合云平台

更多推荐