[DAY19]Ingress-k8s的海姆达尔

还有印象雷神索尔里面,管理着彩虹桥的海姆达尔吗~
只有人从彩虹桥传送进来时,第一个面对的就是他。

在k8s里面ingress也是扮演着相同角色,是k8s cluster 外部连接内部服务的controller

什麽是ingress

Ingress 宣告了从k8s cluster外部进入到内部服务的http(https)路由。 流量路由由Ingress定义好的规则来控制。
https://ithelp.ithome.com.tw/upload/images/20210926/20129515OXY6X0GC6D.png
图片来源

如果没有透过ingress就变成是外部直接对应k8s内部service,正常是不会直接把内部服务直接expose出去给外部呼叫,多层 reserve proxy相对安全。

ingress提供了

  • 外部可连入url
  • loadbalance
  • terminate ssl/tls
  • virtual hosting

一般来说使用ingess时,Service type大多会使用LoadBalancer

ingress yaml

apiVersion: networking.k8s.io/v1
kind: Ingress #kind要使用Ingress才会动嘿~
metadata:
  name: minimal-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules: #这边定义了ingress从外部导入内部的规则
  - http:
      paths:
      - path: /testpath
        pathType: Prefix #path 前缀是/testpath时就会进入规则内
        backend:
          service: #对应k8s内部服务名称 service叫test,使用80 PORT
            name: test
            port:
              number: 80

ingress pathType

pathType分成了 PrefixExact二种

  • Prefix : 前缀符合就符合规则
  • Exact : 需要完全一致才行,包含大小写也要一致
type path request path match
Prefix / 全部路径 YES
Exact /aa /aa YES
Exact /bb /cc NO
Prefix /aa /aa, /aa/ YES
Prefix /aa/cc /aa/ccc NO

基於上面逻辑的yaml,

  • rule1 : 当外部request的domain为aa.bb.com且path为/cc (ex aa.bb.com/cc)时,ingress把request导向k8s服务mytest1
  • rule2 : 当外部request的domain为aa.bb.com,只要符合*.bb.com的domain名称就符合host的逻辑(ex aa.bb.com , a1.bb.com gg.bb.com是符合的,但是如果aa.bb.cc.com就不符合啦)且path为/cc时,ingress把request导向k8s服务mytest2
apiVersion: networking.k8s.io/v1
kind: Ingress2
metadata:
  name: ingress-test2
spec:
  rules:
  - host: "aa.bb.com"
    http:
      paths:
      - pathType: Prefix
        path: "/cc"
        backend:
          service:
            name: mytest1
            port:
              number: 80
  - host: "*.bb.com"
    http:
      paths:
      - pathType: Prefix
        path: "/cc"
        backend:
          service:
            name: mytest2
            port:
              number: 80

以上就是ingress的最基础用法啦,因为主力不是使用ingress,所以这部份就算是浅谈罗


<<:  Day12-记得要戴安全帽(二)

>>:  Global Table Replication

Gitlab EE 授权获取工具

示例环境: debian10 Ruby Version ≥2.5 生成授权需要安装依赖: ## 确认...

英雄列表范例:显示列表

关联到一个控制器 在服务器的控制器(ZK composer)载入资料後,要让它跟 zul 上写的元件...

【Day 03】string

1. string 今天要来介绍 string(字串),会介绍一些 string 的基本观念以及使用...

RISC-V: R-type 位移指令

今天一样是简单的 SLL、SRL、SRA 指令实作, 再一样为了 Code Stream Logge...

[ Day 22 ] React 中的 State 管理 - Redux

今天进入到全新的篇章 Redux 了! Redux 是 React.js 中很常拿来作为状态管理使...