上云无忧 > 文档中心 > 腾讯云容器服务 TKE 标准集群 - Ingress 重定向
容器服务 TKE
腾讯云容器服务 TKE 标准集群 - Ingress 重定向

文档简介:
简介: 域名重定向,指当用户通过浏览器访问某个 URL 时,Web 服务器被设置自动跳转到另外一个 URL。 应用场景: 网站支持 HTTP 和 HTTPS,例如 http://tencent.com 和 https://tencent.com 需要访问到同一个 Web 服务。
*此产品及展示信息均由腾讯云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

简介

域名重定向,指当用户通过浏览器访问某个 URL 时,Web 服务器被设置自动跳转到另外一个 URL。

应用场景

网站支持 HTTP 和 HTTPS,例如 http://tencent.comhttps://tencent.com 需要访问到同一个 Web 服务。
网站更换过域名,例如 https://tengxun.com 更换为 https://tencent.com,两个域名访问到同一个 Web 服务。
网站部分内容做过调整,原始 URL 已经无法访问,可以重定向到一个新的提供服务的 URL。
注意
当用户使用重定向后,将会多出如下一条注解,该注解表明 Ingress 的转发规则由 TKE 管理,后期不能被删除和修改,否则将和 CLB 侧设置的重定向规则冲突。
			
ingress.cloud.tencent.com/rewrite-support: "true"
假设用字母表示域名地址,若 A 已经重定向至 B,则:
A 不能再重定向至 C(除非先删除旧的重定向关系,再建立新的重定向关系)。
B 不能重定向至任何其他地址。
A 不能重定向到 A。

重定向方式

重定向有如下两种方式:
自动重定向:用户需要先创建出一个 HTTPS:443 监听器,并在其下创建转发规则。通过调用本接口,系统会自动创建出一个 HTTP:80 监听器(如果之前不存在),并在其下创建转发规则,与 HTTPS:443 监听器下的域名等各种配置对应。
手动重定向:用户手动配置原访问地址和重定向地址,系统自动将原访问地址的请求重定向至对应路径的目的地址。同一域名下可以配置多条路径作为重定向策略,实现 HTTP 和 HTTPS 之间请求的自动跳转。

注意事项

若您没有 TKE Ingress 重定向注解声明,会兼容原有不管理重定向规则的逻辑,即:您可以在负载均衡 CLB 的控制台里面配置重定向规则,TKE Ingress不处理用户在 CLB 控制台配置的这些重定向规则。
若您没有 TKE Ingress 重定向注解声明,因为 CLB 的重定向保护限制,如果转发配置 A 重定向到转发配置 B,此时无法直接删除转发配置 B,必须先删掉该重定向规则,才能删除转发配置 B。
若您使用 TKE Ingress 重定向注解声明,CLB 下所有重定向规则都是由 TKE Ingress 管理,所有重定向规则仅在 TKE Ingress 里面的相关 Annotation 里面生效,此时用户在 CLB 控制台如果修改重定向配置,最终会被 TKE Ingress 里配置的重定向规则覆盖。
当前基于 CLB 的 TKE ingress 暂不支持 nginx-ingress 的 rewrite-target功能,无法重写路径。

操作步骤

Ingress 支持通过控制台和 YAML 两种方式进行重定向,具体步骤如下:
通过控制台
通过 YAML
1. 登录容器服务控制台,选择左侧导航栏中的 集群
2. 集群管理页面,选择集群 ID,进入集群的基本信息页面。
3. 服务与路由 > Ingress页面,单击新建。如下图所示:

4. 新建 Ingress 页面中配置相关重定向规则。配置规则说明如下:
:不使用重定向规则。
手动:会在转发配置下方出现一栏重定向转发配置
转发配置里面填写的方式和普通 Ingress 的转发配置一样,后端是某个服务。
重定向转发配置里面填写的方式和普通 Ingress 的转发配置一样,但后端是某个“转发配置”里的某条路径。

自动:仅对转发配置里的协议为 “HTTPS” 的路径生效,都将自动生成一个 “HTTP” 的路径,路径完全一样,只有协议不一样。“HTTP” 的路径的转发规则自动重定向到 “HTTPS” 的路径。

自动重定向:HTTP 重定向到 HTTPS

注意
仅对 HTTPS 协议的转发规则生效。
在 Ingress YAML 中配置如下注解:
				
ingress.cloud.tencent.com/rewrite-support: "true" # 表示允许重定向
ingress.cloud.tencent.com/auto-rewrite: "true" # 表示自动重定向
配置该注解之后,转发路径中的所有 HTTPS 监听器中存在的七层转发规则都将被对应到 HTTP 监听器中作为重定向规则。域名与路径都保持一致。

