配置 Ingress

Ingress 规则(Kubernetes Ingress)将 HTTP/HTTPS 路由从集群外部暴露到内部路由(Kubernetes Service),从而实现对计算组件外部访问的控制。

创建 Ingress 以管理对 Service 的外部 HTTP/HTTPS 访问。

WARNING

在同一命名空间中创建多个 Ingress 时,不同 Ingress 不得具有相同的 Domain、Protocol 和 Path(即不允许存在重复的访问点)。

实现方式

Ingress 规则取决于 Ingress Controller 的实现。Ingress Controller 负责监听 Ingress 和 Service 的变更。创建新的 Ingress 后,当 Ingress Controller 收到请求时,会根据 Ingress 中的转发规则进行匹配,并将流量分发到指定的内部路由,如下图所示。

NOTE

对于 HTTP 协议,Ingress 仅支持将 80 端口作为外部端口。对于 HTTPS 协议,Ingress 仅支持将 443 端口作为外部端口。平台的负载均衡器会自动添加 80 和 443 监听端口。

Ingress 示例:

# nginx-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress
  namespace: k-1
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  ingressClassName: nginx
  rules:
    - host: demo.local
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: nginx-service
                port:
                  number: 80
  1. 如需了解更多配置,请参阅 nginx-configuration。
  2. nginx 用于使用 ingress-nginx controller,$alb_name 用于使用 alb 作为 ingress controller。
  3. 如果只希望在本地运行 ingress,请提前配置 hosts。

使用 Web 控制台创建 Ingress

  1. 访问 Container Platform。

  2. 在左侧导航栏中,点击 Network > Ingress。

  3. 点击 Create Ingress。

  4. 参考以下说明配置相关参数。

    参数描述
    Ingress ClassIngress 可以由具有不同 IngressClass 名称的不同 controller 实现。如果平台上有多个 Ingress controller 可用,用户可以通过此选项选择要使用的 controller。
    Domain NameHost 可以是精确匹配(例如 foo.bar.com)或通配符(例如 *.foo.com)。可用的域名由平台管理员分配。
    Certificates由平台管理员分配的 TLS secret 或证书。
    Match Type 和 Path
    • Prefix:匹配路径前缀,例如,/abcd 可以匹配 /abcd/efg 或 /abcde。
    • Exact:匹配精确路径,例如 /abcd。
    • Implementation specific:如果使用自定义 Ingress controller 管理 Ingress 规则,可以选择由该 controller 决定。
    Service外部流量将转发到此 Service。
    Service Port指定将流量转发到的 Service 端口。
  5. 点击 Create。

使用 CLI 创建 Ingress

kubectl apply -f nginx-ingress.yaml

商标声明

NGINX® 是 F5, Inc. 在美国及其他国家/地区的注册商标。

Alauda 是一家独立供应商。本产品与 F5, Inc. 无关联,也未获得其认可或赞助。所有商标均归其各自所有者所有,此处仅用于标识。