SAE的网关路由对应于Kubernetes的Ingress资源类型。本文介绍如何使用saectl工具管理网关路由,并提供相关的K8s YAML配置文件示例。
前提条件
已安装saectl工具,并配置AccessKey ID、AccessKey Secret、应用部署地域,详见安装与配置saectl工具。
管理网关路由
saectl工具支持创建、查看、更新、删除网关路由。
创建网关路由
编写配置文件
ingress.yaml。配置文件的示例如下,各配置项的详细信息请参考K8s YAML配置项说明。apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: sae.aliyun.com/description: test-ingress # 路由规则别名 sae.aliyun.com/idle-timeout: "15" # 连接空闲超时时间,单位为秒 sae.aliyun.com/loadbalancer-cert-ids: 15408xxx-cn-shenzhen # 证书配置, 请求转发协议为HTTPS时,必须配置对应的 HTTPS 证书 sae.aliyun.com/loadbalancer-id: alb-4iceqaf9jtq0ic7xxx # SLB ID sae.aliyun.com/loadbalancer-port: "443" # SLB监听端口 sae.aliyun.com/loadbalancer-protocol: HTTPS # 请求转发协议,取值范围:HTTP、HTTPS sae.aliyun.com/loadbalancer-type: alb # 负载均衡类型,取值范围:clb、alb sae.aliyun.com/request-timeout: "60" # 连接请求超时时间,单位为秒 sae.aliyun.com/rule-actions: '{"/sys/(.*)/(.*)/aaa":"[{\"actionType\":\"redirect\",\"actionConfig\":\"{\\\"protocol\\\":\\\"${protocol}\\\",\\\"host\\\":\\\"${host}\\\",\\\"port\\\":\\\"${port}\\\",\\\"path\\\":\\\"/${1}\\\",\\\"query\\\":\\\"${query}\\\",\\\"httpCode\\\":\\\"301\\\"}\"}]"}' # 自定义转发策略配置,用于重定向 name: alb-4iceqaf9jtq0ic7xxx-443 # 使用固定格式:${SLB ID}-${SLB监听端口} namespace: default # 路由规则所在命名空间 spec: defaultBackend: # 默认转发策略 service: name: test-app-1 # 默认转发策略关联的后端应用 port: number: 8080 # 默认转发策略关联的容器端口 rules: # 自定义转发策略 - host: test.xxx.com # 自定义转发策略的域名 http: paths: - backend: service: name: test-app-2 # 自定义转发策略关联的后端应用 port: number: 9000 # 自定义转发策略关联的容器端口 path: / # 自定义转发策略的路径 pathType: ImplementationSpecific # 固定值 - backend: # 重定向策略,backend.service.name 默认为 dummyRule service: name: dummyRule port: number: 8080 path: /sys/(.*)/(.*)/aaa pathType: ImplementationSpecific在
ingress.yaml文件所在路径执行以下命令,实现为应用创建网关路由。saectl apply -f ingress.yaml
查看网关路由
saectl get ingress ${ingress-name} -n ${namespace}
# ${ingress-name}为网关路由的名称,如果不指定网关路由的名称,则获取范围内所有网关路由。
# ${namespace}为命名空间ID,如果不通过-n参数指定命名空间,则默认使用default命名空间。输出结果的字段说明如下:
字段  | 说明  | 
NAMESPACE  | 网关路由所在命名空间。  | 
NAME  | 使用固定值:  | 
TYPE  | SLB类型。  | 
DESCRIPTION  | 网关路由规则别名。  | 
HOSTS  | 域名。  | 
PORTS  | 端口。  | 
AGE  | 网关路由的存在时长。  | 
查看网关路由详情
saectl工具支持使用get或describe命令查看网关路由详情。返回结果中包含网关路由的配置项,详情请参考K8s YAML配置项说明。
通过get命令查看网关路由详情
saectl get ingress ${ingress-name} -o {yaml | json} -n ${namespace}
# ${ingress-name}为网关路由名称
# -o参数指定返回结果的格式
# ${namespace}为命名空间ID,如果不通过-n参数指定命名空间,则默认使用default命名空间通过describe命令查看网关路由详情
saectl describe ingress ${ingress-name} -n ${namespace}
# ${ingress-name}为网关路由名称
# ${namespace}为命名空间ID,如果不通过-n参数指定命名空间,则默认使用default命名空间更新网关路由
saectl工具支持使用edit或apply命令更新网关路由。
通过edit命令在线编辑网关路由配置信息
执行以下命令,将会以YAML文件的形式打开指定网关路由的配置信息。
saectl edit ingress ${ingress-name} -n ${namespace} # ${ingress-name}为网关路由名称 # ${namespace}为命名空间ID,如果不通过-n参数指定命名空间,则默认使用default命名空间在打开的YAML文件中按需修改配置信息,保存并关闭文件,等待配置信息变更完成。
通过apply命令实现按照YAML配置文件更新网关路由
修改已有的网关路由的配置文件ingress.yaml。在配置文件所在路径执行以下命令,实现网关路由配置信息的变更。
saectl apply -f ingress.yaml删除网关路由
saectl delete ingress ${ingress-name} -n ${namespace}
# ${ingress-name}为网关路由名称
# ${namespace}为命名空间ID,如果不通过-n参数指定命名空间,则默认使用default命名空间K8s YAML配置项说明
SAE的网关路由对应于Kubernetes的Ingress资源类型。相关K8s YAML配置项说明详见下表。
配置项  | 说明  | 
metadata.name  | 使用固定格式: 创建时必须指定此配置项。 更新时不支持此配置项。  | 
metadata.namespace  | 网关路由所在的命名空间。 更新时不支持此配置项。  | 
metadata.annotations: sae.aliyun.com/description  | 网关路由规则别名。  | 
metadata.annotations: sae.aliyun.com/idle-timeout  | 连接空闲超时时间。  | 
metadata.annotations: sae.aliyun.com/request-timeout  | 连接请求超时时间。  | 
metadata.annotations: sae.aliyun.com/loadbalancer-id  | SLB ID。 创建时必须指定此配置项。 更新时不支持此配置项。  | 
metadata.annotations: sae.aliyun.com/loadbalancer-port  | SLB 监听端口。 创建时必须指定此配置项。  | 
metadata.annotations: sae.aliyun.com/loadbalancer-protocol  | 请求转发协议,取值如下:  | 
metadata.annotations: sae.aliyun.com/loadbalancer-type  | 负载均衡类型,取值如下: 创建时必须指定此配置项。 更新时不支持此配置项。  | 
metadata.annotations: sae.aliyun.com/loadbalancer-cert-ids  | SLB 证书 ID。 如果请求转发协议是HTTPS,创建时必须指定此配置项。  | 
metadata.annotations: sae.aliyun.com/rule-actions  | 自定义转发策略。  | 
spec.defaultBackend  | 默认转发策略。 创建时必须指定此配置项。  | 
spec.defaultBackend.service.name  | 默认转发策略关联的后端应用。 创建时必须指定此配置项。  | 
spec.defaultBackend.service.port.number  | 默认转发策略关联的容器端口。 创建时必须指定此配置项。  | 
spec.rules  | 自定义转发策略。 创建时必须指定此配置项。  | 
spec.rules[i].host  | 自定义转发策略关联的域名。 创建时必须指定此配置项。  | 
spec.rules[i].http.paths[i].path  | 自定义转发策略关联的路径。 创建时必须指定此配置项。  | 
spec.rules[i].http.paths[i].pathType  | 使用固定值:  | 
spec.rules[i].http.paths[i].service.name  | 自定义转发策略关联的后端应用。 创建时必须指定此配置项。  | 
spec.rules[i].http.paths[i].service.port.number  | 自定义转发策略关联的容器端口。 创建时必须指定此配置项。  |