1.6.4. ingress

ingress是对集群汇总服务的外部访问进行管理的api对象,典型的访问是http

ingress可以提供负载均衡、ssl终结和基于名称的虚拟托管。

1.6.4.1. ingress是什么

ingress是公开了从集群外部到集群内部服务的http和https路由。

先安装一个ingress控制器,这里我选择了trafik了。 安装方法参考: https://doc.traefik.io/traefik/getting-started/install-traefik/

kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:
  name: "foo"
  namespace: production

spec:
  rules:
    - host: example.net
      http:
        paths:
          - path: /bar
            pathType: Exact
            backend:
              service:
                name:  service1
                port:
                  number: 80
          - path: /foo
            pathType: Exact
            backend:
              service:
                name:  service1
                port:
                  number: 80

1.6.4.2. defaultBackend

没有rules的ingress将所有流量发送到同一个默认后端,这个通常是ingress控制器的配置选项,而非在ingress的资源中指定。

1.6.4.3. 路径类型

pathtype这个就是路径类型,目前支持三种。

  • ImplementationSpecific: 这种类型的具体使用看ingress class了。

  • Exact: 精确匹配URL路径,区分大小写。

  • Prefix: 基于/分割的url就路径前缀匹配,

1.6.4.4. 多重匹配

在某些情况下,Ingress 中的多条路径会匹配同一个请求。 这种情况下最长的匹配路径优先。 如果仍然有两条同等的匹配路径,则精确路径类型优先于前缀路径类型。

1.6.4.5. 主机名通配符

主机名可以是精确匹配(例如foo.bar.com)或者使用通配符来匹配 (例如*.foo.com)。 精确匹配要求 HTTP host 头部字段与 host 字段值完全匹配。 通配符匹配则要求 HTTP host 头部字段与通配符规则中的后缀部分相同。

1.6.4.6. 默认 Ingress 类

将一个 IngressClass 资源的 ingressclass.kubernetes.io/is-default-class 注解设置为 true 将确保新的未指定 ingressClassName 字段的 Ingress 能够分配为这个默认的 IngressClass.