目录[-]
- . 一、Ingress 介绍
- . 二、Traefik 介绍
- . 三、部署 Ingress 控制器 Traefik
- . 1、Traefik 两种部署方式介绍
- . 2、创建 Traefik 配置文件
- . 3、将 Traefik 配置文件挂载到 ConfigMap
- . 4、设置 CA 证书
- . 5、给节点设置 Label
- . 6、创建 Traefik 服务账户与角色权限
- . 7、创建 Traefik Ingress Controller
- . 四、配置 Ingress 访问策略
- . 1、Ingress 规则配置简介
- . 2、创建 Traefik Dashboard Ingress
前言:
Ingress 可以为 Kubernetes 集群外部访问集群内部 Service 提供配置,Ingress Controller 控制器可以充当网关,提供路由策略、负载均衡流量、SSL,并提供基于名称的虚拟主机,提供统一的入口供流量涌入,是一个边缘路由器或额外的前端。这里使用 Traefik 来充当 Ingress Controller 控制器,下面将介绍如何在 Kubernetes 中部署 Traefik 这个过程。
Ingress 不会暴露任意端口或协议。将除 HTTP 和 HTTPS 之外的服务暴露给互联网通常使用 Service.Type = NodePort 或 Service.Type = LoadBalancer 类型的服务。
系统环境:
- kubernetes 版本:1.14.0
- traefik 版本:1.7.12
Github 示例部署文件
一、Ingress 介绍
对于基于 HTTP 的服务,不同的 URL 对应不同的后端服务或者虚拟服务器(Virtual Host),这些应用层的转发无法通过 Kubernetes Service 机制实现,所以从 Kubernetes 1.1 版本开始新增 Ingress 资源。Ingress 是一种将不同的URL的访问请求转发到不同的 Service 实现Http层业务路由机制。
Kubernetes Ingress 包含 Ingress 策略和 Ingress 控制器两部分组成,Ingress 策略是配置路由规则,而 Ingress 控制器则是将服务进行转发。Ingress Controller 基于 Ingress 规则将客户端请求转发到 Service 对应的后端 Endpoints(Pod) 上,这样会跳过 Kube-proxy 转发功能避免增加开销。
例如下图,展示了集群外部客户端通过 Ingress 地址访问集群,根据配置的 Ingress 规则,将所有访问 host 为 www.mydlq.club ,且 path 为 “/test” 或者 “/dev” 的外部流量转发到对应的 Pod 上。
二、Traefik 介绍
Traefik 是一个轻松与微服务配合且流行的 HTTP 反向代理和负载均衡器。Traefik 与现有的基础架构组件(如 Docker、Swarm、Kubernetes、Marathon、Consul、Etcd、Rancher、Amazon ECS ……)集成,并自动动态配置。在你的控制器上指向 Traefik 应该是你唯一需要配置的步骤。
三、部署 Ingress 控制器 Traefik
在定义 Ingress 之前我先首先拥有 Ingresss 控制器,以实现为后端所有服务统一入口。Ingresss 控制器也是以 Pod 形式运行在 Kubernetes 集群中,监控 API Server 的 /ingress 接口后端的backend services,如果 Service 发送变化,则 Ingress 控制器将自动更新其转发规则,下面我们开始部署 Traefik 到 Kubernetes 集群。
步骤简介:
- (1)、创建 Traefik 配置文件,并将其以 ConfigMap 方式挂载到 Kubernetes 集群中。
- (2)、生成 CA 证书,并将其以 Secret 方式挂载到 Kubernetes