GNU/Linux >> Linux の 問題 >  >> Panels >> Docker

Dockerガイド:Traefikのインストール-マイクロサービス用の最新のリバースプロキシ

Traefikは、マイクロサービス用の最新のHTTPリバースプロキシおよびロードバランサーです。 Traefikを使用すると、すべてのマイクロサービスのデプロイが簡単になり、Docker、Swarm Mode、Kubernetes、Amazon ECS、Rancher、Etcd、Consulなどの既存のインフラストラクチャコンポーネントと統合されます。

Traefikは、すべてのマイクロサービスアプリケーションのルーターとして機能し、すべてのクライアント要求を正しいマイクロサービスの宛先にルーティングします。

このチュートリアルでは、Ubuntu 18.04 LTS(Bionic Beaver)にTraefikモダンリバースプロキシをDockerコンテナとしてインストールして構成する方法を段階的に説明します。

前提条件
  • Ubuntu 18.04
  • root権限

何をしますか?

  1. Ubuntu18.04にDockerをインストールする
  2. DockerComposeをインストールする
  3. カスタムDockerネットワークを作成する
  4. Traefikのインストールと構成
  5. テスト
ステップ1-Ubuntu18.04にDockerをインストールします

このガイドでは、公式のDockerリポジトリからインストールできる最新のDockerバージョンを使用します。

以下のコマンドを使用して、Dockerキーとリポジトリを追加します。

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

'add-apt-repository'コマンドは、すべてのリポジトリを自動的に更新します。

次に、最新のdocker-ceをインストールします。

sudo apt install docker-ce

インストールが完了したら、Dockerサービスを開始し、システムの起動時に毎回起動できるようにします。

systemctl start docker
systemctl enable docker

dockercommunity-editionがUbuntu18.04システムにインストールされています。インストールされているdockerのバージョンを確認してください。

docker version

追加:root以外のユーザーに対してDockerを実行する

Dockerコンテナーは、root以外のユーザーで実行できます。ユーザーをDockerグループに追加するだけです。

'mohammad'ユーザーを追加します。

useradd -m -s /bin/bash mohammad

次に、「mohammad」ユーザーをdockerグループに追加してから、dockerサービスを再起動します。

usermod -a -G docker mohammad
systemctl restart docker

dockerhello-worldを実行してテストします。

docker run -it hello-world

結果は次のとおりです。

ステップ2-DockerComposeをインストールします

Docker-Composeは、マルチコンテナーDockerアプリケーションを定義および管理するためのコマンドラインツールです。

Docker ComposeはPythonスクリプトであり、pythonpipコマンドまたはUbuntuリポジトリのaptコマンドを使用して簡単にインストールできます。 composeを使用すると、1つのコマンドで複数のDockerコンテナを実行できます。

以下のaptコマンドを使用して、リポジトリからdockercomposeをインストールします。

sudo apt install docker-compose

インストールが完了したら、dockercomposeバージョンを確認します。

docker-compose version

dockercompose1.17がUbuntu18.04にインストールされました。

ステップ3-カスタムDockerネットワークを作成する

このチュートリアルでは、traefikコンテナがdockerカスタムネットワークで実行されます。そのため、サーバー上に新しいDockerカスタムネットワークを作成する必要があります。

システムで利用可能なDockerネットワークを確認してください。

docker network ls

次に、traefikコンテナ用に「proxy」という名前の新しいカスタムネットワークを作成します。

docker network create proxy

そして、ネットワークコンテナ名のランダムな文字列を取得します。利用可能なネットワークをもう一度確認してください。

docker network ls

結果を以下に示します。

traefikの「proxy」という名前のカスタムDockerネットワークが作成されました。

ステップ4-Traefikリバースプロキシをインストールして構成する

このステップでは、HTTPS Letsencryptを有効にして(ドメイン名'traefik.hakase-labs.ioを使用して)traefikコンテナーを作成し、traefikでHTTPをHTTPSに自動的にリダイレクトします。

Traefikプレインストール

すべてのtraefik構成を作成する前に、暗号化されたhtpasswdパスワードを生成し、新しいtraefikディレクトリを作成するために「apache2-utils」をインストールする必要があります。

以下のaptコマンドを使用して「apache2-utils」をインストールします。

sudo apt install apache2-utils -y

次に、以下のhtpasswdコマンドを実行して、traefikダッシュボード認証用の新しいパスワードを生成します。

htpasswd -nb mohammad password

結果をメモに残します。

mohammad:$apr1$hEgpZUN2$OYG3KwpzI3T1FqIg9LIbi.

次に、「mohammad」ユーザーにログインします。

su - mohammad

すべてのtraefik構成に対して「traefik」という名前の新しいディレクトリを作成します。

mkdir -p traefik/
cd traefik/

Traefik構成を作成

「traefik」ディレクトリに移動し、vimエディタを使用して新しい構成ファイル「traefik.toml」を作成します。

cd traefik/
vim traefik.toml

以下の設定を貼り付けてください。

#Traefik Global Configuration
debug = false
checkNewVersion = true
logLevel = "ERROR"

#Define the EntryPoint for HTTP and HTTPS
defaultEntryPoints = ["https","http"]

#Enable Traefik Dashboard on port 8080
#with basic authentication method
#mohammad and password
[web]
address = ":8080"
[web.auth.basic]
users = ["mohammad:$apr1$hEgpZUN2$OYG3KwpzI3T1FqIg9LIbi."]

#Define the HTTP port 80 and
#HTTPS port 443 EntryPoint
#Enable automatically redirect HTTP to HTTPS
[entryPoints]
[entryPoints.http]
address = ":80"
[entryPoints.http.redirect]
entryPoint = "https"
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]

