ingress nginx 笔记

背景

记录一些常见用法,类似faq。

前置条件
全局变量

ingress 配置一些全局的变量,比如 server-tokens: "false" ,有以下两种办法。

  1. 修改 configmap,遵循 yaml 语法
kubectl -n ingress-nginx edit cm ingress-nginx-controller

# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
data:
  server-tokens: "false"
...
  1. 新建一个yaml文件,apply -f 应用即可
# cat configmap.yaml
apiVersion: v1
data:
  server-tokens: "false"
kind: ConfigMap
metadata:
  name: nginx-configuration
  namespace: ingress-nginx
  
# kubectl apply -f configmap.yaml

以上两种办法设置后,ingress 均会自动重载让配置生效

局部变量

当你需要针对某个 location 做一些设置,比如要开启 ip 白名单限制,就需要用到 ingress 的 annotations 功能了。

现在需要对 ryb 后台做白名单限制,新建一个 ingress 资源示例。

---

kind: Ingress
apiVersion: extensions/v1beta1
metadata:
  name: ryb-ingress
  namespace: app
  labels:
    app: ryb

  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/whitelist-source-range: '192.168.8.0/24'  #设置ip
spec:
  rules:
    - host: fuck.cn
      http:
        paths:
          - path: /ryb
            backend:
              serviceName: ryb-svc
              servicePort: 7302
部署

私有云自建的 k8s 部署 ingress 通常有2种方案,Deployment + LB、Daemonset + HostNetwork + LB 。优缺点如下:

  1. Deployment + LB:将 Nginx Ingress Controller 以 Deployment 的方式部署,以 nodeport 方式将端口映射出集群外,通过 slb 将流量转发至 ingress_nodeport,ingress_nodeport 再通过 iptables 或 ipvs 将请求路由到 service 对应的后端 pod。
graph LR slb --> ingress_nodeport ingress_nodeport --ipvs--> k8s_pod
  1. Daemonset + HostNetwork + LB :在方案一中,流量会经过 nodeport,多了一层转发,增加网络损耗。所以改为用 hostnetwork。
graph LR slb --> ingress

方案2的缺点是,增删 ingress 节点时需手动操作。有能自动操作的方案,不过只在公有云上实现,在此忽略。

使用 hostnetwork 的方法如下:

template:
  spec:
    hostNetwork: true

同时将 nodeport 换成 clusterip即可

spec:
  type: ClusterIP
性能优化

此处给出腾讯云、阿里云的参考文档,本人亲测性能会提高,但也有可能影响业务,请自行取舍。

https://partners-intl.aliyun.com/help/zh/doc-detail/202125.htm

https://segmentfault.com/a/1190000023868518

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海口-熟练工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值