Ingress
Ingress是另一种资源,与Service资源不同。
Ingress资源与Service资源可以是一对多,即Ingress对象只需要一个公网IP,就能为多个Service提供访问,架构如下:

Ingress工作在应用层(HTTP),因此可以提供基于cookie的会话亲和性(session affinity)等功能。
创建Ingress
下面展示了一个创建Ingress的YAML配置文件:
访问Ingress
假设通过kubectl get ingresses查看Ingress资源对象的相关信息如下(此处的Ingress后端只有一个Service,且将该Service映射的路径为http://kubia.example.com/):
在生成名为kubia的Ingress资源对象后,在客户端所在的DNS列表中,需要加上如下的解析条目:
然后,通过在客户端中访问http://kubia.example.com即可间接访问到Service。
Ingress处理TLS传输
这里的Ingress处理TLS传输,是指客户端与Ingress控制器之间,控制器和Pod之间还是通过HTTP传输。
通过下面两步可以实现目标:
创建私钥和证书;
创建包含私钥和证书的Secret资源;
将Secret对象绑定至Ingress对象中;
创建私钥和证书
使用openssh命令创建私钥,文件名为tls.key:
使用openssl命令创建证书,文件名为tls.cert:
创建Secret资源
这里直接使用命令创建tls类型的Sercret资源,该资源包含刚刚创建的私钥和证书文件,资源名为tls-secret:
将Secret资源绑定至Ingress对象中
查看Secret资源,可以看到PORTS列中多了一个443端口,即HTTPS:
访问Ingress
现在可以通过HTTPS访问Ingress资源:
Last updated
Was this helpful?