|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
在第 7 层 NGINX 负载均衡器进行 TLS 终止的 Docker 安装
对于在负载均衡器上终止 TLS/SSL 而不是在 Rancher Server 容器中有特殊要求的开发和测试环境,部署 Rancher 并配置负载均衡器以与之协同工作。
如果您希望在基础设施中集中管理 TLS 终止,第 7 层负载均衡器可能会很有帮助。Layer-7 负载平衡器还提供了让负载平衡器基于 HTTP 属性(如 cookies 等)做出决策的能力,而 Layer-4 负载平衡器无法处理这些。
此安装过程将引导您通过使用单个容器部署 Rancher,然后提供第 7 层 NGINX 负载均衡器的示例配置。
操作系统、Docker、硬件和网络的要求
确保您的节点满足一般 安装要求。
1.配置 Linux 主机
根据我们的 要求 配置单个 Linux 主机以启动您的 Rancher Server。
2.选择 SSL 选项并安装 Rancher
出于安全考虑,使用 Rancher 时需要 SSL(安全套接字层)。SSL 保护所有 Rancher 网络通信,例如当您登录或与集群交互时。
|
您想要..
在继续之前,请查看下面的 高级选项。 |
从以下选项中选择:
选项 A-自带证书:自签名
如果您选择使用自签名证书来加密通信,您必须在负载均衡器上安装该证书(稍后会进行)以及您的 Rancher 容器。运行 Docker 命令以部署 Rancher,并指向您的证书。
|
先决条件:
创建自签名证书。
|
使用自签名证书安装 Rancher:
-
在运行 Docker 命令以部署 Rancher 时,请将 Docker 指向您的 CA 证书文件。
docker run -d --restart=unless-stopped \ -p 80:80 -p 443:443 \ -v /etc/your_certificate_directory/cacerts.pem:/etc/rancher/ssl/cacerts.pem \ rancher/rancher:latest
选项 B-自带证书:由认可的 CA 签名
Details
如果您的集群面向公众,最好使用由认可的 CA 签发的证书。
|
先决条件:
|
使用由认可的 CA 签发的证书安装 Rancher:
如果您使用由认可的 CA 签发的证书,则无需在 Rancher 容器中安装您的证书。我们必须确保没有生成和存储默认的 CA 证书,您可以通过将 --no-cacerts 参数传递给容器来实现。
-
输入以下命令。
docker run -d --restart=unless-stopped \ -p 80:80 -p 443:443 \ rancher/rancher:latest --no-cacerts
3.配置负载均衡器
在 Rancher 容器前使用负载均衡器时,容器无需将端口 80 或端口 443 的通信重定向。通过传递 X-Forwarded-Proto: https 头部,可以禁用此重定向。
负载平衡器或代理必须配置以支持以下内容:
-
WebSocket 连接
-
SPDY / HTTP/2 协议
-
传递/设置以下头部:
信头 值 说明 Host用于访问 Rancher 的主机名。
识别客户端请求的服务器。
X-Forwarded-Protohttps识别客户端用于连接负载均衡器或代理的协议。*注意:*如果此头部存在,
rancher/rancher不会将 HTTP 重定向到 HTTPS。X-Forwarded-Port用于访问 Rancher 的端口。
识别客户端用于连接负载均衡器或代理的协议。
X-Forwarded-For客户端连接的 IP。
识别客户端的源 IP 地址。
示例 NGINX 配置
此 NGINX 配置在 NGINX 1.14 上进行了测试。
|
此 NGINX 配置仅为示例,可能不适合您的环境。有关完整文档,请参见 NGINX 负载平衡 - HTTP 负载平衡。 |
-
将
rancher-server替换为运行 Rancher 容器的节点的 IP 地址或主机名。 -
将
FQDN的两个出现替换为 Rancher 的 DNS 名称。 -
将
/certs/fullchain.pem和/certs/privkey.pem替换为服务器证书和服务器证书密钥的位置。
worker_processes 4;
worker_rlimit_nofile 40000;
events {
worker_connections 8192;
}
http {
upstream rancher {
server rancher-server:80;
}
map $http_upgrade $connection_upgrade {
default Upgrade;
'' close;
}
server {
listen 443 ssl http2;
server_name FQDN;
ssl_certificate /certs/fullchain.pem;
ssl_certificate_key /certs/privkey.pem;
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://rancher;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
# This allows the ability for the execute shell window to remain open for up to 15 minutes. Without this parameter, the default is 1 minute and will automatically close.
proxy_read_timeout 900s;
proxy_buffering off;
}
}
server {
listen 80;
server_name FQDN;
return 301 https://$server_name$request_uri;
}
}
下一步怎么办?
-
*推荐:*查看单节点 xref:[备份] 和 xref:[恢复]。尽管您现在没有需要备份的数据,但我们建议在定期使用 Rancher 后创建备份。
-
创建 Kubernetes 集群:配置 Kubernetes 集群。
常见问题解答和故障排除
有关帮助排查证书的问题,请参见 本节。
高级选项
API 审计
如果您想记录所有与 Rancher API 的交易,请通过在安装命令中添加以下标志来启用 API 审计 功能。
-e AUDIT_LEVEL=1 \ -e AUDIT_LOG_ENABLED=true \ -e AUDIT_LOG_PATH=/var/log/auditlog/rancher-api-audit.log \ -e AUDIT_LOG_MAXAGE=20 \ -e AUDIT_LOG_MAXBACKUP=20 \ -e AUDIT_LOG_MAXSIZE=100 \
隔离
如果您访问此页面是为了完成 隔离安装,则在运行您选择的安装命令时,必须在服务器标签前添加您的私有注册表 URL。在 <REGISTRY.DOMAIN.COM:PORT> 前添加带有您私有注册表 URL 的 rancher/rancher:latest.
示例:
<REGISTRY.DOMAIN.COM:PORT>/rancher/rancher:latest
持久数据
Rancher 使用 etcd 作为数据存储。当 Rancher 与 Docker 一起安装时,使用的是嵌入式 etcd。持久数据位于容器中的以下路径:/var/lib/rancher。
您可以将主机卷绑定挂载到此位置,以保留其运行所在主机上的数据:
docker run -d --restart=unless-stopped \ -p 80:80 -p 443:443 \ -v /opt/rancher:/var/lib/rancher \ --privileged \ rancher/rancher:latest
此操作需要 特权访问。
此第 7 层 NGINX 配置已在 NGINX 版本 1.13(主线)和 1.14(稳定)上进行测试。
|
此 NGINX 配置仅为示例,可能不适合您的环境。有关完整文档,请参见 NGINX 负载平衡 - TCP 和 UDP 负载平衡器。 |
upstream rancher {
server rancher-server:80;
}
map $http_upgrade $connection_upgrade {
default Upgrade;
'' close;
}
server {
listen 443 ssl http2;
server_name rancher.yourdomain.com;
ssl_certificate /etc/your_certificate_directory/fullchain.pem;
ssl_certificate_key /etc/your_certificate_directory/privkey.pem;
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://rancher;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
# This allows the ability for the execute shell window to remain open for up to 15 minutes. Without this parameter, the default is 1 minute and will automatically close.
proxy_read_timeout 900s;
proxy_buffering off;
}
}
server {
listen 80;
server_name rancher.yourdomain.com;
return 301 https://$server_name$request_uri;
}