$ helm repo add traefik https://helm.traefik.io/traefik $ helm repo update2、下载到本地
$ helm search repo traefik NAME CHART VERSION APP VERSION DESCRIPTION traefik/traefik 10.20.1 2.7.0 A Traefik based Kubernetes ingress controller $ helm pull traefik/traefik3、部署Traefik
3.1 修改values
#type: LoadBalancer
type: ClusterIP
ports:
traefik:
port: 8080
hostPort: 8080
exposedPort: 8080
expose: true
protocol: TCP
添加
additionalArguments:
- "--serversTransport.insecureSkipVerify=true"
- "--api.insecure=true"
- "--api.dashboard=true"
或者简单点
完整配置如下
==================================
service:
type: ClusterIP
ingressRoute:
dashboard:
enabled: false
nodeSelector:
kubernetes.io/hostname: k8snode1
ports:
web:
hostPort: 80
websecure:
hostPort: 443
traefik:
port: 8080
hostPort: 8080
exposedPort: 8080
expose: true
additionalArguments:
- "--serversTransport.insecureSkipVerify=true"
- "--api.insecure=true"
- "--api.dashboard=true"
3.2 部署
$ helm install traefik traefik/traefik -f values.yaml -n kube-system #部署 其他命令 $ helm upgrade traefik traefik/traefik -n kube-system #更新 $ helm uninstall traefik -n kube-system # 卸载 traefik #查看状态 $ helm list -n kube-system NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION traefik kube-system 1 2022-06-07 15:05:58.300911179 +0800 CST deployed traefik-10.20.1 2.7.0 $ helm status traefik -n kube-system NAME: traefik LAST DEPLOYED: Tue Jun 7 15:05:58 2022 NAMESPACE: kube-system STATUS: deployed REVISION: 1 TEST SUITE: None4 创建路由规则
4.1原生Ingress路由规则
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: traefik-dashboard-ingress
namespace: kube-system
annotations:
kubernetes.io/ingress.class: traefik
traefik.ingress.kubernetes.io/router.entrypoints: web
spec:
rules:
- host: traefik.ingress.cn
http:
paths:
- pathType: Prefix
path: /
backend:
service:
name: traefik
port:
number: 8080
4.2 使用CRD方式配置路由规则
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: traefik-dashboard-route
namespace: kube-system
spec:
entryPoints:
- web
routes:
- match: Host(`traefikroute.ingress.cn`)
kind: Rule
services:
- name: traefik
port: 8080
namespace: kube-system #要和traefik ingress所在的命名空间一致,就可以正常访问,
如:http://traefikroute.ingress.cn/dashboard/#/
否则访问需要添加expose里设置的端口;如http://traefikroute.ingress.cn:8080/
5 访问http://traefik.ingress.com http://traefik.ingress.com/dashboard6 验证 暴露HTTP服务
#创建pod和svc
cat > whoami.yaml << EOF
---
apiVersion: v1
kind: Pod
metadata:
name: whoami
labels:
app: whoami
spec:
containers:
- name: whoami
image: traefik/whoami:latest
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: whoami
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: whoami
type: ClusterIP
EOF
==========================
创建一个路由规则,使外部可以访问
cat > whoami-ingressroute.yaml << EOF
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: whoami-route
spec:
entryPoints:
- web
routes:
- match: Host(`whoami.ingress.cn`)
kind: Rule
services:
- name: whoami
port: 80
EOF
浏览器访问 whoami.ingress.cn
个人总结:
1、其他通过traefik代理的资源应用pod,service并不需要与traefik在同一个命名空间,也就是命名空间对traefik代理来说并没有限制
以上两个实例都不在traefik ingress的命名空间里
2、但是部署实例的pod service 路由规则 都需要在同一个命名空间里



