ingress-NGINX和traefik二选一 
 
参考文档 官方文档: https://doc.traefik.io/traefik/getting-started/install-traefik/ 
gtihub地址: https://github.com/traefik/traefik-helm-chart 
必要条件 Kubernetes版本1.14+ 
Helm版本3+ 
安装traefik 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 # 添加repo [root@k8s-master ~]# helm repo add traefik https://helm.traefik.io/traefik # 更新repo仓库资源 [root@k8s-master ~]# helm repo update # 查看repo仓库traefik [root@k8s-master ~]# helm search repo traefik                                     NAME                    CHART VERSION   APP VERSION     DESCRIPTION                                        traefik/traefik         29.0.1          v3.0.4          A Traefik based Kubernetes ingress controller      traefik/traefik-hub     4.2.0           v2.11.0         Traefik Hub Ingress Controller                     traefik/traefik-mesh    4.1.1           v1.4.8          Traefik Mesh - Simpler Service Mesh                traefik/traefikee       4.0.1           v2.11.3         Traefik Enterprise is a unified cloud-native ne... traefik/maesh           2.1.2           v1.3.2          Maesh - Simpler Service Mesh[root@k8s-master ~]# kubectl create ns traefik # 拉取helm包 [root@k8s-master ~]# helm pull traefik/traefik --untar # 修改配置 [root@k8s-master ~]# cd traefik/ [root@k8s-master traefik]# vim values.yaml  deployment:   replicas: 1 # master节点数 ingressRoute:   dashboard:     enabled: false  # 禁用helm中渲染的dashboard,traefik默认使用LoadBalancer暴露服务配置较为麻烦 # Configure ports ports:   traefik:     port: 9000     hostPort: 9000 # 使用 hostport 模式   web:     port: 8000     hostPort: 80  # 使用 hostport 模式   websecure:     port: 8443     hostPort: 443  # 使用 hostport 模式 # Options for the main traefik service, where the entrypoints traffic comes # from. service:  # 使用 hostport 模式就不需要Service了   enabled: false # Logs # https://docs.traefik.io/observability/logs/ logs:   general:     level: DEBUG      tolerations:   # kubeadm 安装的集群默认情况下master是有污点,需要容忍这个污点才可以部署 - key: "node-role.kubernetes.io/master"   operator: "Equal"   effect: "NoSchedule" nodeSelector:   # 固定到master1节点(该节点才可以访问外网)   kubernetes.io/hostname: "k8s-master" metrics:   service:     enabled: true # 开启metrics指标暴露 logs:   access:     enabled: true # 启用access访问日志记录   fields:     headers:       defaultmode: keep # 保留请求头信息 # 安装 [root@k8s-master traefik]# helm install traefik -n traefik . -f values.yaml NAME: traefik LAST DEPLOYED: Mon Aug 14 13:11:04 2023 NAMESPACE: traefik STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: Traefik Proxy v2.10.4 has been deployed successfully on traefik namespace ! # 查看helm列表 [root@k8s-master traefik]# helm list -n traefik NAME    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART           APP VERSION traefik traefik         1               2023-08-14 13:11:04.879891529 +0800 CST deployed        traefik-24.0.0  v2.10.4     # 查看pod资源信息 [root@k8s-master traefik]# kubectl get pod -n traefik NAME                       READY   STATUS    RESTARTS   AGE traefik-5bfc574f88-vz4zr   1/1     Running   0          65s 
域名访问dashboard服务 添加dashboard的IngressRoute资源: <font style="background-color:rgba(255, 255, 255, 0);">kubectl apply -f dashboard.yaml</font>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 apiVersion: traefik.containo.us/v1alpha1 kind: IngressRoute metadata:   name: dashboard   namespace: traefik spec:   entryPoints:     - web   routes:     - match: Host(`traefik.local.com`)       kind: Rule       services:         - name: api@internal           kind: TraefikService 
如果是traefik3以上版本,ingress资源如下 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 apiVersion: traefik.io/v1alpha1 kind: IngressRoute metadata:   name: dashboard   namespace: traefik spec:   entryPoints:     - web   routes:     - match: Host(`traefik.local.com`)       kind: Rule       services:         - name: api@internal           kind: TraefikService 
接下来使用集群外部机器访问,添加hosts解析 
1 192.168.10.100 traefik.local.com