关于ingress使用traefik作为控制器

traefik官网推荐使用ingressroute 是有traefik开发的组件,但是traefik也是支持ingress的。

我查了好多资料,发现要使用ingress必须要设置好两个东西

1、ingressclass

这个组件若使用helm按照traefik,安装时系统就给创建好了。

kubectl get ingressclass
NAME      CONTROLLER                      PARAMETERS   AGE
traefik   traefik.io/ingress-controller   <none>       7h13m

如果上述命令没有查到结果,可以自行创建

//kubectl apply -f ingressclass.yaml

# ingressclass.yaml

apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
  name: traefik
spec:
  controller: traefik.io/ingress-controller

 2、ingress

ingress和ingressroute一样需要和要代理的service在同一个namespace下

另外还需要设置

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-nginx
  namespace: default
  #  annotations:
  #  kubernetes.io/ingress.class: "traefik"
spec:
  ingressClassName: traefik
  rules:
  - host: nginx-test.shell.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: nginx
            port:
              name: http

ingressClassName 这里的值为ingressclass的名,或者添加

annotations:
    kubernetes.io/ingress.class: "traefik"

但两个不能同时设置。

设置成功可以看到如下

kubectl describe ing ingress-nginx
Name:             ingress-nginx
Namespace:        default
Address:          
Default backend:  default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
Rules:
  Host                  Path  Backends
  ----                  ----  --------
  nginx-test.shell.com  
                        /   nginx:http (22.244.181.129:80,22.244.231.46:80)
Annotations:            <none>
Events:                 <none>

或者在dashboard中看到

 也说明成功了。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