Kubernetes环境Traefik部署与应用
更新记录
概述
本文用于整理基于环境的部署与应用,实现、七层/四层反向代理等功能。
组件版本
配置过程
安装Traefik
helm repo add traefik https://helm.traefik.io/traefik
helm repo update
安装Traefik
本次演练中将安装至命名空间,可根据需要替换。
# deployment.replicas=3 设置Traefik部署副本数
# pilot.dashboard=false 禁用Dashboard中Pilot链接
# ingressRoute.dashboard.enabled=false 禁用默认Dashboard入口规则(将在后续步骤中手动创建)
helm upgrade --install --namespace kube-system \
--set deployment.replicas=3 \
--set pilot.dashboard=false \
--set ingressRoute.dashboard.enabled=false \
traefik traefik/traefik
其他准备工作
获取服务的负载均衡器地址。执行该命令,记录返回的地址备用。本次演练环境中,已将和指向该地址。
kubectl get svc traefik -n kube-system
创建一个用于部署演练用对象的命名空间。本次演练中使用命名空间,可根据需要替换。
kubectl create namespace apps-choral
部署Dashboard
cat <
cat <
创建一个中间件,用于对请求启用认证。
cat <
更新的,启用中间件。
cat <
七层反向代理
HTTP应用示例
部署应用
创建,部署应用。
cat <
创建一个用于访问应用的服务。
cat <
创建一个,用于配置应用的入口规则。
cat <
启用TLS(HTTPS)
本次演练使用静态证书配置TLS,该证书被手动创建,应用于和域名。
更新Traefik运行参数
# ports.web.redirectTo=websecure 启用Web跳转至WebSecure
# additionalArguments[0]=--entrypoints.websecure.http.tls Ingress默认启用TLS
helm upgrade --install --namespace kube-system \
--set deployment.replicas=3 \
--set pilot.dashboard=false \
--set ingressRoute.dashboard.enabled=false \
--set ports.web.redirectTo=websecure \
--set additionalArguments[0]=--entrypoints.websecure.http.tls \
traefik traefik/traefik
kubectl create secret tls local-choral-io-tls -n kube-system --key=local.choral.io.key --cert=local.choral.io.crt
更新的
更新的,启用配置。
cat <
更新的
更新的,启用配置。
cat <
四层反向代理
TCP应用示例
更新Traefik运行参数
更新Traefik运行参数,创建新的。
# ports.whoamitcp.protocol=TCP 网络协议
# ports.whoamitcp.port=8081 监听端口
# ports.whoamitcp.exposedPort=8081 服务公开端口
# ports.whoamitcp.expose=true 是否暴露端口
helm upgrade --install --namespace kube-system \
--set deployment.replicas=3 \
--set pilot.dashboard=false \
--set ingressRoute.dashboard.enabled=false \
--set ports.web.redirectTo=websecure \
--set additionalArguments[0]=--entrypoints.websecure.http.tls \
--set ports.whoamitcp.protocol=TCP \
--set ports.whoamitcp.port=8081 \
--set ports.whoamitcp.exposedPort=8081 \
--set ports.whoamitcp.expose=true \
traefik traefik/traefik
部署应用
创建,部署应用。
cat <
创建一个用于访问应用的服务。
cat <
创建一个,用于配置应用的入口规则。
cat <
验证反向代理和服务运行状态。
# `10.0.0.201`是`traefik`服务的负载均衡器地址(kubectl get svc traefik -n kube-system)
echo "Hello" | socat - tcp4:10.0.0.201:8081
# 终端回显如下内容
Received: Hello
UDP应用示例
更新Traefik运行参数
更新Traefik运行参数,创建新的。
# ports.whoamiudp.protocol=UDP 网络协议
# ports.whoamiudp.port=8082 监听端口
# ports.whoamiudp.exposedPort=8082 服务公开端口
# ports.whoamiudp.expose=true 是否暴露端口
helm upgrade --install --namespace kube-system \
--set deployment.replicas=3 \
--set pilot.dashboard=false \
--set ingressRoute.dashboard.enabled=false \
--set ports.web.redirectTo=websecure \
--set additionalArguments[0]=--entrypoints.websecure.http.tls \
--set ports.whoamitcp.protocol=TCP \
--set ports.whoamitcp.port=8081 \
--set ports.whoamitcp.exposedPort=8081 \
--set ports.whoamitcp.expose=true \
--set ports.whoamiudp.protocol=UDP \
--set ports.whoamiudp.port=8082 \
--set ports.whoamiudp.exposedPort=8082 \
--set ports.whoamiudp.expose=true \
traefik traefik/traefik
部署应用
创建,部署应用。
cat <
创建一个用于访问应用的服务。
cat <
创建一个,用于配置应用的入口规则。
cat <
验证反向代理和服务运行状态。
# `10.0.0.202`是`traefik-udp`服务的负载均衡器地址(kubectl get svc traefik-udp -n kube-system)
echo "Hello" | socat - udp4:10.0.0.202:8082
# 终端回显如下内容
Received: Hello
参考资料
https://github.com/traefik/traefik-helm-chart
https://doc.traefik.io/traefik/providers/kubernetes-crd/
https://doc.traefik.io/traefik/providers/kubernetes-ingress/
https://doc.traefik.io/traefik/middlewares/http/basicauth/