使用kubectl-sae工具管理网关路由Ingress

SAE的网关路由对应于Kubernetes的Ingress资源类型。本文介绍如何使用kubectl-sae工具管理网关路由,并提供相关的K8s YAML配置文件示例。

前提条件

已安装kubectl-sae工具,并配置AccessKey ID、AccessKey Secret、应用部署地域,详见安装与配置kubectl-sae工具

管理网关路由

kubectl-sae工具支持创建、查看、更新、删除网关路由。

创建网关路由

  1. 编写配置文件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 # 固定值
  2. ingress.yaml文件所在路径执行以下命令,实现为应用创建网关路由。

    kubectl-sae apply -f ingress.yaml

查看网关路由

kubectl-sae get ingress ${ingress-name} -n ${namespace}
# ${ingress-name}为网关路由的名称,如果不指定网关路由的名称,则获取范围内所有网关路由。
# ${namespace}为命名空间ID,如果不通过-n参数指定命名空间,则默认使用default命名空间。

输出结果的字段说明如下:

字段

说明

NAMESPACE

网关路由所在命名空间。

NAME

使用固定值:${SLB ID}-${端口}

TYPE

SLB类型。

DESCRIPTION

网关路由规则别名。

HOSTS

域名。

PORTS

端口。

AGE

网关路由的存在时长。

查看网关路由详情

kubectl-sae工具支持使用getdescribe命令查看网关路由详情。返回结果中包含网关路由的配置项,详情请参考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工具支持使用editapply命令更新网关路由。

通过edit命令在线编辑网关路由配置信息

  1. 执行以下命令,将会以YAML文件的形式打开指定网关路由的配置信息。

    kubectl-sae edit ingress ${ingress-name} -n ${namespace}
    # ${ingress-name}为网关路由名称
    # ${namespace}为命名空间ID,如果不通过-n参数指定命名空间,则默认使用default命名空间
  2. 在打开的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

使用固定格式:${SLB ID}-${SLB 监听端口}

创建时必须指定此配置项。
更新时不支持此配置项。

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

请求转发协议,取值如下:HTTPHTTPS

metadata.annotations:

sae.aliyun.com/loadbalancer-type

负载均衡类型,取值如下:clbalb

创建时必须指定此配置项。
更新时不支持此配置项。

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

使用固定值:ImplementationSpecific

spec.rules[i].http.paths[i].service.name

自定义转发策略关联的后端应用。

创建时必须指定此配置项。

spec.rules[i].http.paths[i].service.port.number

自定义转发策略关联的容器端口。

创建时必须指定此配置项。