美文网首页
原创:利用 kubeadm 1.15 生成 etcd 证书

原创:利用 kubeadm 1.15 生成 etcd 证书

作者: akka9 | 来源:发表于2019-08-03 00:07 被阅读0次

    etcd 一般通过 cfssl 或 openssl 生成证书, 增加了 kubernetes 集群的部署复杂度。本文描述了通过kubeadm自动化生成etcd的ca证书,以达到简化部署难度的目的。本文的编写参考了以前旧版本的思路,针对kubeadm 1.15 版本的变化做了更新。

    # 生成 etcd-ca 
    kubeadm init phase certs etcd-ca
    
    # 把etcd服务器节点信息写入配置文件
    cat > etcd-cert-conf.yaml <<-EOF
    apiVersion: "kubeadm.k8s.io/v1beta2"
    kind: ClusterConfiguration
    etcd:
      local:
        serverCertSANs:
          - "ip-192-168-1-100.us-west-2.compute.internal"
          - "10.1.6.251"
          - "10.1.6.252"
          - "10.1.6.253"
          - "192.168.1.100"
        peerCertSANs:
          - "ip-192-168-1-100.us-west-2.compute.internal"
          - "10.1.6.251"
          - "10.1.6.252"
          - "10.1.6.253"
          - "192.168.1.100"
    EOF
    
    # 生成 server 和 peer 证书
    kubeadm init phase certs etcd-ca --config etcd-cert-conf.yaml
    kubeadm init phase certs etcd-server --config etcd-cert-conf.yaml
    kubeadm init phase certs etcd-peer --config etcd-cert-conf.yaml
    kubeadm init phase certs etcd-healthcheck-client --config etcd-cert-conf.yaml
    kubeadm init phase certs apiserver-etcd-client --config etcd-cert-conf.yaml
    
    #  服务端启动
    ETCD_NAME="node1"
    ETCD_DATA_DIR="/var/lib/etcd"
    ETCD_LISTEN_CLIENT_URLS="https://0.0.0.0:2379"
    ETCD_LISTEN_PEER_URLS="https://0.0.0.0:2380"
    ETCD_ADVERTISE_CLIENT_URLS="https://192.168.1.100:2379"
    ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.1.100:2380"
    ETCD_INITIAL_CLUSTER="node1=https://192.168.1.100:2380,\
    node2=https://192.168.1.101:2380,\
    node3=https://192.168.1.102:2380
    ETCD_INITIAL_CLUSTER_STATE="new"
    ETCD_INITIAL_CLUSTER_TOKEN="new-cluster"
    ETCD_TRUSTED_CA_FILE="/etc/kubernetes/pki/etcd/ca.crt"
    ETCD_CERT_FILE="/etc/kubernetes/pki/etcd/server.crt"
    ETCD_KEY_FILE="/etc/kubernetes/pki/etcd/server.key"
    ETCD_PEER_TRUSTED_CA_FILE="/etc/kubernetes/pki/etcd/ca.crt"
    ETCD_PEER_CERT_FILE="/etc/kubernetes/pki/etcd/peer.crt"
    ETCD_PEER_KEY_FILE="/etc/kubernetes/pki/etcd/peer.key"
    ETCD_PEER_CLIENT_CERT_AUTH="true"
    ETCD_CLIENT_CERT_AUTH="true"
    
    # 客户端连接
    ETCDCTL_API=3 etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt \
    --cert=/etc/kubernetes/pki/etcd/peer.crt \
    --key=/etc/kubernetes/pki/etcd/peer.key \
    --endpoints=https://192.168.1.100:2379,https://192.168.1.101:2379,\
    https://192.168.1.102:2379
    endpoint health
    
    

    参考文档:
    https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-init-phase/#cmd-phase-etcd
    https://blog.scottlowe.org/2018/08/21/bootstrapping-etcd-cluster-with-tls-using-kubeadm/
    https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/setup-ha-etcd-with-kubeadm/

    相关文章

      网友评论

          本文标题:原创:利用 kubeadm 1.15 生成 etcd 证书

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