Ingress

Kubernetes 社区版是基于 Nginx 的扩展版 OpenResty 及诸多第三方模块构建的,其基于 OpenResty 的 Lua 嵌入式编程能力,扩展了 Nginx 的功能,并基于 balancer_by_lua 模块实现了 Pod 变化的动态变更功能。



Nginx Ingress 由资源对象 Ingress、Ingress 控制器、Nginx 三部分组成,Ingress 控制器用以将 Ingress 资源实例组装成 Nginx 配置文件(nginx.conf),并重新加载 Nginx 使变更的配置生效。当它监听到 Service 中 Pod 变化时通过动态变更的方式实现 Nginx 上游服务器组配置的变更,无须重新加载 Nginx 进程。

Ingress,一组基于域名或 URL 把请求转发到指定 Service 实例的访问规则,是 Kubernetes 的一种资源对象,Ingress 实例被存储在对象存储服务 etcd 中,通过接口服务被实现增、删、改、查的操作。
Ingress 控制器(Ingress controller),用以实时监控资源对象 Ingress、Service、End-point、Secret(主要是 TLS 证书和 Key)、Node、ConfigMap 的变化,自动对 Nginx 进行相应的操作。
Nginx,实现具体的应用层负载均衡及访问控制。



9) lua-resty-waf模块
lua-resty-waf 是一个基于 OpenResty 的高性能 Web 应用防火墙,它使用 Nginx Lua API 及灵活的规则架构分析和处理 HTTP 请求信息,并不断开发和测试一些自定义的规则补丁来应对不断出现的新的安全威胁。lua-resty-waf 提供了 ModSecurity 兼容的规则语法,支持 ModSecurity 现有规则的自动转换,用户无须学习新的语法规则就可以扩展 lua-resty-waf 的规则。



https://github.com/p0pr0ck5/lua-resty-waf



https://www.weixueyuan.net/a/867.html



Nginx Ingress 控制器约定 Nginx Ingress 配置映射实例中的键值只能是字符串,即便是数字或布尔值时也要以字符串的形式书写,比如 “true”、”false”、”100”,”[]string” 或 “[]int” 的 Slice 类型则表示内部数据是以 “,” 分隔的字符串



https://www.weixueyuan.net/a/877.html



main-snippet string “” 在 main 指令域添加 Nginx 配置指令
http-snippet string “” 在 http 指令域添加 Nginx 配置指令
server-snippet string “” 在 server 指令域添加 Nginx 配置指令
location-snippet string “” 在 location 指令域添加 Nginx 配置指令



apiVersion: v1
kind: ConfigMap
data:
http-snippet: |
ancient_browser “UCWEB”;
ancient_browser_value oldweb;
server {
listen 8080;
if ($ancient_browser) {
rewrite ^ /${ancient_browser}.html; # 重定向到oldweb.html
}
}
metadata:
name: nginx-ingress-controller
namespace: nginx-ingress



https://www.weixueyuan.net/a/877.html



Nginx Ingress注解Annotations
Nginx Ingress 注解使用在 Ingress 资源实例中,用以设置当前 Ingress 资源实例中 Nginx 虚拟主机的相关配置,对应配置的是 Nginx 当前虚拟主机的 server 指令域内容。在与 Nginx Ingress 配置映射具有相同功能配置时,将按照所在指令域层级遵循 Nginx 配置规则覆盖。



https://www.weixueyuan.net/a/884.html



https://zhuanlan.zhihu.com/p/136376162


Category k8s