traefik-gatway

axing
2025-12-05 / 0 评论 / 3 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2025年12月05日,已超过4天没有更新,若内容或图片失效,请留言反馈。

测试yaml

root@k8s-01:~# cat traefik-gateway-nginx.yaml 
---
apiVersion: gateway.networking.k8s.io/v1
kind: GatewayClass
metadata:
  name: traefik
spec:
  controllerName: traefik.io/gateway-controller
---
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: traefik-gw
  namespace: default
spec:
  gatewayClassName: traefik
  listeners:
    - name: http
      protocol: HTTP
      port: 8000        # ? 这里从 80 改成 8000,匹配 Traefik 的 entryPoints.web
      allowedRoutes:
        namespaces:
          from: Same
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:latest
          ports:
            - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: nginx
  namespace: default
spec:
  selector:
    app: nginx
  ports:
    - port: 80
      targetPort: 80
---
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: nginx
  namespace: default
spec:
  parentRefs:
    - name: traefik-gw
      namespace: default
      sectionName: http      # ? 明确绑定到上面 listener 名称 http(可选,但更清晰)
  hostnames:
    - "nginx.example.com"
  rules:
    - matches:
        - path:
            type: PathPrefix
            value: /
      backendRefs:
        - name: nginx
          port: 80

traefik 启用 Gateway API Provider

root@k8s-01:/woke/traefik# ls
Changelog.md  Chart.yaml  crds  EXAMPLES.md  Guidelines.md  LICENSE  README.md  templates  traefik-values.yaml  VALUES.md  values.schema.json  values.yaml
root@k8s-01:/woke/traefik# cat traefik-values.yaml 
# 1. Dashboard / API 配置
api:
  dashboard: true

# ⚠️ 这里是顶层的 ingressRoute,不在 api 下面
ingressRoute:
  dashboard:
    enabled: false
    # 关键:改成 web,让它走 80 端口(NodePort 30080)
    entryPoints:
      - web
    matchRule: PathPrefix(`/dashboard`) || PathPrefix(`/api`)
    annotations: {}
    labels: {}
    middlewares: []
    tls: {}

# 2. 入口点配置(保持你原来的)
ports:
  traefik:
    port: 8080
    expose:
      default: false
    exposedPort: 8080
    protocol: TCP

  web:
    port: 8000
    expose:
      default: true
    exposedPort: 80
    protocol: TCP
    nodePort: 30080

  websecure:
    port: 8443
    hostPort:
    containerPort:
    expose:
      default: true
    exposedPort: 443
    protocol: TCP
    nodePort: 30443

# 3. Service 配置:NodePort
service:
  enabled: true
  type: NodePort
  single: true
  spec:
    externalTrafficPolicy: Cluster
  annotations: {}
  labels: {}

# 4. RBAC
rbac:
  enabled: true

# 5. metrics(你这里开 prometheus 也没问题)
metrics:
  prometheus:
    enabled: true
logs:
  general:
    level: INFO
  access:
    enabled: true
    format: common
# 6. 启用 Gateway API Provider
providers:
  kubernetesGateway:
    enabled: true
0

评论 (0)

取消