Kubernetes Ingress
此任务描述如何使用 Kubernetes Ingress6 为 Istio 配置入口网关以暴露服务网格集群内的服务。
准备工作
请按照入口网关任务7中的 准备工作、 确定 Ingress IP 和端口的说明进行操作。
使用 Ingress 资源配置入口网关
Kubernetes Ingress6 公开了从集群外到集群内服务的 HTTP 和 HTTPS 路由。
让我们看看如何在端口 80 上配置 Ingress
以实现 HTTP 流量。
创建
Ingress
资源和IngressClass
:IngressClass
资源向 Kubernetes 标识 Istio 网关控制器,ingressClassName: istio
值指示 Kubernetes Istio 网关控制器应该处理以下Ingress
。旧版本的 Ingress API 使用
kubernetes.io/ingress.class
注解, 虽然它仍然有效,但它在 Kubernetes 中已被弃用一段时间了。使用 curl 访问 httpbin 服务:
注意,您需要使用
-H
标志将 Host 的 HTTP 头设置为 “httpbin.example.com”, 因为Ingress
中已经配置为处理访问 “httpbin.example.com” 的请求,但是在测试环境中, 该 host 并没有相应的 DNS 绑定。访问未显式公开的其他 URL 时,将返回 HTTP 404 错误:
下一步
TLS
Ingress
支持指定 TLS 设置。
Istio 支持此功能,但是引用的 Secret
必须存在于 istio-ingressgateway
部署的命名空间(通常是 istio-system
)中。
cert-manager8 可用于生成这些证书。
指定路径类型
Istio 默认路径类型为精确匹配,除非路径以 /*
或 .*
结尾,在这种情况下,
路径类型为前缀匹配。不支持其他正则表达式。
在 Kubernetes 1.18 中,添加了一个新字段 pathType
。这允许将路径明确声明为 Exact
或 Prefix
。
清除
删除 IngressClass
和 Ingress
配置,然后关闭 httpbin9 服务: