当前位置: 首页 > news >正文

traefik k3s配置

traefik 是什么

他是一个专门为了云设计的流量代理软件,还是开源免费的,类似nginx

traefik 如何配置

在这里插入图片描述

traefik 的配置有2种方式

  • 静态配置:定义 entrypoints和 providers
  • 动态配置:关于系统如何处理请求的所有配置,他是热加载的。可以保证配置被改的时候,不换有任何请求被打断和丢失连接。

详细的配置方法官方文档有不在这里赘述了。这里只说一个关键的。
静态配置需要在traefik 启动之前设置好,如果更改traefik的静态配置就必须重新部署他。而动态配置可以交给类似k8s这样的provider 由他们来设置。就是我们通过yaml 设置k8s,k8s 再去自动化配置traefik 的动态配置,从而在不停止traefik 的情况下更新traefik 的某些配置

【参考】
https://doc.traefik.io/traefik/getting-started/configuration-overview/

k8s 配置

对于k8s 由2种配置traefik的方法

  • ingressRpute: 最新的方法,用老的ingress 要写很多annotations,所以官方使用 Kubernetes API. 的扩展语法 Custom Resource Definition (CRD) 定义了新的类型。听官方语气推荐的是这个。不建议用老的方法, 类似下面方法
# As a Kubernetes Traefik IngressRoute
---
apiVersion: traefik.io/v1alpha1
kind: MiddlewareTCP
metadata:
  name: foo-ip-allowlist
spec:
  ipAllowList:
    sourcerange:
      - 127.0.0.1/32
      - 192.168.1.81

---
apiVersion: traefik.io/v1alpha1
kind: IngressRouteTCP
metadata:
  name: ingressroute
spec:
# more fields...
  routes:
    # more fields...
    middlewares:
      - name: foo-ip-allowlist
  • ingress
  • :老方法,完全符合 Kubernetes Ingress controller 标准的一个控制器。类似下面语法
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-service
  namespace: airflow  # 确保命名空间与 Service 一致
  annotations:


spec:
  rules:
  - http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: airflow-webserver  # 确保这里替换为 Airflow 的 Service 名称
            port:
              number: 8080  # 确保这是 Airflow 服务监听的端口

【参考】
https://doc.traefik.io/traefik/providers/kubernetes-crd/

如何查看自己的k8s 使用的是什么ingress


# 查看所有ingress 的命令由那些
wen@ubuntuserver:~/kubeyml$ kubectl api-resources | grep ingress
ingressclasses                                 networking.k8s.io/v1              false        IngressClass
ingresses                         ing          networking.k8s.io/v1              true         Ingress
ingressroutes                                  traefik.containo.us/v1alpha1      true         IngressRoute
ingressroutetcps                               traefik.containo.us/v1alpha1      true         IngressRouteTCP
ingressrouteudps                               traefik.containo.us/v1alpha1      true         IngressRouteUDP
ingressroutes                                  traefik.io/v1alpha1               true         IngressRoute
ingressroutetcps                               traefik.io/v1alpha1               true         IngressRouteTCP
ingressrouteudps                               traefik.io/v1alpha1               true         IngressRouteUDP
# 查看现在用的是什么ingress
wen@ubuntuserver:~/kubeyml$ kubectl get  ingressclass -A
NAME      CONTROLLER                      PARAMETERS   AGE
traefik   traefik.io/ingress-controller   <none>       9d

k3s 中的 自定义traefik 的方法

k3s 自带的ingress 就是traefik ,通过helm 安装的

# 搜索远程愿那些traefik chart
wen@ubuntuserver:~/kubeyml$ helm search repo  traefik 
WARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /etc/rancher/k3s/k3s.yaml
WARNING: Kubernetes configuration file is world-readable. This is insecure. Location: /etc/rancher/k3s/k3s.yaml
NAME            CHART VERSION   APP VERSION     DESCRIPTION                                       
stable/traefik  1.87.7          1.7.26          DEPRECATED - A Traefik based Kubernetes ingress...

# 查看仓库url
helm repo list
# 查看以及安装的chart 详细信息
helm get all traefik  -n kube-system
#查看远程chart 详细信息
helm show all stable/traefik  -n kube-system

官方推荐的自定义方法可以参考官方的github readme中的Philosophy部分

k3s四种修改chart信息的方法

我们已自带的trafik 为例

  • 修改本地的chart文件
# 查看traefik 的安装信息可以找到原始chart位置
helm get all traefik  -n kube-system
# 你会发先他不是远程拉起的。是从本地的chart 安装下面是chart本地的位置
# /var/lib/rancher/k3s/server/static/charts/traefik-25.0.3+up25.0.0.tgz
  • 创建一个一模一样的Deployment 文件进行覆盖,可以通过kubectl 输出已有的Deployment 文件。在修改apply

  • 通过helm values.yaml 来配置。 这也是官方推荐的做法

#查看value 文件
 helm get values traefik -n kube-system 
  • 使用一个 HelmChartConfig 来添加新的配置 官方文档,这个是k3s推荐的做法。

chart deployment源代码
traefil的values.yaml

traefik所有的cli参数

给k3s的traefik 添加新的entrypoint

使用k3s的推荐做法,添加一个airflow 的entrypoint

apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
  name: traefik
  namespace: kube-system
spec:
  valuesContent: |-
  #上面是追加的意思。下面同样也可以用在value.ymal中
  #官方的模板代码读下面的配置自动给 traefik 发送cli参数,也会自动创建service(本来就是拿来创建服务的)
    ports:
      airflow:
        expose: true
        exposedPort: 8080
        port: 8080
        protocol: TCP
   # 这个没用官方不解析
    entryPoints:
      airflow:
        address: ":8080"
    #这个是官方values中给的一种方法。可以自己指定traefik 的cli参数
    deployment:
      additionalArgs:
      - "--entrypoints.airflow.address=:8080/tcp"

【参考】
https://doc.traefik.io/traefik/

相关文章:

  • MongoDB基础知识
  • 页游(弹弹堂)刷怪脚本教程(一)---大漠插件制作颜色变化的字体字库(按键精灵)
  • Java项目之基于ssm的个性化旅游攻略定制系统(源码+文档)
  • http://noi.openjudge.cn/_2.5基本算法之搜索_1804:小游戏
  • 实验室预约|实验室预约小程序|基于Java+vue微信小程序的实验室预约管理系统设计与实现(源码+数据库+文档)
  • JMeter接口性能测试从入门到精通
  • FreeCAD傻瓜教程-钣金工作台SheetMetal的安装和简单使用
  • AIP-214 资源过期
  • Green Coding规范:从循环语句到数据库查询的节能写法
  • 如何在idea中新建一个项目
  • strings.Cut 使用详解
  • 【Csharp】Winform客户端与服务器,局域网加密字符串与文件通信
  • 使用SymPy求解矩阵微分方程
  • DeepSeek本地部署(Ollama)
  • 【代码随想录 字符串3.替换数字】
  • C++中为什么要使用nullptr而不是null
  • 数字电子技术基础(三十九)——显示译码器
  • 基于CAPL语法实现对程控电源的控制(通用DLL版,支持TCP协议,RS232协议,SCPI指令)
  • 对解释器模式的理解
  • 互联网三高架构设计
  • 微信视频网站怎么做/宁波seo网站排名
  • 幻灯片在什么网站做/培训心得体会1000字通用
  • web是做网站的吗/免费b2b平台推广
  • 做学习交流网站/腾讯云域名注册官网
  • 做网站开发需要什么/运营推广计划怎么写
  • 北京做网站哪个好/网络营销