阿里云容器服务提供高可靠的Ingress Controller组件,集成了阿里云SLB服务,为您的Kubernetes集群提供灵活可靠的路由服务(Ingress)。

下面是一个Ingress编排示例。通过Web界面进行配置时,您需要对注释的参数进行配置,部分配置需要创建依赖项,具体请参见创建路由(Ingress)。也可以参见配置IngressKubernetes Ingress。此外,Ingress也支持Configmap的配置方式,请参见Configmap

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/service-match: 'new-nginx: header("foo", /^bar$/)'           #灰度发布规则,本例为Header请求头
    nginx.ingress.kubernetes.io/service-weight: 'new-nginx: 50,old-nginx: 50'                #流量权重注解
  creationTimestamp: null
  generation: 1
  name: nginx-ingress
  selfLink: /apis/extensions/v1beta1/namespaces/default/ingresses/nginx-ingress
spec:
  rules:                                                        ##路由规则
  - host: foo.bar.com
    http:
      paths:
      - backend:
          serviceName: new-nginx
          servicePort: 80
        path: /
      - backend:
          serviceName: old-nginx
          servicePort: 80
        path: /
tls:                                                         ## 开启 TLS,配置安全路由
  - hosts:
    - *.xxxxxx.cn-hangzhou.alicontainer.com
    - foo.bar.com
    secretName: nginx-ingress-secret                          ##使用的 secret名称
status:
  loadBalancer: {}

注解

您可以指定Ingress的Annotation,指定使用的Ingress Controller,以及路由的规则,如路由权重规则、灰度发布规则和重写规则等。Ingress的注解请参见Annotations

例如,一个典型的重定向注解:nginx.ingress.kubernetes.io/rewrite-target: /会将/path路径重定向到后端服务能够识别的/ 路径上面。

规则

规则指的是授权入站连接到达集群服务的路由规则,通常指HTTP/HTTPS规则,包括域名(虚拟主机名称)、URL访问路径、服务及端口等。

每条规则需要配置以下信息:

  • Host配置项:比如阿里云Kubernetes集群服务测试域名;或虚拟主机名称,如 foo.bar.com
  • URL路径:指定访问的URL路径,即Path。每个Path都关联一个Backend(服务),在阿里云SLB将流量转发到Backend之前,所有的入站请求都要先匹配Host和Path。
  • Backend配置:即服务配置,是一个 service:port和流量权重的组合。Ingress的流量根据设置的权重被转发到它所匹配的Backend。
    • 服务名称:Ingress转发的Backend服务名称。
    • 服务端口:服务暴露的端口。
    • 服务权重:一个服务组中各服务的权重比例。
      说明
      1. 服务权重采用相对值计算方式。例如两个服务权重都设置为50,则两个服务的权重比例都是50%。
      2. 一个服务组(同一个Ingress YAML中具有相同Host和Path的服务)中未明确设置权重的服务默认权重值为100。

灰度发布

容器服务支持多种流量切分方式,适用于灰度发布以及AB测试场景。
说明 目前阿里云容器服务K8S Ingress Controller需要0.12.0-5及其以上版本才支持流量切分特性。
  1. 基于Request Header的流量切分
  2. 基于Cookie的流量切分
  3. 基于Query Param的流量切分

设置灰度规则后,请求头中满足灰度发布匹配规则的请求才能被路由到设置的服务中。如果该服务设置了100%以下的权重比例,满足灰度规则的请求会继续依据权重比例路由到服务组下的各个服务。

TLS

您可以通过指定包含TLS私钥和证书的Secret来加密Ingress,实现安全的路由访问。TLS Secret中必须包含名为tls.crt和tls.key的证书和私钥。更多TLS的原理,请参见TLS;关于如何生成Secret,请参见配置Ingress

标签

您可为Ingress添加标签,标示该Ngress的特点。