Jenkins基于https的k8s配置

发布时间:2020-03-02 11:04:05编辑:admin阅读(2691)

    一、摘要

    jenkins 连接低版本的k8s时,不需要验证。但是新版本的启用了https和角色管理

     

    二、安装kubernetes插件

    登录jenkins,点击 Manage Jenkins --> Manage Plugins --> 可选插件

    在搜索框中,输入关键字 kubernetes

    勾选Kubernetes,点击直接安装

    1.png

     

    等待几分钟,提示安装完成。

    点击安装完成后重启Jenkins(空闲时)


     1.png

     

    提示正在重启中

     

     

    重新登录jenkins,返回首页。点击 Manage Jenkins --> Configure System

    将网页拉动到最底下,点击新增一个云,就会出现Kubernetes

    1.png

    效果如下:

    1.png

     

    如果直接写 kubernetes地址,点击测试,会报错。

    1.png

    k8s集群信息

    root@k8s-master:~# kubectl cluster-info 
    Kubernetes master is running at https://192.168.10.130:6443
    KubeDNS is running at https://192.168.10.130:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
    
    To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

     

    根据以上的配置,可以看到,已经是启用https了,这里就涉及到了密钥的问题。

     

    三、创建admin证书

    安装证书工具

    安装cfssl
    此工具生成证书非常方便, pem证书与crt证书,编码一致可直接使用

     登录k8s master节点执行

    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

     

    最终生成以下3个文件:

    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认证

    Kubernetes 服务证书 key

    使用以下命令查看

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

     

    将证书内容填写,点击凭据后面的添加,点击Jenkins

    1.png

     

    得到jenkins-admin.pfk文件后,点击Jenkins配置Credentials后面的Add,配置如下

    上传证书

     图片.png

     

    选择文件 jenkins-admin.pfk

    1.png

     

    输入密码 secret,后面的内容可以不填写,点击添加。

     1.png

     

    选择 凭据,点击连接测试。

    出现 Connection test successful 表示连接成功。

    1.png

     添加Jenkins地址

    1.png

     

    点击保存

     

     

    本文参考链接:

    https://blog.csdn.net/lusyoe/article/details/80209638


关键字