minikube使用Traefik做为网关暴露到外网

上一篇文章提到了minikube使用ingress,但是仍然只能本机访问,这一篇加上traefik做为网关,能外网访问

1.安装docker-compose

下载和安装

curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose


加权限

chmod +x /usr/local/bin/docker-compose


验证
 

docker-compose version

2.查看mimikube使用的docker网络名称

使用命令

minikube profile
docker network ls


默认使用的网络名为minikube

3.编辑docker-compose文件

创建docker-compose.yaml文件,内容如下

version: '2'

services:
    traefik:
        image: traefik:v2.1
        container_name: traefik
        # 启用Web UI并监听docker
        command: --api.insecure=true --providers.docker
        networks:
            - minikube        
        ports:
            # HTTP 端口
            - "80:80"
            # Web UI 端口
            - "8080:8080"        
        labels:
            - "traefik.enable=false"
        volumes:
            # 这样Traefik可以监听Docker事件
            - /var/run/docker.sock:/var/run/docker.sock
            # 启动配置文件
            - ~/traefik/traefik.toml:/etc/traefik/traefik.toml
            # 自定义routers、services
            - ~/traefik/conf:/etc/traefik/conf
        restart: always

networks:
  minikube:
    external: true

其中networks指定网络名为minikube使用的网络名

4.创建traefik配置文件

全局配置文件traefik.toml,内容如下

# 全局配置
[global]
  checkNewVersion = false
  sendAnonymousUsage = false
# 入口
[entryPoints]
  # http 
  [entryPoints.web]
    address = ":80"
  # https "websecure"这个名字是自己定义的  
  [entryPoints.websecure]
    address = ":443"
  #  traefik web ui 
  [entryPoints.traefik]
    address = ":8080" 
# 免费Let's Encrypt 证书(注意:必须域名解析到的主机中才有效,traefik会把秘钥写入acme.json中)
[certificatesResolvers.bxtlschallenge.acme]
  # 自己的邮箱地址
  email = "123456@qq.com"
  # 秘钥写入地址,根据自己文件映射来配置
  storage = "/letsencrypt/acme.json"
  [certificatesResolvers.bxtlschallenge.acme.httpChallenge]
    entryPoint = "web"

# 自定义Router、Services(貌似必须定义在外部文件里面,坑了好久)
[providers.file]
  directory = "/etc/traefik/conf"
# traefik 需要开启的功能
[api]
  insecure = true
  dashboard = true
[ping]
[providers.docker]
  endpoint = "unix:///var/run/docker.sock"
  exposedByDefault = true
# 传输配置
[serversTransport]
  # 如果后端需要代理https自定义证书,可以使用这种方式就可以跳过验证,不然会报x509证书错误
  insecureSkipVerify = true

minikube配置文件minikube.toml,内容如下

[http.services]
  [http.services.minikube.loadBalancer]
    [[http.services.minikube.loadBalancer.servers]]
      url = "http://192.168.49.2:80/"

[http.routers]
  [http.routers.example]
    entryPoints = ["web"]
    rule = "Host(`a.example.com`)"
    service = "minikube"

5.启动traefik和测试访问

这里使用docker-compose的启动,命令如下

docker-compose up -d

启动后先看traefik的dashboard查看router,service定义是否正常

 正常后,局域网添加hosts文件内容

192.168.3.55 a.example.com

 然后浏览器访问

http://a.example.com/

结果如下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值