Kubernetes(k8s)helm 部署 Traefik

Traefik 介绍

  • Traefik是一个为了让部署微服务更加便捷而诞生的现代HTTP反向代理、负载均衡工具。
  • Traefik是一个用Golang开发的轻量级的Http反向代理和负载均衡器,虽然相比于Nginx,它是后起之秀,但是它天然拥抱kubernetes,直接与集群k8s的Api Server通信,反应非常迅速,同时还提供了友好的控制面板和监控界面,不仅可以方便地查看Traefik根据Ingress生成的路由配置信息,还可以查看统计的一些性能指标数据,如:总响应时间、平均响应时间、不同的响应码返回的总次数等。
  • 不仅如此,Traefik还支持丰富的annotations配置,可配置众多出色的特性,例如:自动熔断、负载均衡策略、黑名单、白名单。所以Traefik对于微服务来说简直就是一神器。

一、集群信息

  • 方法因人而异,但大同小异,以下是我的部署方法。

1.1、 主机信息

主机名 ip地址 描述 核心 内存
node-01 192.168.8.131 master 节点 2核 8G
node-02 192.168.8.132 node 节点 2核 8G
node-03 192.168.8.133 node 节点 2核 8G

1.2、版本说明

服务 版本
helm 3.1.1
traefik 1.87.2
Kubernetes 1.17.3

二、部署 Traefik

2.1、为 Traefik 添加 basic-auth 认证

  • 这里开启仪表盘安全,通过用户和密码登录
  • 需要使用 htpasswd 创建用户和密码
# Centos 系统安装
yum -y  install httpd
# Ubuntu 系统安装
apt-get install apache2-utils

# 创建用户与密码,根据提示操作
htpasswd -c auth aka
# 查看用户与密码
root@k8s-master-01:~$ cat auth
aka:$apr1$ELatyOqQ$ZyMa63E0gmjoFuQOHN/4e.

2.2、使用 helm 安装 Traefik

  • 项目地址:https://hub.helm.sh/charts/stable/traefik
  • 修改 quay.io 镜像源到七牛云否则拉镜像太慢
  • 如果在根目录运行,直接一个 . 就行了
  • 运行在 kube-system 工作空间
  • dashboard.enabled=true 开启 traefik 仪表盘
  • dashboard.domain=traefik.akiraka.net 设置需要访问的域名
  • serviceType=NodePort 默认 NodePort 模式
  • rbac.enabled=true 开启 rbac
  • dashboard.auth.basic 设置仪表盘密码
#   部署 Traefik 将创建好的 basic-auth 认证填入进去
helm install traefik --namespace kube-system \
  --set serviceType=NodePort --set rbac.enabled=true --set replicas=3 \
  --set service.nodePorts.http=30719 --set service.nodePorts.https=30720 \
  --set dashboard.enabled=true,dashboard.domain=traefik.akiraka.net \
  --set dashboard.auth.basic.aka='$apr1$ELatyOhQ$ZlMa63E0gmjoFuQOHN/4e.' \
  stable/traefik --version 1.87.2

2.3、查看 Traefik pod

[root@Node-01 ~]# kubectl get pod -n kube-system | grep traefik
traefik-7679b9d997-w6fsg          1/1     Running   0          6m40s

2.4、查看 Traefik pvc

  • 80 随机端口为:30072
  • 443 随机端口为:30855
[root@Node-01 ~]# kubectl get svc,pod -n kube-system
NAME                        TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                      AGE
service/kube-dns            ClusterIP   10.1.0.10      <none>        53/UDP,53/TCP,9153/TCP       2d15h
service/traefik             NodePort    10.1.220.104   <none>        443:30855/TCP,80:30072/TCP   2s
service/traefik-dashboard   ClusterIP   10.1.124.67    <none>        80/TCP                       2s

三、访问测试

3.1、 创建 Deployment Service Ingress

  • 编写 tomcat-ingress.yaml 配置文件
  • 域名:tomcat.akiraka.net
cat > tomcat-ingress.yaml <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-tomcat
spec:
  replicas: 1
  selector:
    matchLabels:
      app: web-tomcat
  template:
    metadata:
      labels:
        app: web-tomcat
    spec:
      containers:
      - image: tomcat:8.0.24
        name: tomcat
        ports:
        - containerPort: 8080
          protocol: TCP
---
kind: Service
apiVersion: v1
metadata:
  name: tomcat-service
spec:
  ports:
    - port: 8080
      targetPort: 8080
  selector:
    app: web-tomcat
  type: NodePort
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: tomcat-ingress
spec:
  rules:
    - host: tomcat.akiraka.net
      http:
        paths:
        - path: /
          backend:
            serviceName: tomcat-service
            servicePort: 8080
EOF

#   应用
kubectl apply -f tomcat-ingress.yaml

3.2、访问 tomcat

  • 域名我设置的是:tomcat.akiraka.net 随机端口是 30072
  • 方式地址:tomcat.akiraka.net:30072
  • 记得修改自己电脑 host 文件,不然域名是访问不了的

av8itS.png

四、访问 Traefik 仪表盘

  • 设置电脑 host 文件
  • 访问 traefik 80 或 者443 随机端口都可以
  • 访问域名:traefik.akiraka.net
  • 可以看到已经有2个域名
  • 使用自己创建的 basic-auth 认证登录仪表盘

ajZUQU.png

版权声明:
作者:Akiraka
链接:https://www.akiraka.net/kubernetes/785.html
来源:Akiraka
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
海报
Kubernetes(k8s)helm 部署 Traefik
Traefik 介绍 Traefik是一个为了让部署微服务更加便捷而诞生的现代HTTP反向代理、负载均衡工具。 Traefik是一个用Golang开发的轻量级的Http反向代理和负载均……
<<上一篇
下一篇>>