Ingress Traefik 部署及使用

Kubernetes / 2022-12-20

使用helm安装traefik

Traefik简介
  Traefik是一个开源的kuberetes ingrsss,它可以让你的服务发布成为一种有趣而轻松的体验。它代表您的系统接收请求,并找出哪些组件负责处理它们。
  Traefik的与众不同之处在于,除了它的众多功能之外,它还可以自动为您的服务发现正确的配置。当 Traefik 检查您的基础设施时,奇迹就会发生,它会在其中找到相关信息并发现哪个服务服务于哪个请求。
  Traefik 原生兼容所有主要的集群技术,例如 Kubernetes、Docker、Docker Swarm、AWS、Mesos、Marathon,不胜枚举;并且可以同时处理多个。(它甚至适用于在裸机上运行的遗留软件。)
  使用 Traefik,无需维护和同步单独的配置文件:一切都自动实时发生(无需重启,无需连接中断)。使用 Traefik,您可以花时间为系统开发和部署新功能,而不是配置和维护其工作状态。

安装helm

wget https://get.helm.sh/helm-v3.9.0-linux-amd64.tar.gz
tar vzxf helm-v3.9.0-linux-amd64.tar.gz 
mv linux-amd64/helm /usr/local/bin/helm

helm安装

helm repo add traefik https://helm.traefik.io/traefik
helm repo update

# 创建traefik-v2名称空间
kubectl create ns traefik

# 安装traefik
helm install --namespace=traefik traefik traefik/traefik

# 查看helm列表
helm list -n traefik
NAME   	NAMESPACE	REVISION	UPDATED                                	STATUS  	CHART         	APP VERSION
traefik	traefik  	1       	2022-12-20 11:16:01.025060111 +0800 CST	deployed	traefik-20.8.0	v2.9.6   

部署测试应用

cat <<EOF | kubectl apply -f -
apiVersion: apps/v1
kind: Deployment
metadata:
  name: whoami
  namespace: traefik
spec:
  replicas: 3
  selector:
    matchLabels:
      app: whoami
  template:
    metadata:
      labels:
        app: whoami
    spec:
      containers:
        - name: whoami
          image: traefik/whoami:latest
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 80

---

apiVersion: v1
kind: Service
metadata:
  name: whoami
  namespace: traefik
spec:
  type: ClusterIP
  ports:
    - protocol: TCP
      port: 80
  selector:
    app: whoami

---

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: whoami
  namespace: traefik
  annotations:
    traefik.ingress.kubernetes.io/router.entrypoints: web
spec:
  rules:
    - host: treafik.demo
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: whoami
                port:
                  number: 80

EOF

curl -H “Host: treafik.demo” http://: