配置使用 SSL 连接.note

noteId: WEBb9a16d4cd39d392b78adfadc9d1c9ec0 · 原始路径:/ALL/1-世赛Docker/配置使用 SSL 连接.note · 图片:11 · 附件待处理:0

 
一、配置 SSL 连接:
 
1、配置 证书:
1、Prometheus证书 SAN:
DNS: prometheus
DNS:prometheus.shanghai.org
IP:192.168.2.1
 
2、Grafana证书:
DNS:grafana.shanghai.org
IP:192.168.2.1
 
3、Node Exporter证书:
DNS:server2.shanghai.org    //机器FQDN
IP:192.168.1.2
注意:Prometheus的证书,SAN要写 prometheus是因为granafa docker可以直接通过 prometheus:9090访问
 
生成证书:
 
2、配置 node exporter:
apt install -y prometheus-node-exporter
安装即启用
 
1)调用 SSL 证书:
prometheus需要有读取证书的权限
# 随便在一个路径中编写yaml文件:
cp server2.* /etc/ssl
chown prometheus:prometheus /etc/ssl/server2.*
 
vim /etc/ssl/web.yml
 
vim /etc/default/prometheus-node-exporter
systemctl restart prometheus-node-exporter
 
·测试:
 
这个时候curl https://localhost:9100/metrics就能访问到了:
 
这个时候 http 是访问不了的:
 
3、配置 Prometheus:
 
1)配置使用 https 访问 node-exporter:
apt install -y prometheus
cd /etc/prometheus
cp /usr/share/doc/prometheus/examples/prometheus.yml .
vim prometheus.yml
配置 连接 https node-exporter
在需要https的连接那里设置scheme: https
 
2)定义 prometheus 证书路径:
# 将证书放到/etc/ssl 中,然后在创建docker的时候映射进去:
cp prometheus.* /etc/ssl
cp ca.crt /etc/ssl    //根证书不放都可以
chmod 644 /etc/ssl/prometheus.*    //必须指定权限,否则prometheus没有权限读取
 
vim /etc/ssl/web.yml
# 定义prometheus证书路径:
 
 
3)创建 docker:
docker run -d --name prometheus --restart always -p 9090:9090 -v /etc/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro -v /etc/ssl:/etc/ssl:ro prom/prometheus:latest --config.file=/etc/prometheus/prometheus.yml --web.config.file=/etc/ssl/web.yml
将证书目录映射进去后,使用 --web.config.file 来调用前面定义的ssl yaml
 
 
·测试https访问:
可以看到,https 访问成功
 
 
4、配置 grafana:
 
1)给予证书权限:
cp grafana.* /etc/ssl
chmod 644 /etc/ssl/grafana.*
 
2)创建 docker:
docker run -d --name grafana --restart always -p 3000:3000 -e GF_SERVER_PROTOCOL=https -e GF_SERVER_CERT_FILE=/etc/ssl/grafana.crt -e GF_SERVER_CERT_KEY=/etc/ssl/grafana.key -v /etc/ssl:/etc/ssl:ro grafana/grafana:latest
使用 -e GF_SERVER_CERT_FILE 指定证书路径
使用 -e GF_SERVER_CERT_KEY 指定私钥路径
 
·测试https访问:
 
 
5、Grafana 连接 https Prometheus:
 
注意,因为这里两个容器我并没有把他们放到同一个 network中,所以这里不能够直接使用 https://prometheus:9090 来访问,必须使用 DNS 名称:https://prometheus.shanghai.org:9090