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