#Enable retry sending a request if the network error
[retry]

#Define Docker Backend Configuration
[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "traefik.hakase-labs.io"
watch = true
exposedbydefault = false

#Letsencrypt Registration
#Define the Letsencrypt ACME HTTP challenge
[acme]
email = "[email protected]"
storage = "acme.json"
entryPoint = "https"
OnHostRule = true
  [acme.httpChallenge]
  entryPoint = "http"

保存して終了します。

注:

構成に関するすべての情報は、コメントセクション'#...にあります。 '。

TraefikDocker作成スクリプトを作成する

次に、docker-composeymlスクリプトを作成します。

vim docker-compose.yml

以下の設定を貼り付けてください。

version: '3'

services:

  traefik:
    image: traefik:latest
    command: --docker --docker.domain=hakase-labs.io
    ports:
      - 80:80
      - 443:443
    networks:
      - proxy
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./traefik.toml:/traefik.toml
      - ./acme.json:/acme.json
    labels:
      - "traefik.frontend.rule=Host:traefik.hakase-labs.io"
      - "traefik.port=8080"
    container_name: traefik
    restart: always

networks:
  proxy:
    external: true

保存して終了します。

注:

  1. 「traefik:latest」Dockerイメージに基づいて「traefik」という名前の新しいコンテナを作成しています。
  2. 「traefik」コンテナは「proxy」という名前のカスタムDockerネットワークで実行され、外部ポートHTTP80およびHTTPS443を公開します。
  3. コンテナは、dockersockファイルを含むtraefik構成'traefik.toml'および'acme.json'をマウントします。
  4. traefik、フロントエンドドメイン名、traefikポートのラベル設定。

LetsencryptACME構成

'traefik.toml'のacme構成は、SSLletsencryptを自動的に生成するために使用されます。また、ストレージファイル「acme.json」に必要です。

新しいJSONファイル「acme.json」を作成し、権限を「600」に変更します。

touch acme.json
chmod 600 acme.json

SSLletsencrypt情報に関するすべてのログがファイルに保存されます。

Traefikコンテナを構築する

これで、上記の構成ファイルを使用して独自のtraefikコンテナを構築する準備が整いました。

cd traefik/
ls -lah

すべての構成'traefik.toml'、'docker-compose.yml'、および'acme.json'ファイル。

以下のdockercomposeコマンドを使用してコンテナをビルドします。

docker-compose up -d

完了したら、実行中のコンテナを確認します。

docker-compose ps

そして、Traefikコンテナを起動して実行し、外部ポートHTTPとHTTPSを公開します。

ステップ5-テスト

Webブラウザーを開き、アドレスバーにtraefikドメイン名を入力します。私のは:

http://traefik.hakase-labs.io/

HTTPS接続にリダイレクトされ、ユーザー名とパスワードの認証を求められます。

ユーザー「mohammad」でログインし、パスワードは「password」です。

そして、以下のようにTraefikダッシュボードが表示されます。

TraefikHealthステータスページ。

Traefikの最新のHTTPリバースプロキシは、Ubuntu18.04にDockerコンテナとしてインストールされています。


Docker
  1. NGINXを使用してHTTP(S)、SSH、およびMySQL/MariaDBのリバースプロキシを実行するためのガイド

  2. Dockerコンテナとは:初心者向け入門ガイド

  3. Nginxを使用したリバースプロキシ:ステップバイステップのセットアップガイド

  1. KibanaのNginxリバースプロキシを構成する方法

  2. LXDの初心者向けガイド:複数のWebサイトをホストするためのリバースプロキシの設定

  3. Dockerのインストール(Ubuntu)

  1. DockerにNGINXリバースプロキシをデプロイする方法

  2. Ubuntu15.10でApacheのリバースプロキシとしてNginxをインストールする方法

  3. Dockerガイド:MySQLを使用したGhostブログとDockerを使用したTraefikのデプロイ