前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【TKE】Ingress-nginx 组件添加和设置 header

【TKE】Ingress-nginx 组件添加和设置 header

原创
作者头像
Jokey
发布2023-09-14 17:40:42
1.4K0
发布2023-09-14 17:40:42
举报
文章被收录于专栏:云原生搬运工云原生搬运工

操作背景

在实际业务转发场景中,经常会有添加或更新 http header 的需求,比如在请求头中加入 token 密钥以方便接口校验(请求上游时设置)或设置允许跨域请求头(响应客户端时添加)等需求,示例配置如下:

代码语言:javascript
复制
location /v3/segments {
    proxy_set_header authentication BaFdLUhcs*********YhY;
    add_header Access-Control-Allow-Headers 'sw8';
    proxy_pass https://ap-guangzhou.apm.tencentcs.com:12800/v3/segments;
}

上述配置在 Ingress-nginx 可以通过 snippets注解 的方式配置,但为了安全起见,默认情况下,snippets注解

不允许的, 参考: allow-snippet-annotations 。另外,这种方式只能给具体的 ingress 资源配置,如果需要给所有ingress 接口配置就很麻烦, 维护起来很不优雅.

所以推荐通过官方提供的 自定义Header 的方式来配置,下面将介绍如何配置。

操作作步骤

下面以 TKE Ingress-nginx 组件实例在 kube-system (监听所有命名空间)为例,如果是指定命名空间生效需要对应修改 configmap的命名空间。

1. 转发请求到上游时设置(proxy_set_header)

在 "set-headers"configmap中配置要设置的 headers ,如下图:

代码语言:yaml
复制
apiVersion: v1
data:
  ...
  authentication: "BaFdLUhcs*********YhY"
  ...
kind: ConfigMap
metadata:
  name: set-headers # configmap 名
  namespace: kube-system

2.响应客户端时添加 header(add_header)

在 "add-headers"configmap中配置要添加的 headers ,如下图:

代码语言:yaml
复制
apiVersion: v1
data:
  ...
  Access-Control-Allow-Headers: 'sw8'
  ...
kind: ConfigMap
metadata:
  name: add-headers # configmap 名
  namespace: kube-system

3. 将上述配置关联生效

将上述配置应用到集群中后,在 "<实例名>-ingress-nginx-controller"configmap中配置引用生效,如下图:

代码语言:yaml
复制
apiVersion: v1
data:
  ...
  proxy-set-headers: "kube-system/set-headers" # 按需引用自定义set headers 的configmap
  add-headers: "kube-system/add-headers" # 按需引用自定义添加 headers 的configmap
  ...
kind: ConfigMap
metadata:
  name: <实例名>-ingress-nginx-controller
  namespace: kube-system
  labels:
    k8s-app: <实例名>-ingress-nginx-controller
    qcloud-app: <实例名>-ingress-nginx-controller

应用配置后验证配置是否已经正常加载,登录 nginx controller 容器中查看配置:

代码语言:javascript
复制
cat /etc/nginx/nginx.conf | less

通过查找可以看到相关配置已生效,如下图:

proxy-set-header
proxy-set-header
add-header
add-header

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 操作背景
  • 操作作步骤
    • 1. 转发请求到上游时设置(proxy_set_header)
      • 2.响应客户端时添加 header(add_header)
        • 3. 将上述配置关联生效
        相关产品与服务
        容器服务
        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
        http://www.vxiaotou.com