kubernetes基础知识之配置ingress黑白名单

360影视 日韩动漫 2025-09-10 11:30 1

摘要:kubernetes ingress可以配置黑白名单,annotations只对特定的ingress生效,configmap对全局生效。

kubernetes ingress可以配置黑白名单,annotations只对特定的ingress生效,configmap对全局生效。

如果同时配置了annotations和configmap,那么一般都是annotations生效,configmap不生效,因为annotations优先级比configmap高。

黑白名单的区别:

白名单是默认拒绝所有,只允许放入白名单的地址去访问。

黑名单是放行所有访问,但是不允许在黑名单中的IP地址去访问。

黑名单可以使用configmap去配置,白名单建议使用Annotations去配置。

作用域越小,权限权重越高。

在kubernetes中修改nginx配置的时候,通过annotations修改配置无需重启服务,而通过configmap修改需要重新加载配置。

使用configmap配置黑名单:

kubectl edit cm ingress-nginx-controller -n ingress-nginx

添加:

block-cidrs: $ip

接着访问的时候:

curl 域名 -I

会出现403 Forbidden的结果。

黑名单的意义:写入黑名单中的IP地址不能访问,其它的IP地址可以访问ingress的host地址。

configmap支持热更新,但是更新速度慢,不如直接删除pod让配置生效的速度快。

使用annotations添加黑名单配置:

touch ingress-nginx.yaml

vim ingress-nginx.yaml:

apiVersion: v1

kind: Ingress

metadata:

name: ingress-nginx

namespace: ingress-nginx

annotations:

nginx.ingress.kubernetes.io/server-snippet: |-

deny 192.168.61.156; #这里写黑名单IP

allow all;

spec:

ingressClassName: nginx

rules:

- host: www.test.com

paths:

- pathType: Perfix

path: "/"

backend:

service:

name: nginx-service

port:

number: 80

kubectl create -f ingress.yaml

把DNS记录写入hosts文件,进行验证。

黑名单只对ingress的资源对象生效。

白名单是除这个白名单里面设置的IP地址可以访问ingress对象之外,其它的IP地址都不可以访问。

通过configmap的方式设置白名单:

kubectl edit cm ingress-nginx-controller -n ingress-nginx

在data里面加入:

allow-snippet-annotations: "true"

whitelist-source-range: 192.168.61.156(白名单IP,允许访问ingress的IP地址)

进行验证:

curl www.test.com -I

发现可以访问,HTTP状态返回码是200。

白名单是写在IP名单列表里面的是可以正常访问的,非IP列表里面的IP是不允许访问的。

创建白名单的ingress资源对象yaml文件,

touch ingress.yaml

vim ingress.yaml:

只需要在annotations里面添加白名单的IP地址。

annotations:

nginx.ingress.kubernetes.io/whitelist-source-range 192.168.61.157

验证测试:

curl www.test.com -I

会发现只有192.168.61.157这个放在白名单的IP地址是可以访问ingress资源对象的,其它的IP地址都是不允许访问ingress资源对象的。

央视电视塔

鼓励的话语:事业的低谷不可怕,它是成长的催化剂,将要帮助自己跃上新高峰!

来源:小火车聊游戏

相关推荐