searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

快速部署和使用Traefik

2025-06-06 08:26:19
1
0

1. 功能

开源的云原生应用代理,可以作为K8S Ingress Controller,通过Ingress配置去访问后端服务,如果需要全面的功能,需要使用Traefik自定义的CRD,通过IngressRoute来定义转发规则。

2. 部署

需要使用CRD IngressRoute的安装方式:

1.创建ServiceAccount

apiVersion: v1
 
kind: ServiceAccount
 
metadata:
 
  name: traefik-ingress-controller

2.创建CRD和RBAC

# Install Traefik Resource Definitions:

kubectl apply -f raw.githubusercontent.com/traefik/traefik/v3.1/docs/content/reference/dynamic-configuration/kubernetes-crd-definition-v1.yml
 
# Install RBAC for Traefik:
 
kubectl apply -f raw.githubusercontent.com/traefik/traefik/v3.1/docs/content/reference/dynamic-configuration/kubernetes-crd-rbac.yml

3.创建Traefik和对应的Service

kind: Deployment
apiVersion: apps/v1
metadata:
  namespace: default
  name: traefik
  labels:
    app: traefik
 
spec:
  replicas: 1
  selector:
    matchLabels:
      app: traefik
  template:
    metadata:
      labels:
        app: traefik
    spec:
      serviceAccountName: traefik-ingress-controller
      containers:
        - name: traefik
          image: traefik:v3.1
          args:
            - --entryPoints.web.Address=:8000
            - --entryPoints.websecure.Address=:4443
            - --providers.kubernetescrd
          ports:
            - name: web
              containerPort: 8000
            - name: websecure
              containerPort: 4443
apiVersion: v1
kind: Service
metadata:
  name: traefik-web-service
 
spec:
  type: LoadBalancer
  ports:
    - targetPort: web
      port: 8000
  selector:
    app: traefik
---
apiVersion: v1
kind: Service
metadata:
  name: traefik-secure-web-service
 
spec:
  type: LoadBalancer
  ports:
    - targetPort: websecure
      port: 4443
  selector:
    app: traefik

创建完成之后,Traefik就部署完成了。

3. 使用验证

1.创建后端的应用whoami和service:

kind: Deployment
apiVersion: apps/v1
metadata:
  name: whoami
  labels:
    app: whoami
 
spec:
  replicas: 1
  selector:
    matchLabels:
      app: whoami
  template:
    metadata:
      labels:
        app: whoami
    spec:
      containers:
        - name: whoami
          image: traefik/whoami
          command: ["/whoami"]
          args: ["--verbose"]
          ports:
            - name: web
              containerPort: 80
apiVersion: v1
kind: Service
metadata:
  name: whoami
  
spec:
  ports:
    - name: web
      port: 80
      targetPort: web
 
  selector:
    app: whoami

2.创建Middleware(这里的作用是进行路径rewrite,官方提供的还有其他的middleware可以实现不同的功能):

# Replace the path by /data
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: test-replacepath
  namespace: test
spec:
  replacePath:
    path: /data

3.创建IngressRoute:

apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: simpleingressroute
  namespace: test
spec:
  entryPoints:
    - web
  routes:
  - match: Host(`whoami.example.io`) && PathPrefix(`/notls`)
    middlewares:
    - name: test-replacepath   
      namespace: test 
    kind: Rule
    services:
    - name: whoami
      port: 80

在本地/etc/hosts增加

127.0.0.1 whoami.example.io

测试验证:

curl whoami.example.io:8000/notls?size=10
|ABCDEFGH|
0条评论
作者已关闭评论
王****倩
1文章数
0粉丝数
王****倩
1 文章 | 0 粉丝
王****倩
1文章数
0粉丝数
王****倩
1 文章 | 0 粉丝
原创

快速部署和使用Traefik

2025-06-06 08:26:19
1
0

1. 功能

开源的云原生应用代理,可以作为K8S Ingress Controller,通过Ingress配置去访问后端服务,如果需要全面的功能,需要使用Traefik自定义的CRD,通过IngressRoute来定义转发规则。

2. 部署

需要使用CRD IngressRoute的安装方式:

1.创建ServiceAccount

apiVersion: v1
 
kind: ServiceAccount
 
metadata:
 
  name: traefik-ingress-controller

2.创建CRD和RBAC

# Install Traefik Resource Definitions:

kubectl apply -f raw.githubusercontent.com/traefik/traefik/v3.1/docs/content/reference/dynamic-configuration/kubernetes-crd-definition-v1.yml
 
# Install RBAC for Traefik:
 
kubectl apply -f raw.githubusercontent.com/traefik/traefik/v3.1/docs/content/reference/dynamic-configuration/kubernetes-crd-rbac.yml

3.创建Traefik和对应的Service

kind: Deployment
apiVersion: apps/v1
metadata:
  namespace: default
  name: traefik
  labels:
    app: traefik
 
spec:
  replicas: 1
  selector:
    matchLabels:
      app: traefik
  template:
    metadata:
      labels:
        app: traefik
    spec:
      serviceAccountName: traefik-ingress-controller
      containers:
        - name: traefik
          image: traefik:v3.1
          args:
            - --entryPoints.web.Address=:8000
            - --entryPoints.websecure.Address=:4443
            - --providers.kubernetescrd
          ports:
            - name: web
              containerPort: 8000
            - name: websecure
              containerPort: 4443
apiVersion: v1
kind: Service
metadata:
  name: traefik-web-service
 
spec:
  type: LoadBalancer
  ports:
    - targetPort: web
      port: 8000
  selector:
    app: traefik
---
apiVersion: v1
kind: Service
metadata:
  name: traefik-secure-web-service
 
spec:
  type: LoadBalancer
  ports:
    - targetPort: websecure
      port: 4443
  selector:
    app: traefik

创建完成之后,Traefik就部署完成了。

3. 使用验证

1.创建后端的应用whoami和service:

kind: Deployment
apiVersion: apps/v1
metadata:
  name: whoami
  labels:
    app: whoami
 
spec:
  replicas: 1
  selector:
    matchLabels:
      app: whoami
  template:
    metadata:
      labels:
        app: whoami
    spec:
      containers:
        - name: whoami
          image: traefik/whoami
          command: ["/whoami"]
          args: ["--verbose"]
          ports:
            - name: web
              containerPort: 80
apiVersion: v1
kind: Service
metadata:
  name: whoami
  
spec:
  ports:
    - name: web
      port: 80
      targetPort: web
 
  selector:
    app: whoami

2.创建Middleware(这里的作用是进行路径rewrite,官方提供的还有其他的middleware可以实现不同的功能):

# Replace the path by /data
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: test-replacepath
  namespace: test
spec:
  replacePath:
    path: /data

3.创建IngressRoute:

apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: simpleingressroute
  namespace: test
spec:
  entryPoints:
    - web
  routes:
  - match: Host(`whoami.example.io`) && PathPrefix(`/notls`)
    middlewares:
    - name: test-replacepath   
      namespace: test 
    kind: Rule
    services:
    - name: whoami
      port: 80

在本地/etc/hosts增加

127.0.0.1 whoami.example.io

测试验证:

curl whoami.example.io:8000/notls?size=10
|ABCDEFGH|
文章来自个人专栏
文章 | 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0