SAE的网关路由对应于Kubernetes的Ingress资源类型。本文介绍如何使用kubectl-sae工具管理网关路由,并提供相关的K8s YAML配置文件示例。
前提条件
已安装kubectl-sae工具,并配置AccessKey ID、AccessKey Secret、应用部署地域,详见安装与配置kubectl-sae工具。
管理网关路由
kubectl-sae工具支持创建、查看、更新、删除网关路由。
创建网关路由
编写配置文件
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" # 连接请求超时时间,单位为秒 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 # 固定值
在
ingress.yaml
文件所在路径执行以下命令,实现为应用创建网关路由。kubectl-sae apply -f ingress.yaml
查看网关路由
kubectl-sae get ingress ${ingress-name} -n ${namespace}
# ${ingress-name}为网关路由的名称,如果不指定网关路由的名称,则获取范围内所有网关路由。
# ${namespace}为命名空间ID,如果不通过-n参数指定命名空间,则默认使用default命名空间。
输出结果的字段说明如下:
字段 | 说明 |
NAMESPACE | 网关路由所在命名空间。 |
NAME | 使用固定值: |
TYPE | SLB类型。 |
DESCRIPTION | 网关路由规则别名。 |
HOSTS | 域名。 |
PORTS | 端口。 |
AGE | 网关路由的存在时长。 |
查看网关路由详情
kubectl-sae工具支持使用get
或describe
命令查看网关路由详情。返回结果中包含网关路由的配置项,详情请参考K8s YAML配置项说明。
通过get命令查看网关路由详情
kubectl-sae get ingress ${ingress-name} -o {yaml | json} -n ${namespace}
# ${ingress-name}为网关路由名称
# -o参数指定返回结果的格式
# ${namespace}为命名空间ID,如果不通过-n参数指定命名空间,则默认使用default命名空间
通过describe命令查看网关路由详情
kubectl-sae describe ingress ${ingress-name} -n ${namespace}
# ${ingress-name}为网关路由名称
# ${namespace}为命名空间ID,如果不通过-n参数指定命名空间,则默认使用default命名空间
更新网关路由
kubectl-sae工具支持使用edit
或apply
命令更新网关路由。
通过edit命令在线编辑网关路由配置信息
执行以下命令,将会以YAML文件的形式打开指定网关路由的配置信息。
kubectl-sae edit ingress ${ingress-name} -n ${namespace} # ${ingress-name}为网关路由名称 # ${namespace}为命名空间ID,如果不通过-n参数指定命名空间,则默认使用default命名空间
在打开的YAML文件中按需修改配置信息,保存并关闭文件,等待配置信息变更完成。
通过apply命令实现按照YAML配置文件更新网关路由
修改已有的网关路由的配置文件ingress.yaml
。在配置文件所在路径执行以下命令,实现网关路由配置信息的变更。
kubectl-sae apply -f ingress.yaml
删除网关路由
kubectl-sae 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,创建时必须指定此配置项。 |
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 | 自定义转发策略关联的容器端口。 创建时必须指定此配置项。 |