首页 > 其他分享 >Kubernetes--Ingress资源类型

Kubernetes--Ingress资源类型

时间:2022-10-13 09:58:33浏览次数:73  
标签:www Service -- Ingress 资源类型 api io backend

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

 




标签:www,Service,--,Ingress,资源类型,api,io,backend
From: https://www.cnblogs.com/zhangxin9/p/16787019.html

相关文章

  • 雪花算法详解(原理优缺点及代码实现)
    目录雪花算法简介雪花算法的优缺点雪花算法原理雪花算法代码实现雪花算法简介雪花算法,英文名为snowflake,翻译过来就是是雪花,所以叫雪花算法。在大自然雪花形......
  • logback.xml
    <?xmlversion="1.0"encoding="UTF-8"?><configuration><!--CONSOLE:表示当前的日志信息是可以输出到控制台的。--><appendername="Console"c......
  • c语言实现继承、封装、多态
    c语言实现多态,点击进入主要内容:多态:利用设计和实现一个易于扩展的系统;c++中多态指:具有不同功能的函数可以用同一个函数名,这样可以用一个函数名调用不同内容的函数;静态多......
  • 实验4:开源控制器实践——OpenDaylight
    一、实验目的1.能够独立完成OpenDaylight控制器的安装配置;2.能够使用Postman工具调用OpenDaylightAPI接口下发流表。二、实验环境1.下载虚拟机软件OracleVisualBox或......
  • 日志依赖
    <!--添加slf4j日志api--><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.20</version></dependency><!--......
  • vue上传图片并生成海报
    用到的插件:vue-cropper(裁剪)  vue-canvas-poster(生成海报),最终合成海报调用裁剪插件方法getCropBlob,利用canvas画出海报。需求说明:默认有个海报缩略图展示,有模版可供......
  • cmake aux_source_directory
    cmake中的aux_source_directory(.SRC_LIST):将当前文件的所有源文件放进变量SRC_LIST中。使用aux_source_directory的问题:当我们在当前目录下重新添加了新的源文件,但此时......
  • Python基础三【字典】
    1#字典,键-值对,{}表示;字典项不排序;可以用任意值做为键;2importoperator3importpprint4myCat={'size':'fat','color':'gray','disposition':'loud'}5print......
  • 对象、构造方法
    构造方法Python类可以使用:__init__()方法,称之为构造方法。可以实现:在创建类对象(构造类)的时候,会自动执行。在创建类对象(构造类)的时候,将传入参数自动传递给__init__......
  • React Hook:无用渲染-PureComponent-shouldCompoent-函数组件
    过渡技术1.1无用的渲染组件是构成React视图的一个基本单元。有些组件会有自己本地的状态(state),当它们的值由于用户的操作而发生改变时,组件就会重新渲染。在一个React......