traefik hub配置与使用

简介

什么是traefik hub

在traefik2.7后,推出了Traefik Hub云原生网络平台,可帮助你即时在边缘发布、保护和扩展容器。它提供了从用户到容器的端到端连接以及进入每个服务的网关。它是用于在分布式系统中连接多个集群的统一解决方案,它通过一个简单易用的仪表板整合了网络堆栈的多个层。Traefik Hub 是一种开箱即用的解决方案,易于学习,甚至更易于实施,开发团队只需单击一下即可将应用程序发布到 Internet,并自动配置重要的安全实践。

Traefik Hub 将完全托管于你的基础架构之上,并与你安装在每个集群中的代理进行连接。代理附加到入口实例。它们充当你的每项服务的网关,该平台向每个代理发送指令并从其接收关键指标。Traefik Hub 适用于 Kubernetes 或 Docker 集群。

官方文档:https://doc.traefik.io/traefik/traefik-hub/

traefik hub操作参考文档:https://traefik.io/blog/publish-and-secure-applications-with-traefik-hub/

traefik hub特性

一键服务发布

Traefik Hub 使发布和暴露任何应用程序到互联网变得容易。对于每个发布的服务,Traefik Hub 提供了一个唯一的 DNS 名称,可以立即用于从互联网的任何地方访问该容器。

加密隧道

Traefik Hub 通过一个私有的、加密的隧道连接到你的集群。利用该隧道,你可以发布你的容器供外部访问,而不必担心复杂和不安全的公共 IP 或 NAT 配置。

自动化证书管理

Traefik Hub 将请求、更新和传播 ACME 证书到你所有的集群,以便所有服务保持一致的安全配置。

灵活地访问控制

无论你使用哪种容器编排工具,都能保护和保障对你的服务的访问。Traefik Hub 支持 JSON 网络令牌(JWT)、Basic Auth.

集中化多集群管理仪表板

在一个单一的窗口内,轻松地可视化所有关于你的所有集群、它们的配置以及服务性能和健康的入站流量的信息。

traefik hub工作原理

首先在你自己的 Kubernetes 或 Docker 集群中,部署2 个 Traefik Hub 相关组件:

当你对外发布服务的时候,Traefik Hub 会给你的服务分配一个唯一的域名 (DNS),你需要访问该域名的 HTTPS 协议,然后 Traefik Hub 接收到请求,将请求通过 Traefik Hub 与你自己的 Traefik Hub Agent 之间建立的安全隧道,将请求转发给 Traefik Hub Agent,Traefik Hub Agent 再将请求转发给 Traefik,最后流转到具体的服务。

温馨提示

目前 Traefik Hub SaaS 服务是实验阶段,并不建议上生产使用,实测发现认证服务配置后会并不会自动弹出认证页面。目前免费用户创建服务上限为10个,后续随时可能收费。

安装traefik hub

创建账户

点击traefik dashboard右侧的Go to Hub Dashboard跳转到traefik hub登录页

注册账号后登录traefik hub

注册后traefik会自动为你的账号分配域名,安装traefik hub agent后,会自动创建通配符域名证书资源。

安装agent

接下来点击agent页面,选择安装traefik hub agent

接下来按照提示,安装traefik proxy和traefik hub agent

执行完成后查看资源信息

[root@k8s-master ~]# helm list -A
NAME            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                   APP VERSION
hub-agent       hub-agent       1               2022-10-08 22:51:39.810530479 +0800 CST deployed        hub-agent-0.24.0        v0.5.0     
traefik         hub-agent       1               2022-10-08 22:47:51.683322496 +0800 CST deployed        traefik-12.0.2          2.9.1      
[root@k8s-master ~]# kubectl get pod -n hub-agent 
NAME                                     READY   STATUS    RESTARTS   AGE
hub-agent-auth-server-7cc987c674-df4z4   1/1     Running   0          48s
hub-agent-auth-server-7cc987c674-lf9cj   1/1     Running   0          48s
hub-agent-auth-server-7cc987c674-m85tt   1/1     Running   0          48s
hub-agent-controller-8586f98687-nwhr5    1/1     Running   0          48s
hub-agent-tunnel-75c6f88b55-g6jbd        1/1     Running   0          48s
traefik-hub-64dff85f87-7r52j             1/1     Running   0          4m47s
[root@k8s-master ~]# kubectl get svc -n hub-agent 
NAME                    TYPE           CLUSTER-IP      EXTERNAL-IP      PORT(S)             AGE
hub-agent-auth-server   ClusterIP      10.101.16.85               80/TCP              108s
hub-agent-controller    ClusterIP      10.104.3.221               443/TCP             109s
hub-catch-all           ExternalName             hub.traefik.io   443/TCP             109s
traefik-hub             ClusterIP      10.111.28.192              9100/TCP,9901/TCP   5m37s

