Traefik1.7.17的部署使用

本篇文章介绍了在k8s上treafik1.7的搭建和使用。

因为我这里是作为kubernetes服务的暴露,因此你得有一个kubernetes集群

集群准备好了,需要下面的配置文件

部署rbac文件

rbac文件让ingress获取对应命名空间的权限

[root@master traefik]# cat ingress-rbac.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: ingress
  namespace: kube-system
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: ingress
subjects:
  - kind: ServiceAccount
    name: ingress
    namespace: kube-system
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: rbac.authorization.k8s.io

部署traefik应用

这里部署应用中包含了https服务,因此需要在对应的节点上生成证书进行认证

首先openssl命令生成 CA 证书

现在我们有了证书,我们可以使用 kubectl 创建一个 secret 对象来存储上面的证书

现在我们来配置 Traefik,让其支持 https,新建traefik.toml文件

然后通过cm挂载进pod里面,让pod能够访问该配置文件

最后部署我们的对应的traefik应用

部署traefik的service

给trarfik部署一个路由

ingress 中 path 的用法

部署nginx测试服务测试ingress 中 path 的用法

设置不同的同一个路由不同的路由访问对应的nginx服务

部署结果

upload-image

基于traefik的Basic auth认证

首先采用htpasswd创建文件

基于上面的htpasswd创建secret(注意命名空间)

treafik引用对应的secret进行认证(注意如下)

  • Secret文件必须与Ingress规则在同一命名空间。

  • 目前只支持basic authentication。

  • Realm不可配置,默认使用traefik。

  • Secret必须只包含一个文件。

引用secret的yaml配置

解析域名到k8s集群中

一般暴露服务到外部都是提供域名访问,我们这边的集群节点通过lb来负载均衡,将域名解析到对应的lb上,后端监听的服务为treafik的80端口即可,这样treafik可以使用你所绑定解析的域名

最后更新于

这有帮助吗?