在很多的情境下,我们会使用到前天所提及的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 分桶统计 之前我们介绍过了 Aggrega...
前言 前一回我们利用 WordNetLemmatizer 来还原词条的衍生形体,在这之中我们引入了一...
在介绍react实例之前,首先来介绍一下其操作原理---Virtual DOM,并比较和Actual...
本文将於赛後同步刊登於笔者部落格 有兴趣学习更多 Kubernetes/DevOps/Linux 相...
你设计的 API 除了跑的动以外,它安全稳定吗? 既然 Junoir 跟 Senior 的後端工程...