欢迎光临
我们一直在努力

Docker指南:安装Traefik – 一种用于微服务的现代反向代理

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. 在Ubuntu 18.04上安装Docker
  2. 安装Docker Compose
  3. 创建自定义Docker网络
  4. 安装和配置Traefik
  5. 测试

第1步 – 在Ubuntu 18.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’命令将自动更新所有存储库。

在Ubuntu上安装Docker

现在安装最新的docker-ce。

sudo apt install docker-ce

安装完成后,启动docker服务并使其在系统引导时每次启动。

systemctl start docker
systemctl enable docker

docker社区版已安装在Ubuntu 18.04系统上,检查已安装的docker版本。

docker version

检查docker版本

附加:为非root用户运行Docker

Docker容器可以在非root用户下运行。 我们只需要将用户添加到docker组。

添加’mohammad’用户。

useradd -m -s /bin/bash mohammad

现在将’mohammad’用户添加到docker组,然后重新启动docker服务。

usermod -a -G docker mohammad
systemctl restart docker

通过运行docker hello-world进行测试。

docker run -it hello-world

以下是结果。

为非root用户运行Docker

第2步 – 安装Docker Compose

Docker-Compose是一个命令行工具,用于定义和管理多容器Docker窗应用程序。

Docker Compose是一个python脚本,可以使用python pip命令安装,也可以使用ubuntu存储库中的apt命令轻松安装。 使用compose,我们可以使用单个命令运行多个Docker容器。

使用下面的apt命令从存储库安装docker compose。

sudo apt install docker-compose

安装完成后,请检查docker compose版本。

docker-compose version

在Ubuntu 18.04上安装了docker compose 1.17。

安装Docker Compose

第3步 – 创建自定义Docker网络

在本教程中,traefik容器将在docker自定义网络上运行。 所以我们需要在服务器上创建一个新的docker自定义网络。

检查系统上可用的docker网络。

docker network ls

现在为traefik容器创建一个名为“proxy”的新自定义网络。

docker network create proxy

并且您将获得网络容器名称的随机字符串。 再次检查可用的网络。

docker network ls

结果如下所示。

创建自定义Docker网络

已创建名为“proxy”for traefik的自定义Docker窗网络。

第4步 – 安装和配置Traefik反向代理

在此步骤中,我们将创建启用HTTPS letsencrypt的traefik容器(使用域名’traefik.hakase-labs.io),并在traefik上自动将HTTP重定向到HTTPS。

Traefik预安装

在创建所有traefik配置之前,我们需要安装’apache2-utils’来生成加密的htpasswd密码并创建新的traefik目录。

使用下面的apt命令安装’apache2-utils’。

sudo apt install apache2-utils -y

现在运行下面的htpasswd命令为traefik仪表板身份验证生成新密码。

htpasswd -nb mohammad password

将结果保存在您的笔记中。

mohammad:$apr1$hEgpZUN2$OYG3KwpzI3T1FqIg9LIbi.

安装和配置Traefik反向代理

接下来,登录’mohammad’用户。

su – mohammad

为所有traefik配置创建一个名为“traefik”的新目录。

mkdir -p traefik/
cd traefik/

创建Traefik配置

转到’traefik’目录并使用vim编辑器创建一个新的配置文件’traefik.toml’。

cd traefik/
vim traefik.toml

粘贴下面的配置。

#Traefik Global Configurationdebug = falsecheckNewVersion = truelogLevel = "ERROR"#Define the EntryPoint for HTTP and HTTPSdefaultEntryPoints = ["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 = trueexposedbydefault = false#Letsencrypt Registration#Define the Letsencrypt ACME HTTP challenge[acme]email = "hakaselabs@gmail.com"storage = "acme.json"entryPoint = "https"OnHostRule = true  [acme.httpChallenge]  entryPoint = "http"

保存并退出。

注意:

有关配置的所有信息都在评论部分’ #… ‘中。

创建Traefik Docker Compose脚本

现在创建docker-compose yml脚本。

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: alwaysnetworks:  proxy:    external: true

保存并退出。

注意:

  1. 我们正在基于’traefik:latest’Docker窗图像创建一个名为’traefik’的新容器。
  2. ‘traefik’容器将在名为’proxy’的自定义docker网络上运行,并公开外部端口HTTP 80和HTTPS 443。
  3. 容器将安装traefik配置’traefik.toml’和’acme.json’,包括docker sock文件。
  4. traefik,前端域名和traefik端口的标签配置。

Letsencrypt ACME配置

‘traefik.toml’上的acme配置用于自动生成SSL letsencrypt。 并且它是存储文件’acme.json’所必需的。

创建一个新的JSON文件’acme.json’并将权限更改为’600’。

touch acme.json
chmod 600 acme.json

有关SSL letsencrypt信息的所有日志都将保存在文件中。

建立Traefik容器

现在我们准备使用上面的配置文件构建我们自己的traefik容器了。

cd traefik/
ls -lah

所有配置’traefik.toml’,’docker-compose.yml’和’acme.json’文件。

建立Traefik容器

使用下面的docker compose命令构建容器。

docker-compose up -d

使用docker compose构建容器

完成后,检查正在运行的容器。

docker-compose ps

您将启动并运行Traefik容器,公开外部端口HTTP和HTTPS。

Traefik容器启动并运行

第5步 – 测试

打开Web浏览器,在地址栏中键入traefik域名。 我的是:

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

您将被重定向到HTTPS连接,并将被要求输入用户名和密码。

密码验证

使用用户’mohammad’登录,密码为’password’。

您将获得如下Traefik仪表板。

Traefik仪表板

Traefik健康状况页面。

Traefik健康状况页面

Traefik现代HTTP反向代理已作为Docker容器安装在Ubuntu 18.04上。

参考

赞(0) 打赏
未经允许不得转载:老赵部落 » Docker指南:安装Traefik – 一种用于微服务的现代反向代理
data-ad-format="auto" data-full-width-responsive="true">

评论 抢沙发