Kubernetes?Ingress實現(xiàn)細(xì)粒度IP訪問控制
業(yè)務(wù)場景
有這么一個業(yè)務(wù)場景:業(yè)務(wù)平臺還是通過Kubernetes進行編排對外提供服務(wù)。然后其后臺管理部分,出于安全的考慮,只允許特定的IP才能訪問。如何實現(xiàn)?
目前,我們的網(wǎng)絡(luò)架構(gòu)是 SLB + Nginx Ingress + Ingress + Service + Pod的模式。其中,SLB使用的是阿里云的負(fù)載均衡SaaS服務(wù),使用的是7層負(fù)載,支持一個SLB實例+多個域名的轉(zhuǎn)發(fā)模式,如下圖所示。
阿里云SLB可以通過設(shè)定黑/白名單的方式進行訪問控制,但是該訪問控制會進行”一刀切“:所有通過該SLB提供服務(wù)的域名要么都可以訪問,要么都不可以訪問。如果domain1和domain2這倆域名可以開放訪問,domain3限定某些特定IP才能訪問,阿里云SLB的訪問控制就無法滿足我們的需求。
如果要實現(xiàn)這種業(yè)務(wù)場景,可以通過在Ingress里配置白名單來實現(xiàn)。
配置如下:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/server-snippet: | set_real_ip_from 100.64.0.0/10; # 100.64.0.0/10是阿里云負(fù)載均衡網(wǎng)段 https://help.aliyun.com/document_detail/54007.html set_real_ip_from 192.168.0.0/24; real_ip_header X-Forwarded-For; real_ip_recursive on; nginx.ingress.kubernetes.io/whitelist-source-range: {allow_access_ip1},{allow_access_ip2} name: {your_application-ingress} namespace: {your_ns} spec: rules: - host: {your_host} http: paths: - backend: service: name: {your_application-service} port: number: 80 path: / pathType: Prefix
說明:
- nginx.ingress.kubernetes.io/server-snippet: 等同于在nginx的server配置塊中添加自定義配置;
- nginx.ingress.kubernetes.io/whitelist-source-range: 允許訪問的客戶端IP源,多個IP可用逗號隔開,支持CIDR格式,如:192.168.0.0/24, 172.31.0.1;
- set_real_ip_from : 是指接受從哪個信任前代理處獲得真實用戶ip, 可以寫多行,如100.64.0.0/10, 192.168.0.0/24
- real_ip_header : 是指從接收到報文的哪個http首部去獲取前代理傳送的用戶ip, 一般是從header的X-Forwarded-For字段獲取IP(remote_addr只是代理上一層的地址,不一定是原始的用戶ip)
- real_ip_recursive :
- 為on時 , 遞歸排除IP地址:對從real_ip_header里獲得的IP串,從右往左, 依次過濾掉來自set_real_ip_from的IP,剩下的第一個就默認(rèn)是用戶的IP了。
- 為off時,對從real_ip_header里獲取的IP串,當(dāng)最右邊一個IP是信任的IP(即在set_real_ip_from里有設(shè)置),即認(rèn)為其右邊的第二個IP就是用戶的真實IP。
舉例, 假設(shè):
- real_ip_header里獲得的IP串是1.1.1.1, 2.2.2.2, 192.168.0.100
- set_real_ip_from = 192.168.0.0/24,2.2.2.2
- real_ip_recursive = on時,用戶IP=1.1.1.1
- real_ip_recursive = off時,用戶IP=2.2.2.2
通過以上設(shè)置,就可以在同一個SLB實例下,實現(xiàn)域名級別的訪問控制,比較適合后臺管理類網(wǎng)站部署的訪問控制。
以上就是Kubernetes Ingress實現(xiàn)細(xì)粒度IP訪問控制的詳細(xì)內(nèi)容,更多關(guān)于Kubernetes Ingress IP訪問控制的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Kubernetes?權(quán)限管理認(rèn)證鑒權(quán)詳解
這篇文章主要為大家介紹了Kubernetes?權(quán)限管理認(rèn)證鑒權(quán)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-11-11k8s?Service?實現(xiàn)服務(wù)發(fā)現(xiàn)和負(fù)載均衡
這篇文章主要為大家介紹了k8s?Service?實現(xiàn)服務(wù)發(fā)現(xiàn)和負(fù)載均衡的工作原理及使用方式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-04-04Centos?8.2?升級內(nèi)核通過elrepo源的方法
這篇文章主要介紹了Centos?8.2?升級內(nèi)核通過elrepo源,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-10-10不同k8s集群間服務(wù)如何相互訪問實現(xiàn)詳解
這篇文章主要為大家介紹了不同k8s集群間服務(wù)如何相互訪問實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-04-04