前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【K8s】Kubernetes 服务发现之 Ingress 进阶

【K8s】Kubernetes 服务发现之 Ingress 进阶

作者头像
行者Sun
发布2024-09-02 12:46:02
1130
发布2024-09-02 12:46:02
举报
文章被收录于专栏:Kubernetes

以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!

如果对您有帮助,烦请点赞、关注、转发!如果您有其他想要了解的,欢迎私信联系我

Ingress 进阶使用(示例)

1、Ingress 实现重定向

该功能等价于 Nginx 配置中的 return 语句。

代码语言:javascript
复制
...
kind: Ingress
metadata:
  annotations:
    # 当客户端请求的 path 匹配到时,强制重定向至指定地址
    nginx.ingress.kubernetes.io/permanent-redirect: http://demo.com
    # 指定重定向状态码
    nginx.ingress.kubernetes.io/permanent-redirect-code: "301"
    # 当客户端请求的 path 匹配到时,重定向至 HTTPS
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
    # 不管客户端请求的 path 是否匹配到,强制重定向至 HTTPS
    nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
...

2、Ingress 实现路由跳转

该功能等价于 Nginx 配置中的 rewrite 语句。

代码语言:javascript
复制
...
kind: Ingress
metadata:
  annotations:
    # 当客户端请求的 path 匹配到时,跳转至指定路由,$2 代表第二个括号的占位符
    nginx.ingress.kubernetes.io/rewrite-target: /$2
...
spec:
...
       /api(/|$)(.*)
...

3、Ingress 实现自定义配置

代码语言:javascript
复制
...
kind: Ingress
metadata:
  annotations:
    # 插入 location 块配置片段
    nginx.ingress.kubernetes.io/configuration-snippet: |
      rewrite /api/($/.*) /$1 break ;
    # 插入 server 块配置片段
    nginx.ingress.kubernetes.io/server-snippet: |
      server_name demo.com ;
...

4、Ingress 实现 CORS

代码语言:javascript
复制
...
kind: Ingress
metadata:
  annotations:
    # 允许 CORS
    nginx.ingress.kubernetes.io/enable-cors: "true"
    # 指定允许的请求源,默认为 *
    nginx.ingress.kubernetes.io/cors-allow-origin: "http://demo.com"
    # 指定允许的请求方法
    nginx.ingress.kubernetes.io/cors-allow-methods: "PUT, GET, POST, OPTIONS, DELETE"
    # 指定允许的请求头
    nginx.ingress.kubernetes.io/cors-allow-headers: "DNT,X-CustomHeader,X-LANG,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,X-Api-Key,X-Device-Id,Access-Control-Allow-Origin"
    # 指定允许传递凭证
    nginx.ingress.kubernetes.io/cors-allow-credentials: "true"
...

5、Ingress 实现限流

代码语言:javascript
复制
...
kind: Ingress
metadata:
  annotations:
    # 单个 IP 地址允许的并发连接数。超出此限制时,将返回 503 错误
    nginx.ingress.kubernetes.io/limit-connections: "100"
    # 速率限制的放大系数,默认值为 5(充当乘数)
    nginx.ingress.kubernetes.io/limit-burst-multiplier: "5"
    # 单个 IP 地址每秒钟接受的请求数
    nginx.ingress.kubernetes.io/limit-rps: "100"
    # 限制发送给后端服务的发送速率(千字节数/秒),0 为禁用速率限制
    nginx.ingress.kubernetes.io/limit-rate: "0"
    # 从速率限制中排除的源 IP 范围
    nginx.ingress.kubernetes.io/limit-whitelist: "xx.xx.xx.xx/xx, ..."
...

Ingress 配置注意事项

  • Ingress 规则是基于路径(path)匹配的,必须确保路径定义清晰,避免重叠或冲突
  • Ingress 规则若不配置 host 字段,则匹配任意未知域名和 IP 地址
  • Ingress 规则若配置有 host 字段,则只能配置并匹配域名
  • Ingress 对象的 apiVersion 必须与 Kubernetes 集群的版本兼容,即需要确定 Kubernetes 集群是否支持 networking.k8s.io/v1 或 extensions/v1beta1
  • 若是 HTTPS 协议访问,建议将 SSL 证书配置在外部 F5 设备或者负载均衡设备上,完成 HTTPS 请求的拆包、解包,并将访问请求转发至后端服务器的 80 端口
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-08-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 实施运维知识交流 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档