跳至主要内容

在 Layer-7 NGINX 負載平衡器進行 TLS 終止的 Docker 安裝

對於需要在負載平衡器而非 Rancher 伺服器容器上終止 TLS/SSL 的開發和測試環境,請部署 Rancher 並設定負載平衡器與其配合使用。

如果您想在基礎設施中集中 TLS 終止,Layer-7 負載平衡器可能很有幫助。Layer-7 負載平衡還提供了讓負載平衡器根據 HTTP 屬性(例如 Cookie 等)做出決策的能力,而 Layer-4 負載平衡器無法考慮這些屬性。

此安裝程序將引導您使用單個容器部署 Rancher,然後提供 Layer-7 NGINX 負載平衡器的範例設定。

作業系統、Docker、硬體和網路的要求​

確保您的節點符合一般安裝要求。

安裝大綱​

1. 佈建 Linux 主機​

根據我們的要求佈建單個 Linux 主機以啟動您的 Rancher 伺服器。

2. 選擇 SSL 選項並安裝 Rancher​

出於安全目的,使用 Rancher 時需要 SSL(安全通訊端層)。SSL 保護所有 Rancher 網路通訊,例如當您登入或與叢集互動時。

您是否想要...
  • 完成離線安裝?
  • 記錄 Rancher API 的所有交易?

在繼續之前,請參閱下方的進階選項。

從以下選項中選擇:

選項 A - 自備憑證:自簽憑證

如果您選擇使用自簽憑證來加密通訊,您必須在負載平衡器(稍後會進行)和 Rancher 容器上安裝憑證。執行 Docker 命令以部署 Rancher,並將其指向您的憑證。

先決條件:

建立自簽憑證。

  • 憑證檔案必須為 PEM 格式。

使用自簽憑證安裝 Rancher:

  1. 在執行 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 簽署

如果您的叢集是面向公眾的,最好使用由認可的 CA 簽署的憑證。

先決條件:
  • 憑證檔案必須為 PEM 格式。

使用由認可的 CA 簽署的憑證安裝 Rancher:

如果您使用由認可的 CA 簽署的憑證,則不需要在 Rancher 容器中安裝憑證。我們必須確保沒有生成和儲存預設的 CA 憑證,您可以透過將 --no-cacerts 參數傳遞給容器來實現。

  1. 輸入以下命令。

    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;
}
}

下一步?​

  • 建議: 查看單節點備份和還原。雖然您目前沒有任何需要備份的資料,但我們建議在定期使用 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。在 rancher/rancher:latest 前面加上您的私有鏡像倉庫 URL <REGISTRY.DOMAIN.COM:PORT>。

範例:

<REGISTRY.DOMAIN.COM:PORT>/rancher/rancher:latest

持久資料​

Rancher 使用 etcd 作為資料儲存。當使用 Docker 安裝 Rancher 時,會使用嵌入式 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

此操作需要特權存取。

此 Layer 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;
}