etcd支持通过TLS协议的加密通讯,在实际企业生产环境中,出于安全规范要求,建议开启TLS加密。TLS通道可以用于加密内部的集群通讯,也可以用于加密客户端请求。
etcd的TLS有两对,一对是etcd和client端的TLS配置。一对是etcd之间的peer的TLS配置。有很多方式可以创建CA证书和私钥,其中比较流行的有两种
01.openssl02.cfssl
我们目前规划集群信息如下:
01.192.168.1.76 etcd102.192.168.1.77 etcd203.192.168.1.79 etcd3
官方文档推荐使用cfssl生成证书,所以我们这里今天使用cfssl进行加密,具体操作如下
首先我们需要下载cfssl和csffljson两个工具
01.wget https://github.com/cloudflare/cfssl/releases/download/v1.6.3/cfssl_1.6.3_linux_amd6402.wget https://github.com/cloudflare/cfssl/releases/download/v1.6.3/cfssljson_1.6.3_linux_amd6403.mv cfssl_1.6.3_linux_amd64 /usr/bin/cfssl04.mv cfssljson_1.6.3_linux_amd64 /usr/bin/cfssljson05.chmod +x /usr/bin/{cfssl,cfssljson}06.cfssl version07.Version: 1.6.308.Runtime: go1.18
生成etcd证书,自签证书办法机构(CA)
01.#生成CA证书配置02.cat >ca-config.json<<EOF03.{04. "signing": {05. "default": {06. "expiry": "87600h"07. },08. "profiles": {09. "www": {10. "expiry": "87600h",11. "usages": [12. "signing",13. "key encipherment",14. "server auth",15. "client auth"16. ]17. }18. }19. }20.}21.EOF22.#生成CA证书请求配置23.cat >ca-csr.json<<EOF24.{25. "CN": "etcd CA",26. "key": {27. "algo": "rsa",28. "size": 204829. },30. "names": [31. {32. "C": "CN",33. "L": "Beijing",34. "ST": "Beijing"35. }36. ]37.}38.EOF
生成证书,会生成ca.pem和ca-key.pem文件
01.cfssl gencert -initca ca-csr.json | cfssljson -bare ca -
使用自签额CA签发etcd https证书
01.#生成证书请求配置02.cat >server-csr.json<<EOF03.{04. "CN": "etcd",05. "hosts": [06. "127.0.0.1",07. "192.168.1.76",08. "192.168.1.77",09. "192.168.1.79"10. ],11. "key": {12. "algo": "rsa",13. "size": 204814. },15. "names": [16. {17. "C": "CN",18. "L": "BeiJing",19. "ST": "BeiJing"20. }21. ]22.}23.EOF
生成证书,会生成server.pem和server-key.pem文件
01.cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=www server-csr.json | cfssljson -bare server
在每个etc集群下创建配置和存储,配置目录下再创建pki证书目录
01.mkdir -p /etc/etcd/pki02.mkdir -p /data/etcd/
在etcd1上拷贝证书到/etc/etcd/pki/目录
01.cp ca* server* /etc/etcd/pki/
同时也将这个证书打包分发到其他etd集群节点
01.cd /etc/etcd02.tar -zcvf pki.tar.gz ./pki03.scp pki.tar.gz root@192.168.1.77:/root/04.scp pki.tar.gz root@192.168.1.79:/root/
然后在每个etcd集群节点把证书存放到指定位置
01.tar -zxvf pki.tar.gz -C /etc/etcd/
接着我们在每个etcd集群节点上配置etcd的配置文件,其中192.168.1.76为我etcd1的IP,其他节点改成其他节点的IP,ETCD_NAME名字也根据节点情况进行修改
01.cat /etc/etcd/etcd.conf02.#[Member]03.ETCD_NAME="etcd1" # 确保集群中命名唯一04.ETCD_DATA_DIR="/data/etcd" # ETCD存储目录05.ETCD_LISTEN_PEER_URLS="https://192.168.1.76:2380" # 修改为本机IP06.ETCD_LISTEN_CLIENT_URLS="https://192.168.1.76:2379" # 修改为本机IP 07. 08.#[Clustering]09.ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.1.76:2380" # 修改为本机IP 10.ETCD_ADVERTISE_CLIENT_URLS="https://192.168.1.76:2379" # 修改为本机IP 11.ETCD_INITIAL_CLUSTER="etcd1=https://192.168.1.76:2380,etcd2=https://192.168.1.77:2380,etcd3=https://192.168.1.79:2380" # 集群中三个etcd节点IP12.ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster" # 所有节点token一致13.ETCD_INITIAL_CLUSTER_STATE="new"
参数说明
01.ETCD_NAME:节点名称,集群中唯一02.ETCD_DATA_DIR:数据目录03.ETCD_LISTEN_PEER_URLS:集群通信监听地址04.ETCD_LISTEN_CLIENT_URLS:客户端访问监听地址05.ETCD_INITIAL_ADVERTISE_PEERURLS:集群通告地址06.ETCD_ADVERTISE_CLIENT_URLS:客户端通告地址07.ETCD_INITIAL_CLUSTER:集群节点地址08.ETCD_INITIALCLUSTER_TOKEN:集群Token09.ETCD_INITIALCLUSTER_STATE:加入集群的当前状态,new是新集群,existing表示加入已有集群
添加etcd启动服务文件,每个节点都均要添加
01.cat >/usr/lib/systemd/system/etcd.service<<EOF02.[Unit]03.Description=Etcd Server04.After=network.target05.After=network-online.target06.Wants=network-online.target07. 08.[Service]09.Type=notify10.EnvironmentFile=/etc/etcd/etcd.conf11.ExecStart=/usr/local/etcd/etcd \12.--cert-file=/etc/etcd/pki/server.pem \13.--key-file=/etc/etcd/pki/server-key.pem \14.--peer-cert-file=/etc/etcd/pki/server.pem \15.--peer-key-file=/etc/etcd/pki/server-key.pem \16.--trusted-ca-file=/etc/etcd/pki/ca.pem \17.--peer-trusted-ca-file=/etc/etcd/pki/ca.pem \18.--logger=zap19.Restart=on-failure20.LimitNOFILE=6553621. 22.[Install]23.WantedBy=multi-user.target24.EOF
设置开机启动,并启动etcd服务
01.systemctl daemon-reload02.systemctl enable etcd03.systemctl start etcd
查看集群成员
01.etcdctl --cacert=/etc/etcd/pki/ca.pem --cert=/etc/etcd/pki/server.pem --key=/etc/etcd/pki/server-key.pem --endpoints="https://192.168.1.76:2379,https://192.168.1.77:2379,https://192.168.1.79:2379" member list -w table
查看集群状态
01.etcdctl --cacert=/etc/etcd/pki/ca.pem --cert=/etc/etcd/pki/server.pem --key=/etc/etcd/pki/server-key.pem --endpoints="https://192.168.1.76:2379,https://192.168.1.77:2379,https://192.168.1.79:2379" endpoint status --cluster -w table
内容版权声明:除非注明,否则皆为本站原创文章。
转载注明出处:https://sulao.cn/post/966
相关推荐
- GPU计算能力(Compute Capability)对照表
- rust运行cargo run命令以后报错linker `link.exe` not found
- k8s集群中mongdb、etcd、prometheus数据bash一键备份脚本
- k8s基于clusterrole生成集群级别只读用户bash脚本
- flask使用flask_caching缓存数据
- centos7安装CUDA Tookit+CUDA Samples+NCCL+OpenMPI
- centos7添加交换分区swap
- centos7升级systemd并切换cgroup v1到cgroup v2
- python操作etcd常用方法
- centos7下程序运行提示报错version `GLIBCXX_3.4.20` not found
评论列表