摘要: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资源对象的。
央视电视塔
鼓励的话语:事业的低谷不可怕,它是成长的催化剂,将要帮助自己跃上新高峰!
来源:小火车聊游戏