以下是一个将 HTTPS 请求转换为 HTTP 请求的 Kubernetes 部署文件示例:
apiVersion: v1
kind: Service
metadata:
name: backend-service
spec:
selector:
app: backend-app
ports:
- protocol: TCP
port: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: backend-deployment
spec:
replicas: 2
selector:
matchLabels:
app: backend-app
template:
metadata:
labels:
app: backend-app
spec:
containers:
- name: backend-container
image: your-backend-image:v1.0.0
---
apiVersion: v1
kind: Service
metadata:
name: traefik-service-https-to-http-router-middleware # 建议设置有意义的名称以便于管理和维护。
spec:
type: ExternalName # 将该服务暴露给 Traefik,使得它可以访问该服务。
externalName: traefik-ingress-controller # 这里填写您在集群中创建的 Traefik Ingress 控制器服务名称。
ports:
- protocol: TCP
port : 9000 # 这里根据实际情况调整端口号。Traefik 默认使用该端口与后端交流。
---
apiVersion : traefik.containo.us/v1alpha1
kind : Middleware
metadata :
name : https-to-http
namespace : default
labels :
k8s-app : traefik-ingress-controller
spec :
redirectScheme :
scheme : http
---
apiVersion : traefik.containo.us/v1alpha1
kind : Middleware
metadata :
name : http-to-https
namespace : default
labels :
k8s-app : traefik-ingress-controller
spec :
redirectScheme :
scheme : https
---
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: my-ingressroute
annotations:
kubernetes.io/ingress.class: traefik # 这里填写您在集群中创建的 Traefik Ingress 控制器的名称。
spec:
entryPoints:
- websecure
routes:
- match: Host(`example.com`) && PathPrefix(`/`)
kind: Rule
services:
- name: backend-service
port: 80
middlewares:
- name: https-to-http
---
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRouteTCP
metadata:
name: my-tcp-ingressroute
annotations:
kubernetes.io/ingress.class: traefik # 这里填写您在集群中创建的 Traefik Ingress 控制器的名称。
spec:
entryPoints:
- tcp-https # 这里根据实际情况调整入口点名称。
routes:
- match: HostSNI(`*.example.com`)
kind: Rule
services:
- name: backend-service
port : 80 # 后端服务暴露的端口号,这里是 HTTP 端口。
middlewares:
- name : https-to-http
注意事项:
- 在示例文件中使用了 Kubernetes 的 Service 和 Deployment 资源类型来部署后端服务。
- 在
traefik-service-https-to-http-router-middleware
中,我们将 Traefik Ingress 控制器暴露给了 Kubernetes 集群。这个服务名称需要您根据实际情况调整。 - 如果需要支持 TCP 流量转发,请创建一个名为
tcp-https
的入口点,并在 TCP 类型的 IngressRoute 中使用它来匹配主机名。