Day15,设定一下Ingress

正文

在很多的情境下,我们会使用到前天所提及的Service Type Loadbalancer,而也因为IP拮据的问题、或是cost问题等等......我们需要额外搭建所谓的reverse proxy,使用相同的对外IP代理不同的服务,在这样的需求下,我们往往会调整在reverse proxy的规则当中。

而Ingress controller 则是在Kubernetes中被提出的一种solution,以api yaml的方式撰写规则,背後透过controller进行转译,从而达到想要的reverse proxy效果。

目前台面上的Ingress class 也有许多种选择如nginx、haproxy、traefik、kong等等......
我这边选择的是我常用ingress-nginx,选择的考量其实也很单纯,在还未导入Kubernetes前,nginx & kong 算是一直以来就比较常接触的工具,其中Kong的定义为Api Gateway,虽说与nginx也颇有渊源,也能够达到类似效果,但与nginx不同的是更着重在API控管这一块,如身份验证、流量控制,等等众多plugin......

kong是基於OpenResty延伸,而OpenResty则是基於nginx+LuaJIT
顺代一提ingress-nginx controller也是基於OpenResty/lua,如果我没记错的话

而这里我的需求要的只是个支援mutidomain的reverse proxy,在这里ingress-nginx更贴切我的需求

那今天要来安装Ingress-nginx的controller(ingress-nginx的github连结)

我们这边要使用helm布署,所以要先执行下列的动作

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update

## 查看可装版本
helm search repo ingress -l

比对官网的readme support version,本次lab的kubernetes为1.20,所以最新版本应该都能装。

使用helm指令操作产出设定档

## 产出ingress-nginx 使用helm布署时的参数调整档
helm show values ingress-nginx/ingress-nginx --version 4.0.1 > values.yml

修改value.yaml,将昨日设定的openELB设定带入,使地端的LoadBalancer得以运作

  service:
    enabled: true

    annotations:
      lb.kubesphere.io/v1alpha1: porter
      protocol.porter.kubesphere.io/v1alpha1: layer2
      eip.porter.kubesphere.io/v1alpha2: porter-layer2-eip

使用helm指定版本与设定档案进行布署

helm install  ithome-ingress ingress-nginx/ingress-nginx --version 4.0.1 -f values.yaml  -n ithomelab 

布署完成的结果展示

接着必须要设定并布署ingress.yaml,设定完成後会根据设定的规则被ingress-controller转译成对应的nginx设定档。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: "nginx"
  name: ithomelab-ing
  namespace: ithomelab
spec:
  rules:
    - host: www.gurubear.cf
      http:
        paths:
          - backend:
              service:
                name: ithomelab-react-deployment
                port:
                 number: 80
            path: /
            pathType: Prefix
          - backend:
              service:
                name: ithomelab-api-deployment
                port:
                 number: 80
            path: /API
            pathType: Prefix

检查ingress 是否确实绑到IP

因为尚未设定domain与IP Forward,布署完成後先在本机 /etc/hosts 设定伪造的A Record

192.168.1.240 www.gurubear.cf

打开浏览器检查,左边为输入domain的情况,右边为ip直连

进去container可以看到/etc/nginx中被转译的nginx.conf档案

那到这边服务都没问题,明天就来设定真正的domain与凭证的事情了。

闲聊

其实如果很擅长写Reverse Proxy Rules的话Ingress好像也不是那麽必要XD。


<<:  登录档备份—为了避免後面把他玩坏的补救措施

>>:  Day03 - 端到端(end-to-end)语音辨识

DAY12 MongoDB Facet 与 Bucket 分桶统计

DAY12 MongoDB Facet 与 Bucket 分桶统计 之前我们介绍过了 Aggrega...

[自然语言处理基础] 语法分析与资讯检索 (I)

前言 前一回我们利用 WordNetLemmatizer 来还原词条的衍生形体,在这之中我们引入了一...

Day3 Virtual DOM vs Actual DOM

在介绍react实例之前,首先来介绍一下其操作原理---Virtual DOM,并比较和Actual...

Day 28 - Rancher Fleet Helm 应用程序部署

本文将於赛後同步刊登於笔者部落格 有兴趣学习更多 Kubernetes/DevOps/Linux 相...

[面试][後端]设计 API 时会考虑哪些点?

你设计的 API 除了跑的动以外,它安全稳定吗? 既然 Junoir 跟 Senior 的後端工程...