zoukankan      html  css  js  c++  java
  • etcd+https部署

    1. 关闭防火墙
    2. 关闭selinux

    下载所需的包(cfssl,生成证书工具)

    mkdir /usr/local/src/etcd/ 
    cd /usr/local/src/etcd/
    wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 
    wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 
    wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
    chmod +x cfssl*
    
    #拷贝命令
    cp -v cfssl_linux-amd64 /usr/local/bin/cfssl
    cp -v cfssljson_linux-amd64 /usr/local/bin/cfssljson
    cp -v cfssl-certinfo_linux-amd64 /usr/local/bin/cfssl-certinfo
    ls /usr/local/bin/cfssl*
    

    使用CFSSL创建CA证书以及etcd的TLS认证证书

    mkdir /usr/local/src/etcd/ssl
    cd /usr/local/src/etcd/ssl
    
    #创建 CA 配置文件(ca-config.json)
    vim ca-config.json
    {
      "signing": {
        "default": {
          "expiry": "876000h"
        },
        "profiles": {
          "etcd": {
            "usages": [
                "signing",
                "key encipherment",
                "server auth",
                "client auth"
            ],
            "expiry": "876000h"
          }
        }
      }
    }
    
    "字段说明"
    "ca-config.json":可以定义多个 profiles,分别指定不同的过期时间、使用场景等参数;后续在签名证书时使用某个 profile;
    "signing":表示该证书可用于签名其它证书;生成的 ca.pem 证书中 CA=TRUE;
    "server auth":表示client可以用该 CA 对server提供的证书进行验证;
    "client auth":表示server可以用该CA对client提供的证书进行验证;
    
    #创建 CA 证书签名请求(ca-csr.json)
    vim ca-csr.json
    {
      "CN": "etcd",
      "key": {
        "algo": "rsa",
        "size": 2048
      },
      "names": [
        {
          "C": "CN",
          "ST": "shenzhen",
          "L": "shenzhen",
          "O": "etcd",
          "OU": "System"
        }
      ]
    }
    
    "CN":Common Name,etcd 从证书中提取该字段作为请求的用户名 (User Name);浏览器使用该字段验证网站是否合法;
    "O":Organization,etcd 从证书中提取该字段作为请求用户所属的组 (Group);
    这两个参数在后面的kubernetes启用RBAC模式中很重要,因为需要设置kubelet、admin等角色权限,那么在配置证书的时候就必须配置对了,具体后面在部署kubernetes的时候会进行讲解。
    "在etcd这两个参数没太大的重要意义,跟着配置就好。"
    
    #生成 CA 证书和私钥
    cfssl gencert -initca ca-csr.json | cfssljson -bare ca
    
    
    #创建etcd的TLS认证证书
    #创建 etcd证书签名请求(etcd-csr.json)
    vim etcd-csr.json
    {
      "CN": "etcd",
      "hosts": [
        "127.0.0.1",
        "192.168.48.12"
      ],
      "key": {
        "algo": "rsa",
        "size": 2048
      },
      "names": [
        {
          "C": "CN",
          "ST": "shenzhen",
          "L": "shenzhen",
          "O": "etcd",
          "OU": "System"
        }
      ]
    }
    
    如果 hosts 字段不为空则需要指定授权使用该证书的 IP 或域名列表,由于该证书后续被 etcd 集群使用,所以填写IP即可。
    因为本次部署etcd是单台,那么则需要填写单台的IP地址即可。
           
    #生成 etcd证书和私钥 
    cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=etcd etcd-csr.json | cfssljson -bare etcd
    
    #将TLS 认证文件拷贝至证书目录下
    mkdir -p /etc/etcd/etcdSSL
    cp * /etc/etcd/etcdSSL
    

    安装etcd服务

    yum install -y etcd
    
    #配置 etcd 的 service文件(/usr/lib/systemd/system)
    vim /usr/lib/systemd/system/etcd.service 
    [Unit]
    Description=Etcd Server
    After=network.target
    After=network-online.target
    Wants=network-online.target
    
    [Service]
    Type=notify
    WorkingDirectory=/var/lib/etcd/
    EnvironmentFile=-/etc/etcd/etcd.conf
    # set GOMAXPROCS to number of processors
    ExecStart=/usr/bin/etcd 
      --name ${ETCD_NAME} 
      --cert-file=/etc/etcd/etcdSSL/etcd.pem 
      --key-file=/etc/etcd/etcdSSL/etcd-key.pem 
      --peer-cert-file=/etc/etcd/etcdSSL/etcd.pem 
      --peer-key-file=/etc/etcd/etcdSSL/etcd-key.pem 
      --trusted-ca-file=/etc/etcd/etcdSSL/ca.pem 
      --peer-trusted-ca-file=/etc/etcd/etcdSSL/ca.pem 
      --initial-advertise-peer-urls ${ETCD_INITIAL_ADVERTISE_PEER_URLS} 
      --listen-peer-urls ${ETCD_LISTEN_PEER_URLS} 
      --listen-client-urls ${ETCD_LISTEN_CLIENT_URLS},http://127.0.0.1:2379 
      --advertise-client-urls ${ETCD_ADVERTISE_CLIENT_URLS} 
      --initial-cluster-token ${ETCD_INITIAL_CLUSTER_TOKEN} 
      --initial-cluster etcd1=https://172.16.1.168:2380 
      --initial-cluster-state new 
      --data-dir=${ETCD_DATA_DIR}
    
    Restart=on-failure
    LimitNOFILE=65536
    
    [Install]
    WantedBy=multi-user.target
    
    参数说明:
    1、指定 etcd 的工作目录为 /var/lib/etcd,数据目录为 /var/lib/etcd,需在启动服务前创建这两个目录;
    在配置中的命令是这条:
    WorkingDirectory=/var/lib/etcd/
    
    2、为了保证通信安全,需要指定 etcd 的公私钥(cert-file和key-file)、Peers 通信的公私钥和 CA 证书(peer-cert-file、peer-key-file、peer-trusted-ca-file)、客户端的CA证书(trusted-ca-file);
    在配置中添加etcd证书的命令是以下:
      --cert-file=/etc/etcd/etcdSSL/etcd.pem 
      --key-file=/etc/etcd/etcdSSL/etcd-key.pem 
      --peer-cert-file=/etc/etcd/etcdSSL/etcd.pem 
      --peer-key-file=/etc/etcd/etcdSSL/etcd-key.pem 
      --trusted-ca-file=/etc/etcd/etcdSSL/ca.pem 
      --peer-trusted-ca-file=/etc/etcd/etcdSSL/ca.pem 
    
    3、配置etcd的endpoint:
      --initial-cluster infra1=https://172.16.1.168:2380 
    
    4、配置etcd的监听服务集群:
      --initial-advertise-peer-urls ${ETCD_INITIAL_ADVERTISE_PEER_URLS} 
      --listen-peer-urls ${ETCD_LISTEN_PEER_URLS} 
      --listen-client-urls ${ETCD_LISTEN_CLIENT_URLS},http://127.0.0.1:2379 
      --advertise-client-urls ${ETCD_ADVERTISE_CLIENT_URLS} 
    
    5、配置etcd创建的集群为新集群,则定义集群状态为new
       --initial-cluster-state 值为 new
    
    6、定义etcd节点的名称,该名称等下从配置文件中获取:
      --name ${ETCD_NAME}  
      其中配置文件:EnvironmentFile=-/etc/etcd/etcd.conf
    
    #etcd的配置文件(/etc/etcd/etcd.conf)
    vim /etc/etcd/etcd.conf 
    #[member]
    ETCD_NAME=etcd1
    ETCD_DATA_DIR="/var/lib/etcd"
    ETCD_LISTEN_PEER_URLS="https://172.16.1.168:2380"
    ETCD_LISTEN_CLIENT_URLS="https://172.16.1.168:2379"
    
    #[cluster]
    ETCD_INITIAL_ADVERTISE_PEER_URLS="https://172.16.1.168:2380"
    ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
    ETCD_ADVERTISE_CLIENT_URLS="https://172.16.1.168:2379"
    
    #参数说明
    ETCD_NAME 节点名称
    
    ETCD_DATA_DIR 数据目录
    
    ETCD_LISTEN_PEER_URLS 集群通信监听地址
    
    ETCD_LISTEN_CLIENT_URLS 客户端访问监听地址
    
    ETCD_INITIAL_ADVERTISE_PEER_URLS 集群通告地址
    
    ETCD_ADVERTISE_CLIENT_URLS 客户端通告地址
    
    ETCD_INITIAL_CLUSTER 集群节点地址
    
    ETCD_INITIAL_CLUSTER_TOKEN 集群Token
    
    ETCD_INITIAL_CLUSTER_STATE 加入集群的当前状态,new是新集群,existing表示加入已有集群
    
    #这是172.16.1.168节点的配置,如果配置其他etcd节点只要将上面的IP地址改成相应节点的IP地址即可。
    
    #启动 etcd 服务
    systemctl daemon-reload
    systemctl start etcd
    systemctl status etcd
    
    #验证服务
    etcdctl 
      --ca-file=/etc/etcd/etcdSSL/ca.pem 
      --cert-file=/etc/etcd/etcdSSL/etcd.pem 
      --key-file=/etc/etcd/etcdSSL/etcd-key.pem 
      cluster-health
    
  • 相关阅读:
    Thinking in Java Reading Note(9.接口)
    Thinking in java Reading Note(8.多态)
    Thinking in Java Reading Note(7.复用类)
    SQL必知必会
    Thinking in Java Reading Note(5.初始化与清理)
    Thinking in Java Reading Note(2.一切都是对象)
    鸟哥的Linux私房菜笔记(1.基础)
    Thinking in Java Reading Note(1.对象导论)
    CoreJava2 Reading Note(2:I/O)
    CoreJava2 Reading Note(1:Stream)
  • 原文地址:https://www.cnblogs.com/yuhuLin/p/11046822.html
Copyright © 2011-2022 走看看