この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。

Layer-7 NGINXロードバランサーでTLS終了を行うDockerによるインストール

Rancherサーバーコンテナではなく、ロードバランサーでTLS/SSLを終了する特別な要件がある開発およびテスト環境の場合、Rancherをデプロイし、それと連携して動作するようにロードバランサーを構成します。

インフラストラクチャ内でTLS終了を集中管理したい場合、レイヤー7ロードバランサーは有益です。レイヤー7のロードバランシングは、レイヤー4のロードバランサーが関与できないクッキーなどのHTTP属性に基づいて、ロードバランサーが意思決定を行う能力も提供します。

このインストール手順では、単一のコンテナを使用してRancherをデプロイする方法を説明し、次にレイヤー7 NGINXロードバランサーのサンプル構成を提供します。

OS、Docker、ハードウェア、およびネットワーキングの要件

ノードが一般的なインストール要件を満たしていることを確認してください。

インストール概要

1.Linuxホストのプロビジョニング

Rancherサーバーを起動するために、私たちの要件に従って単一のLinuxホストをプロビジョニングします。

2.SSLオプションを選択し、Rancherをインストールする

セキュリティ上の理由から、Rancherを使用する際にはSSL(セキュアソケットレイヤー)が必要です。SSLは、ログインやクラスターとの対話など、すべてのRancherネットワーク通信を保護します。

あなたは..したいですか?
  • エアギャップインストールを完了しますか?

  • Rancher APIでのすべてのトランザクションを記録しますか?

続行する前に、下記の高度なオプションを確認してください。

次のオプションから選択します。

オプションA-Bring Your Own Certificate:自己署名

通信を暗号化するために自己署名証明書を使用することを選択した場合、ロードバランサー(後で行います)とRancherコンテナに証明書をインストールする必要があります。Dockerコマンドを実行して、証明書を指定した状態でRancherをデプロイします。

前提条件:

自己署名証明書を作成します。

  • 証明書ファイルはPEM形式でなければなりません。

自己署名証明書を使用してRancherをインストールするには:

  1. RancherをデプロイするためのDockerコマンドを実行する際は、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 - Bring Your Own Certificate:認識されたCAによって署名された

Details

クラスターが公開されている場合は、認識された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-Proto

    https

    クライアントがロードバランサーまたはプロキシに接続するために使用したプロトコルを識別するため。*注意:*このヘッダーが存在する場合、`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クラスターのプロビジョニング

FAQとトラブルシューティング

証明書のトラブルシューティングに関するヘルプについては、このセクションを参照してください。

詳細オプション

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をサーバータグの前に追加する必要があります。プライベートレジストリのURLを`<REGISTRY.DOMAIN.COM:PORT>`に追加し、`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;
}