美文网首页Kubernetes
Kubernetes | 二进制软件包方式部署 -- 生成SSL

Kubernetes | 二进制软件包方式部署 -- 生成SSL

作者: 奶茶不要奶不要茶 | 来源:发表于2022-05-26 15:52 被阅读0次
    03 生成集群SSL证书

    集群所需的 SSL 证书均通过 cfssl 工具包来生成。

    以下内容均在本地主机上操作,cfssl 工具包也是下载到本地主机里。

    3.1 生成 CA 证书

    生成 CA 证书需要签名请求(CSR)文件,这些文件 k8s-deploy 已经提供,这里直接通过 cfssl 就可以生成 CA 证书。

    执行命令后会生成 3 个文件:ca.csr ca.pem ca-key.pem,集群只需要其中 2 个:ca.pemca-key.pem,将这 2 个文件分发到 3 台服务器上。

    wget https://github.com/pjgmow/cfssl/releases/download/v1.2.0/cfssl-all-v1.2.0-linux-amd64.tar.gz
    tar xf cfssl-all-v1.2.0-linux-amd64.tar.gz
    cp cfssl-all-v1.2.0-linux-amd64/* /usr/local/bin/
    
    cd /data/k8s-deploy/tls-csr
    cfssl gencert -initca ./ca-csr.json | cfssljson -bare ca
    
    #K8S_HOST=(k8s-master-01 k8s-master-02 k8s-master-03)
    #for h in ${K8S_HOST[@]};do scp ca*.pem root@$h:/etc/kubernetes/tls/;done
    scp ca*.pem root@k8s-master-01:/etc/kubernetes/tls/
    scp ca*.pem root@k8s-master-02:/etc/kubernetes/tls/
    scp ca*.pem root@k8s-master-03:/etc/kubernetes/tls/
    
    3.2 生成 etcd 证书

    执行命令后会生成 3 个文件:etcd.csr etcd.pem etcd-key.pem,集群只需要其中 2 个:etcd.pemetcd-key.pem,将这 2 个文件分发到 3 台服务器上。

    # ETCD_CLUSTER_IP 是 etcd 集群的 IP 地址
    # 这里是 192.168.3.201、192.168.3.202、192.168.3.203 3 台服务器组成集群
    
    cd /data/k8s-deploy/tls-csr
    ETCD_CLUSTER_IP=127.0.0.1,192.168.3.201,192.168.3.202,192.168.3.203
    cfssl gencert -hostname=${ETCD_CLUSTER_IP} \
    -ca=./ca.pem \
    -ca-key=./ca-key.pem \
    -config=./ca-config.json \
    -profile=kubernetes ./etcd-csr.json | cfssljson -bare etcd
    
    #K8S_HOST=(k8s-master-01 k8s-master-02 k8s-master-03)
    #for h in ${K8S_HOST[@]};do scp etcd*.pem root@$h:/etc/kubernetes/tls/;done
    scp etcd*.pem root@k8s-master-01:/etc/kubernetes/tls/
    scp etcd*.pem root@k8s-master-02:/etc/kubernetes/tls/
    scp etcd*.pem root@k8s-master-03:/etc/kubernetes/tls/
    
    3.3 生成 kube-apiserver 证书

    也一样会生成 3 个文件,集群只需要其中 2 个:kube-apiserver.pemkube-apiserver-key.pem,将这 2 个文件分发到 3 台服务器上。

    # KUBE_APISERVER_IP 是 kube-apiserver 组件的 IP 地址和主机名
    # 这里是 192.168.3.201、192.168.3.202、192.168.3.203 3 台服务器作为 master 节点
    # 10.0.0.1 是 kubernetes Service资源的 IP 地址,也要加进来
    
    cd /data/k8s-deploy/tls-csr
    KUBE_APISERVER_IP=127.0.0.1,10.0.0.1,192.168.3.201,192.168.3.202,192.168.3.203,kubernetes,kubernetes.default,kubernetes.default.svc,kubernetes.default.svc.cluster,kubernetes.default.svc.cluster.local
    
    cfssl gencert -hostname=${KUBE_APISERVER_IP} \
    -ca=./ca.pem \
    -ca-key=./ca-key.pem \
    -config=./ca-config.json \
    -profile=kubernetes ./kube-apiserver-csr.json | cfssljson -bare kube-apiserver
    
    #K8S_HOST=(k8s-master-01 k8s-master-02 k8s-master-03)
    #for h in ${K8S_HOST[@]};do scp kube-apiserver*.pem root@$h:/etc/kubernetes/tls/;done
    scp kube-apiserver*.pem root@k8s-master-01:/etc/kubernetes/tls/
    scp kube-apiserver*.pem root@k8s-master-02:/etc/kubernetes/tls/
    scp kube-apiserver*.pem root@k8s-master-03:/etc/kubernetes/tls/
    
    3.4 生成 admin 证书

    admin 证书主要是用来创建集群管理员的 kubeconfig 凭证文件的,kubectl 命令连接 kube-apiserver 要用到 kubeconfig 里面的内容,证书签名请求文件不需要 hosts 字段。

    admin.pemadmin-key.pem 这 2 个文件不需要分发到服务器上。

    cd /data/k8s-deploy/tls-csr
    cfssl gencert \
    -ca=./ca.pem \
    -ca-key=./ca-key.pem \
    -config=./ca-config.json \
    -profile=kubernetes ./admin-csr.json | cfssljson -bare admin
    
    3.5 生成 kube-controller-manager 证书

    kube-controller-manager.pemkube-controller-manager-key.pem 这 2 个文件分发到 3 台服务器上。

    # KUBE_CONTROLLER_MANAGER_IP 是 kube-controller-manager 组件的 IP 地址
    # 这里是 192.168.3.201、192.168.3.202、192.168.3.203 3 台服务器作为 master 节点
    
    cd /data/k8s-deploy/tls-csr
    KUBE_CONTROLLER_MANAGER_IP=127.0.0.1,192.168.3.201,192.168.3.202,192.168.3.203
    cfssl gencert -hostname=${KUBE_CONTROLLER_MANAGER_IP} \
    -ca=./ca.pem \
    -ca-key=./ca-key.pem \
    -config=./ca-config.json \
    -profile=kubernetes ./kube-controller-manager-csr.json | cfssljson -bare kube-controller-manager
    
    #K8S_HOST=(k8s-master-01 k8s-master-02 k8s-master-03)
    #for h in ${K8S_HOST[@]};do scp kube-controller-manager*.pem root@$h:/etc/kubernetes/tls/;done
    scp kube-controller-manager*.pem root@k8s-master-01:/etc/kubernetes/tls/
    scp kube-controller-manager*.pem root@k8s-master-02:/etc/kubernetes/tls/
    scp kube-controller-manager*.pem root@k8s-master-03:/etc/kubernetes/tls/
    
    3.6 生成 kube-scheduler 证书

    kube-scheduler.pemkube-scheduler-key.pem 这 2 个文件分发到 3 台服务器上。

    # KUBE_SCHEDULER_IP 是 kube-scheduler 组件的 IP 地址
    # 这里是 192.168.3.201、192.168.3.202、192.168.3.203 3 台服务器作为 master 节点
    
    cd /data/k8s-deploy/tls-csr
    KUBE_SCHEDULER_IP=127.0.0.1,192.168.3.201,192.168.3.202,192.168.3.203
    cfssl gencert -hostname=${KUBE_SCHEDULER_IP} \
    -ca=./ca.pem \
    -ca-key=./ca-key.pem \
    -config=./ca-config.json \
    -profile=kubernetes ./kube-scheduler-csr.json | cfssljson -bare kube-scheduler
    
    #K8S_HOST=(k8s-master-01 k8s-master-02 k8s-master-03)
    #for h in ${K8S_HOST[@]};do scp kube-scheduler*.pem root@$h:/etc/kubernetes/tls/;done
    scp kube-scheduler*.pem root@k8s-master-01:/etc/kubernetes/tls/
    scp kube-scheduler*.pem root@k8s-master-02:/etc/kubernetes/tls/
    scp kube-scheduler*.pem root@k8s-master-03:/etc/kubernetes/tls/
    
    3.7 生成 kube-proxy 证书

    kube-proxy 是 Node 节点组件,证书签名请求文件也不需要 hosts 字段。

    kube-proxy.pemkube-proxy-key.pem 这 2 个文件分发到 3 台服务器上。

    cd /data/k8s-deploy/tls-csr
    cfssl gencert \
    -ca=./ca.pem \
    -ca-key=./ca-key.pem \
    -config=./ca-config.json \
    -profile=kubernetes ./kube-proxy-csr.json | cfssljson -bare kube-proxy
    
    #K8S_HOST=(k8s-master-01 k8s-master-02 k8s-master-03)
    #for h in ${K8S_HOST[@]};do scp kube-proxy*.pem root@$h:/etc/kubernetes/tls/;done
    scp kube-proxy*.pem root@k8s-master-01:/etc/kubernetes/tls/
    scp kube-proxy*.pem root@k8s-master-02:/etc/kubernetes/tls/
    scp kube-proxy*.pem root@k8s-master-03:/etc/kubernetes/tls/
    

    相关文章

      网友评论

        本文标题:Kubernetes | 二进制软件包方式部署 -- 生成SSL

        本文链接:https://www.haomeiwen.com/subject/ozryprtx.html