实战K3s 集群内置Traefik(反向代理& Ingress Controller)
Traefik:轻量级且强大的现代HTTP反向代理与负载均衡器
在当下这个云计算和微服务盛行的时代,一个高效且易用的HTTP反向代理与负载均衡器成为了每一个技术团队不可或缺的工具。今天,我们就来聊聊这样一个备受瞩目的开源项目——Traefik。
一、Traefik是什么?
Traefik是一个用Go语言编写的现代HTTP反向代理和负载均衡器,特别适用于微服务架构。它支持多种后端服务(如Docker、Kubernetes、Marathon、Consul、Etcd等),能够自动发现并配置后端服务,无需手动配置。
二、Traefik的特点
自动化配置:Traefik能够自动检测后端服务的变化,并实时更新配置,无需重启或手动干预。
易于集成:Traefik提供了丰富的中间件支持,可以轻松集成各种认证、限流、日志等功能。
高性能:基于Go语言的编写,Traefik拥有出色的性能和稳定性,能够轻松应对高并发场景。
灵活的路由规则:支持基于路径、主机名、HTTP头等多种方式进行路由配置,满足复杂的业务需求。
丰富的插件生态:Traefik拥有庞大的社区和丰富的插件生态,用户可以根据自己的需求定制和扩展功能。
三、Traefik的应用场景
微服务架构:在微服务架构中,Traefik可以作为服务网关,实现服务的注册、发现、负载均衡和路由等功能。
Kubernetes集群:在Kubernetes集群中,Traefik可以作为Ingress Controller,实现外部流量到集群内部服务的转发。
静态网站托管:除了作为反向代理外,Traefik还可以直接托管静态网站,提供高效的HTTP服务。
四、如何开始使用Traefik?
使用Traefik非常简单,你可以通过官方文档或社区教程快速上手。一般来说,你需要先安装Traefik,然后配置后端服务,最后设置路由规则即可。此外,你还可以根据需求选择合适的中间件和插件进行扩展。
五、总结
Traefik以其轻量级、易用性和强大的功能受到了广大技术团队的青睐。无论你是正在搭建微服务架构,还是管理Kubernetes集群,亦或是需要托管静态网站,Traefik都能为你提供高效且灵活的解决方案。快来试试看吧!
# nginx实践用例:
1、创建Namespace、Deployment、Service、Ingress
# cat 1_nginx-namespace.yaml apiVersion: v1 kind: Namespace metadata: name: inte labels: name: label-test
kubectl apply -f 1_nginx-namespace.yaml
# cat 2_nginx-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: namespace: inte name: nginx-deployment spec: selector: matchLabels: app: nginx replicas: 2 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:alpine ports: - containerPort: 8
kubectl apply -f 2_nginx-deployment.yaml
# cat 3_nginx-service.yaml apiVersion: v1 kind: Service metadata: name: nginx-svc namespace: inte spec: selector: app: nginx ports: - protocol: TCP port: 80 targetPort: 80
kubectl apply -f 3_nginx-service.yaml
# cat 4_nginx-ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: inte-traefik-ingress namespace: inte spec: ingressClassName: traefik # 使用这个字段来指定Ingress类 rules: - host: inte-traefik.youchang.net http: paths: - path: / pathType: Prefix backend: service: name: nginx-svc port: number: 80 tls: - hosts: - inte-traefik.youchang.net secretName: wildcard-youchang-net-tls
kubectl apply -f 4_nginx-ingress.yaml
2、配置tls证书:
# sh ssl/inte-wildcard-youchang-net-tls.sh
# tree -L 2 ssl ssl ├── cert.pem ├── inte-wildcard-youchang.net-tls.sh └── privkey.pem # cat ssl/inte-wildcard-youchang-net-tls.sh kubectl create secret tls wildcard-youchang-net-tls \ --namespace inte \ --key privkey.pem \ --cert cert.pem
3、绑定hosts测试:
# 绑定hosts:
47.94.155.130 inte-traefik.youchang.net
# 测试地址:
https://inte-traefik.youchang.net
# kubectl exec -it nginx-deployment-f6dc544c7-gj2fs /bin/sh -n inte
# kubectl exec -it nginx-deployment-f6dc544c7-mlldb /bin/sh -n inte
# 进入nginx容器,编辑index.html:
# vi /usr/share/nginx/html/index.html
添加:
...... by: fanyouchang! ……