五分钟系列之traefik
本文最后更新于 346 天前,其中的信息可能已经有所发展或是发生改变。

五分钟系列之traefik

介绍

该系列是用五分钟来快速了解traefik的基本功能以及快速部署。

食用范围

  • 初学者
  • 概念验证
  • 快速部署
  • 等等

先决条件

  • Docker
  • Docker Compose
  • DNS 记录

介绍

Traefik是一种现代 HTTP 反向代理和负载均衡器,可以轻松的和DockerSwarm 模式、KubernetesMarathonConsulEtcdRancherAmazon ECS等集成,并自动和动态地配置自身。将 Traefik 指向您的编排器应该是您需要的唯一配置步骤。

官方的口号就是:Makes Networking Boring

部署

这里采用Docker Compose方式进行部署

version: '3'

# 自行创建网络 docker network create traefik
networks:
  traefik:
    external: true

services:
  traefik:
    container_name: traefik
    image: traefik:latest
    restart: always

    command:
      # 声明需要入口点的端口,在之后部署新的应用的时候需要用到
      - --entrypoints.http.address=:80
      - --entrypoints.https.address=:443

      # 声明Docker为提供者
      - --providers.docker=true
      - --api=true

      # 启用http3协议
      - --experimental.http3=true
      - --entrypoints.https.http3

      # 证书信息 这里使用的Cloudflare 如果是其他的提供商,参考https://doc.traefik.io/traefik/https/acme/#providers
      - --certificatesresolvers.letsencrypt.acme.email=example@example.com
      - --certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json
      - --certificatesresolvers.letsencrypt.acme.dnschallenge=true
      - --certificatesresolvers.letsencrypt.acme.dnschallenge.provider=cloudflare
      - --certificatesresolvers.letsencrypt.acme.dnschallenge.delaybeforecheck=0
      - --certificatesresolvers.letsencrypt.acme.dnschallenge.resolvers=1.1.1.1:53,1.0.0.1:53

    # 配置Cloudflare环境变量,如果是其他的提供商,参考https://doc.traefik.io/traefik/v1.4/configuration/acme/#dnsprovider
    environment:
      - CLOUDFLARE_EMAIL=example@example.com
      - CLOUDFLARE_API_KEY=api key of cloudflare

    # 标签 主要用于Traefik配置
    labels:

      # 配置规则以及强制跳转到https
      - traefik.http.routers.to-https.rule=HostRegexp(`{host:.+}`)
      - traefik.http.routers.to-https.entrypoints=http
      - traefik.http.routers.to-https.middlewares=to-https

      # 声明该应用的域名和入口点
      - traefik.http.routers.traefik.rule=Host(`traefik.example.com`)
      - traefik.http.routers.traefik.entrypoints=https

      - traefik.http.routers.traefik.service=api@internal

      # 定义是否启用tls,以及使用哪一个证书提供商
      - traefik.http.routers.traefik.tls=true
      - traefik.http.routers.traefik.tls.certresolver=letsencrypt

      - traefik.http.middlewares.to-https.redirectscheme.scheme=https

      # 身份认证,用于登录Traefik的,参考https://doc.traefik.io/traefik/middlewares/http/basicauth/#configuration-examples
      - traefik.http.routers.traefik.middlewares=auth
      - traefik.http.middlewares.auth.basicauth.users=test:$$apr1$$H6uskkkW$$IgXLP6ewTrSuBkTrqE8wj/,test2:$$apr1$$d9hr9HBB$$4HxwgUir3HP4EsggP/QNo0

    networks:
      - traefik

    ports:
      - 80:80
      - 443:443/tcp
      # 该协议用于提供http3
      - 443:443/udp

    volumes:
      - $PWD/config/traefik:/etc/traefik
      - $PWD/letsencrypt:/letsencrypt
      # 用于检索docker容器
      - /var/run/docker.sock:/var/run/docker.sock:ro

然后启动该应用

docker compose up -d

之后创建新的应用

version: '3'
services:
  wordpress:
    image: wordpress
    container_name: wordpress
    environment:
      - TZ=Asia/Shanghai
    restart: always
    volumes:
      - $PWD/html:/var/www/html
    labels:
      # 定义该应用的域名
      - traefik.http.routers.wordpress.rule=Host(`wordpress.example.com`)
      # 定义入口点
      - traefik.http.routers.wordpress.entrypoints=https
      # 定义使用哪一个证书提供商
      - traefik.http.routers.wordpress.tls.certresolver=letsencrypt
      # 定义流量转发到应用内部的哪一个端口
      - traefik.http.services.wordpress.loadbalancer.server.port=80
    networks:
      - traefik
networks:
  traefik:
    external: true

之后,你就可以通过 https://wordpress.example.com 进行访问了

【版权声明】
本文首发于云博客,欢迎转载,但是必须保留本文的署名云博客(包含链接)。
如您想成为本站的作者或者编辑,请给我留言:yun@yka.moe
本文永久链接:五分钟系列之traefik
本文作者:yun
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