zl程序教程

您现在的位置是:首页 >  其他

当前栏目

基于BasicAuth认证的Traefik2.0.5

2023-03-14 22:49:30 时间

记录一下在kubernetes1.16.3环境中使用Traefik2.0的过程,Traefik在2.0版本之后增加了tcp代理。同时在1.*版本的时候,使用Traefik感到很头疼的就是需要加上很多的注解annotations,这一点社区也感觉到很麻烦,因此在2.0版本之后是通过Ingressroute这种自定义资源来进行配置在Kubernetes中的资源访问权限。

不管是什么技术,只有真正的用起来你才能感受到它的变化和好处,所以要谈某一个技术好还是不好,首先你要先用起来,不然我再写的很详细也终究不会是你的.

安装教程网上很多,这里简单的记录一下,详细的资源清单文件可以再GITHUB上找到

https://github.com/linuxermaster/kubeapps/tree/master/Traefik2.0.5

首先配置traefik的ingressroute CRD资源

kubectl apply -f 01-traefik_crd.yaml

访问权限资源清单

kubectl apply -f 02-traefik_rabc.yaml

通过configmap挂载traefik的配置文件

kubectl apply -f 03-configmap.yaml

以deployment的方式部署traefik

kubectl apply -f 04-traefik_dp.yaml

此时可以查看你的traefik是否运行正常

给traefik添加rule规则以及Middleware在认证之后进行访问

  • 首先在同一个namespace下创建一个secret,存储的是由htpasswd创建的密码文件
  • 在访问的路由规则被匹配到之后就会将请求首先转发到Middleware进行验证身份,最后将请求打到对应的服务上
kubectl create secret generic basic-auth --from-file=./htpasswd --namespace=kube-system
kubectl apply -f 05-ingressroute.yaml

查看运行的状态

➜  Traefik2.0.5 git:(master) (☸ kubernetes-admin@kubernetes:default) k get all -n kube-system | grep -i traefik
pod/traefik-ingress-controller-6759db6c96-xxpnf   1/1     Running   0          6h21m
service/traefik          ClusterIP   10.108.234.104   <none>        80/TCP,443/TCP,8080/TCP,8082/TCP   6h21m
deployment.apps/traefik-ingress-controller   1/1     1            1           6h21m
replicaset.apps/traefik-ingress-controller-6759db6c96   1         1         1       6h21m

通过域名进行访问

这里的用户名和密码就是通过htpasswd加密的,可以创建多个用户