Ingress资源类型

基于HTTP暴露的每个Service资源均可发布于一个独立的FQDN主机名之上,如 “ www.ik8s.io ” ;也可发布于某主机上的URL路径之上,从而将它们整合到同一个Web站点,如 “ www.ik8s.io/garafana ” 。至于是否需要发布为HTTPS类型的应用则取决于用户的业务需求。

1. 单Service资源型Ingress

暴露单个服务的方法有很多种,如服务类型中的NodePort、LoadBalancer等,不过一样可以考虑使用Ingress来暴露服务,此时只需要为Ingress指定 “ dafault backend ” 即可。

例如下面的示例:
 
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-ingress
spec:
backend:
serviceName: my-svc
servicePort: 80

Ingress控制器会为其分配一个IP地址接入请求流量,并将它们转至示例中的my-svc后端。

2. 基于URL路径进行流量分发

垂直拆分或微服务架构中,每个小的应用都有其专用的Service资源等暴露服务,但在对外开放的站点上,它们可能是财经、新闻、电商、无线端或API接口等一类的独立应用,可通用主域名的URL路径(path)分别接入,例如,www.ilinux.io/api、 www.ilinux.io/wap 等,用于发布集群内名称为API和WAP的Service资源。于是,可对应地创建一个如下地Ingress资源,它将对www.ilinux.io/api 的请求统统转发至API Service资源。将对www.linux.io/wap 的请求转发至WAP Service资源:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test
annotations:
ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: www.ilinux.io
http:
paths:
- path: /wap
backend:
serviceName: wap
servicePort: 80
- path: /api
backend:
serviceName: api
servicePort: 80

注意:目前,Ingress-nginx似乎尚且不能很好地支持基于annotations进行URL映射。这就意味着,在ingress-nginx上,此项功能尚且不能使用。具体信息请参考这个链接中地讨论,github.com/istio/istio…

3. 基于主机名称地虚拟主机

上面类型2中描述的需求,也可以将每个应用分别以独立的FQDN主机名进行输出,如www.ik8s.io 和api.ik8s.io,这两个主机名解析到external LB的IP地址之上,分别用于发布集群内部的WAP和API这两个Service资源。这种实现方案其实就是Web站点部署中的“基于主机名的虚拟主机”,将多个FQDN解析至同一个IP地址,然后根据“主机头”(Host header)进行转发。

下面是以独立FQDN主机形式发布服务的Ingress资源示例:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test
spec:
rules:
- host: api.ik8s.io
http:
paths:
- backend:
serviceName: api
servicePort: 80
- host: wap.ik8s.io
http:
paths:
- backend:
serviceName: wap
servicePort: 80

TLS类型的Ingress资源

这种类型用于以HTTPS发布Service资源,基于一个含有私钥和证书的Secret对象(不明白的可以上网查询,以后我也会做详细讲述~)即可配置TLS协议的Ingress资源,目前来说,Ingress资源仅支持单TLS端口,并且还会卸载TLS会话。在Ingress资源中引用此Secret即可让Ingress控制器加载并配置为HTTPS服务。

下面是一个简单的TLS类型的Ingress资源示例:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: no-rules-map
spec:
tls:
- secretName: ikubernetesSecret
backend:
serviceName: hostsite
servicePort: 80

最新文章

  1. Cocos2d-x win7 + vs2010 配置图文详解
  2. PlayMaker 学习笔记
  3. 九度OJ1085
  4. jumplist和changlist
  5. GIS:揭开你神秘的面纱
  6. JavaScript事件处理
  7. CSS 怀疑 Verify
  8. struts2+ajax实现异步验证实现
  9. iOS 横竖屏切换解决方案
  10. webstorm Terminal 位置错乱解决方案
  11. [Swift]LeetCode630. 课程表 III | Course Schedule III
  12. Kaldi的delta特征
  13. noip2012
  14. SWPU-ACM集训队周赛之组队赛(3-11) E题题解
  15. 百度纯CSS生成菜单
  16. cerr与cout的区别
  17. day022 python (re模块和 模块)
  18. [bug]不包含“AsNoTracking”的定义
  19. 对Bootloader(引导加载程序)的几点理解
  20. 转-使用 CefSharp 在 C# App 中嵌入 Chrome 浏览器

热门文章

  1. HCIP-ICT实战进阶07-BGP路由选路
  2. java中的Filter(过滤器)和Intercepter(拦截器)的认知
  3. OS-lab1
  4. sentinel监控数据持久化&本地测试
  5. es实现规格动态域生成
  6. myForEach
  7. go 处理json
  8. 浏览器打开微信小程序
  9. Qt多线程编程之QThreadPool 和 QRunnable使用
  10. Docker学习笔记-01 初步了解