Traefikは、マイクロサービスを簡単にデプロイするのに役立つオープンソースのHTTPリバースプロキシおよびロードバランサーです。 Docker、Kubernetes、Docker Swarm、Rancher、AWSなどのインフラストラクチャコンポーネントと簡単に統合できます。同じDockerホストで複数のアプリケーションを実行する場合は、Traefikをリバースプロキシとして使用して、ポート80と443を他の地域に公開できます。
このチュートリアルでは、CentOS8にリバースプロキシとしてTraefikをインストールして構成する方法を示します。
- CentOS8を実行しているサーバー。
- サーバーIPで指定された有効なドメイン名。
- ルートパスワードがサーバーに設定されます。
DockerとDockerComposeをインストールする
まず、システムに最新バージョンのDockerとDockerComposeをインストールする必要があります。デフォルトでは、DockerはCentOS8のデフォルトリポジトリでは使用できません。そのため、システムにDockerCEリポジトリを追加する必要があります。次のコマンドで追加できます:
dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
リポジトリが作成されたら、次のコマンドを使用してDockerCEをインストールします。
dnf install docker-ce --nobest -y
Dockerがインストールされたら、Dockerサービスを開始し、次のコマンドを使用してシステムの再起動時に開始できるようにします。
systemctl start docker
systemctl enable docker
Docker Composeをインストールするには、Curlをインストールし、システムにDockerComposeバイナリをダウンロードする必要があります。次のコマンドで実行できます:
dnf install curl
curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
Dockerネットワークを作成する
次に、traefikコンテナを実行するための新しいDockerネットワークを作成する必要があります。次のコマンドを実行して、「web」という名前で作成できます。
docker network create web
次に、次のコマンドを使用してネットワークを確認します。
docker network ls
次の出力が得られるはずです:
NETWORK ID NAME DRIVER SCOPE 76a9475e5ab0 bridge bridge local 2a3d79f64747 host host local 4c9123229eaa none null local 0b6e010b43d0 web bridge local
Traefikプロキシのインストールと構成
開始する前に、暗号化されたパスワードを生成するためにhttpd-toolsをインストールする必要があります。このツールは、次のコマンドでインストールできます。
dnf install httpd-tools -y
インストールしたら、次のコマンドを使用して暗号化されたパスワードを生成します。
htpasswd -nb admin my_password
次の出力が得られるはずです:
admin:$apr1$wpdR.4yZ$UpbjGS7ZFq4pZHalhH1Tl0
次に、次のコマンドを使用して新しいTraefik構成ファイルを作成します。
nano traefik.toml
有効なドメイン名、保護されたパスワード、ポートを含む次の行を追加します。
defaultEntryPoints = ["http", "https"] [entryPoints] [entryPoints.dashboard] address = ":8080" [entryPoints.dashboard.auth] [entryPoints.dashboard.auth.basic] users = ["admin:$apr1$wpdR.4yZ$UpbjGS7ZFq4pZHalhH1Tl0"] [entryPoints.http] address = ":80" [entryPoints.http.redirect] entryPoint = "https" [entryPoints.https] address = ":443" [entryPoints.https.tls] [api] entrypoint="dashboard" [acme] email = "[email protected]" storage = "acme.json" entryPoint = "https" onHostRule = true [acme.httpChallenge] entryPoint = "http" [docker] domain = "traefik.linuxbuz.com" watch = true network = "web"
終了したら、ファイルを保存して閉じます。次に、Let’sEncryptの情報を保存するための空のファイルを作成します。
touch acme.json
次に、次のコマンドを使用して、このファイルに適切な権限を付与します。
chmod 600 acme.json
Docker作成ファイルを作成する
次に、新しいdocker-compose.ymlファイルを作成し、ドメイン、ポート、ネットワーク、ボリュームを定義する必要があります。
次のコマンドで作成できます:
nano docker-compose.yml
次の行を追加します:
version: '3' services: traefik: image: traefik:1.7.21-alpine command: --docker --docker.domain=linuxbuz.com ports: - 80:80 - 443:443 networks: - web volumes: - /var/run/docker.sock:/var/run/docker.sock - ./traefik.toml:/traefik.toml - ./acme.json:/acme.json labels: - "traefik.frontend.rule=Host:traefik.linuxbuz.com" - "traefik.port=8080" container_name: traefik restart: always networks: web: external: true
終了したら、ファイルを保存して閉じます。
TraefikDockerコンテナをビルドする
この時点で、TraefikとDockerComposeの構成ファイルの準備ができています。次に、次のコマンドを使用してTraefikコンテナをビルドします。
docker-compose up -d
次の出力が得られるはずです:
Unable to find image 'traefik:1.7.21-alpine' locally 1.7.21-alpine: Pulling from library/traefik c9b1b535fdd9: Pull complete c141e361698e: Pull complete 2573c02b6f16: Pull complete 1619fb3841d1: Pull complete Digest: sha256:0e4ac8ae724603898620dbd5eb9cda7ec05f405d25476eb0d32b716b490ba079 Status: Downloaded newer image for traefik:1.7.21-alpine 27e735357bb3b7d2d253ff78ddf6e78896851420eff399e8ade23affc7ff0bf7
次に、次のコマンドを使用して実行中のコンテナを確認します。
docker ps
次の出力が得られるはずです:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7604696507a5 traefik:1.7.21-alpine "/entrypoint.sh --do…" 6 seconds ago Up 4 seconds 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp traefik
次に、Webブラウザーを開き、URLhttps://traefik.linuxbuz.comを使用してTraefikWebインターフェースにアクセスします。ユーザー名とパスワードの入力を求められます:
以前に生成した管理者としてのユーザー名とパスワードを入力し、署名をクリックします で ボタン。次の画面にTraefikダッシュボードが表示されます。
健康をクリックします タブ。次の画面にTraefikコンテナのヘルスステータスが表示されます。
おめでとう! CentOS 8にTraefikプロキシが正常にインストールされました。詳細については、Traefikのドキュメントを参照してください。