接下来查看traefik hub的agent详细信息

发布服务

在本地的kubernetes集群有一个myapp1服务,并且创建了service资源(不需要创建ingressrouter资源),此时访问myapp1只能通过本地svc访问,因为没有公网IP和域名,其他互联网用户无法访问。

[root@k8s-master ingress]# kubectl get svc
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                                                                                  AGE
kubernetes   ClusterIP   10.96.0.1               443/TCP                                                                                  14d
myapp1       ClusterIP   10.104.58.5             80/TCP                                                                                   11h
myapp2       ClusterIP   10.99.197.6             80/TCP                                                                                   11h
traefik      NodePort    10.104.36.193           80:32248/TCP,443:30732/TCP,9000:30517/TCP,9100:31763/TCP,9200:32614/TCP,9300:32084/UDP   45m
[root@k8s-master ingress]# kubectl get pod
NAME                                          READY   STATUS    RESTARTS   AGE
myapp1-795d947b45-lvfmb                       1/1     Running   2          11h
myapp2-6ffd54f76-b2thm                        1/1     Running   2          11h
myapp2-6ffd54f76-stvf8                        1/1     Running   0          115s
test                                          1/1     Running   5          8d
traefik-ingress-controller-5d474997df-qnm4l   1/1     Running   0          23m

接下来使用traefik hub发布myapp1服务。

应用发布成功时,traefik会为我们自动配置域名并设置ssl证书,接下来访问公网域名即可。访问测试https://valid-hookworm-xmat3h.qitgjjol.traefikhub.io/

发布带访问控制策略的服务

先在访问控制策略页面,点击创建访问控制策略

选择基本身份验证服务,并设置账号密码

定义ACP后,我们可以在访问控制策略中看到详细信息

接下来发布一个flask应用,在ACP选项中选择basic auth认证

等待应用发布成功,访问公网域名

实际访问测试并没有出现认证策略,期待官方修复。

发布非k8s服务

除了docker k8s服务的直接暴露外,如果有内网服务与k8s互通的话,也可以通过Kubernetes Service + Endpoint 的方式将非 Kubernetes 服务配置为 Kubernetes 服务,通过traefik hub发布服务。

Kubernetes Service + Endpoint的详细用法参考文章:https://www.cuiliangblog.cn/detail/section/94200051

例如我在k8s集群外的机器部署了青龙面板,由于没有公网IP,只能内网访问。但是运行青龙面板的机器和k8s机器可以互通,此时就可以通过traefik hub发布服务

创建青龙服务的service和endpoints

[root@tiaoban ingress]# cat qinglong-svc.yaml 
apiVersion: v1
kind: Service
metadata:
  name: qinglong
spec:
  ports:
  - port: 5700
    name: qinglong
    targetPort: 5700
---
apiVersion: v1
kind: Endpoints
metadata: 
  name: qinglong
subsets:
- addresses:
  - ip: 192.168.10.100 # 外部机器IP
  ports:
   - port: 5700 # 服务端口
     name: qinglong
[root@tiaoban ingress]# kubectl apply -f qinglong-svc.yaml 
service/qinglong created
endpoints/qinglong created
[root@tiaoban ingress]# kubectl get svc 
NAME         TYPE           CLUSTER-IP       EXTERNAL-IP      PORT(S)        AGE
flask        ClusterIP      10.104.29.157               5000/TCP       53m
myapp1       ClusterIP      10.105.147.187              80/TCP         13h
qinglong     ClusterIP      10.102.161.1                5700/TCP       6s

接下来查看traefik hub控制台,已自动发现qinglong服务。

配置qinglong服务发布

提示qinglong服务发布成功

通过公网域名访问服务

展开阅读全文

页面更新:2024-04-25

标签:仪表板   公网   集群   青龙   隧道   容器   证书   机器   策略   域名

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top