手动重定向

手动重定向需要增加一个 annotation ,修改一个 annotation:
增加的 annotation:
				
ingress.cloud.tencent.com/rewrite-support: "true" # 表示允许重定向
修改的 annotation:
				
# 原注解 格式:
{
"host": "<domain>",
"path": "<path>",
"backend": {
"serviceName": "<service name>",
"servicePort": "<service port>"
}
}
# 新注解格式:
{
"host": "<domain>",
"path": "<path>",
"backend": {
"serviceName": "<service name>",
"servicePort": "<service port>"
},
"rewrite": {
"port": "<rewrite-port>",
"host": "<rewrite-domain>",
"path": "<rewrite-path>"
}
}

示例

某服务之前通过 121.4.25.44/path2 进行访问,在发布新版本之后,期望通过 121.4.25.44/v2/path2 进行访问。可以进行如下修改:
1. 增加一条 annotation:
				
ingress.cloud.tencent.com/rewrite-support: "true" # 允许重定向
2. 修改原 annotation:
				
# 将 /v1/path1 替换为 /path1 80端口;把 /v2/path2 替换为 /path2 80端口。注意:host 可以省略
kubernetes.io/ingress.http-rules: '
[{
"path": "/path1",
"backend": {
"serviceName": "path1",
"servicePort": "80"
}
},
{
"path": "/path2",
"backend": {
"serviceName": "path2",
"servicePort": "80"
}
},
{
"path": "/v1/path1",
"rewrite": {
"port": 80,
"path": "/path1"
}
},
{
"path": "/v2/path2",
"rewrite": {
"port": 80,
"path": "/path2"
}
}
]'
修改后的 YAML:

				
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
description: test
ingress.cloud.tencent.com/rewrite-support: "true"
kubernetes.io/ingress.class: qcloud

kubernetes.io/ingress.http-rules: '[{"path":"/path1","backend":{"serviceName":"path1","servicePort"

:"80"}},{"path":"/path2","backend":{"serviceName":"path2","servicePort":"80"}},{"path":"/v1/path1",

"rewrite":{"port":80,"path":"/path1"}},{"path":"/v2/path2","rewrite":{"port":80,"path":"/path2"}}]'

kubernetes.io/ingress.https-rules: "null"
kubernetes.io/ingress.rule-mix: "true"
name: test
namespace: default
spec:
rules:
- http:
paths:
- backend:
serviceName: path1
servicePort: 80
path: /path1
pathType: ImplementationSpecific
- http:
paths:
- backend:
serviceName: path2
servicePort: 80
path: /path2
pathType: ImplementationSpecific
status:
loadBalancer:
ingress:
- ip: 121.4.25.44

完整 Ingress Annotation 说明请参见 Ingress Annotation 说明 文档。
相似文档
  • 混合规则: 默认场景下,当 Ingress 中不配置 TLS 时,服务将以 HTTP 协议的方式对外暴露。当 Ingress 配置 TLS 时,服务将以 HTTPS 协议的方式对外暴露。Ingress 描述的服务只能以其中一种协议暴露服务,基于此规则的局限性,腾讯云容器服务 TKE 提供了混合协议的支持。
  • 简介: 基于接入层直连 Pod 的场景,当后端进行滚动更新或后端 Pod 被删除时,如果直接将 Pod 从 LB 的后端摘除,则无法处理 Pod 已接收但还未处理的请求。 特别是长链接的场景,例如会议业务,如果直接更新或删除工作负载的 Pod,此时会议会直接中断。
  • 操作场景: 本文档介绍 Ingress 证书使用相关的内容,您可在以下场景中进行 Ingress 证书配置: 创建 Ingress 选用 HTTPS 监听协议时,选用合适的服务器证书能够确保访问安全。 为所有的 HTTPS 域名绑定同一个证书,简化配置 Ingress 下所有 HTTPS 规则的证书,使更新操作更加便捷。 为不同的域名绑定不同的证书,改善服务器与客户端 SSL/TLS。
  • 您可以通过以下 Annotation 注解配置 Ingress,以实现更丰富的负载均衡的能力。 注解使用方式: apiVersion: kind: Ingress metadata: annotations: kubernetes.io/ingress.class: "qcloud" name: test ........
  • Nginx-ingress 介绍: Nginx 可以用作反向代理、负载平衡器和 HTTP 缓存。 Nginx-ingress 是使用 Nginx 作为反向代理和负载平衡器的 Kubernetes 的 Ingress 控制器。您可以部署 Nginx-ingress 组件,在集群中使用 Nginx-ingress。容器服务 TKE 提供了产品化的能力,帮助您在集群内安装和使用 Nginx-ingress。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部