【k8s】在ingress-controlller中Admission Webhook 的作用

devtools/2024/12/22 1:09:01/

   介绍1

     在 NGINX Ingress Controller 中,Admission Webhook 是一种用于增强 Kubernetes API 请求的机制,它允许你在资源(如 Ingress)被创建或更新之前对这些请求进行验证或修改。具体来说,Admission Webhook 在 NGINX Ingress Controller 中扮演了两个主要角色:

  1. Validating Admission Webhook

    • 作用:验证传入的 API 请求是否符合预定义的规则和条件。
    • 工作原理:当用户尝试创建或更新一个 Ingress 资源时,API Server 会将请求发送给 Validating Admission Webhook 进行验证。如果请求不符合预期(例如配置错误或违反了某些策略),Webhook 可以拒绝该请求并返回错误信息给用户。
    • 目的:确保只有正确配置且合法的 Ingress 资源才能被创建或更新,从而防止不正确的配置进入系统。
  2. Mutating Admission Webhook

    • 作用:在资源创建或更新前自动修改 API 请求的内容。
    • 工作原理:与 Validating Admission Webhook 类似,但在验证之后,Mutating Admission Webhook 可以修改传入的请求,添加默认值、修正配置项等,然后再将修改后的请求提交给 API Server。
    • 目的:简化用户的配置过程,自动应用最佳实践或集群特定的设置,确保所有资源都遵循一致的标准。

在 NGINX Ingress Controller 中的具体实现

对于 NGINX Ingress Controller 来说,Admission Webhook 主要用于以下场景:

  • Ingress 资源验证:确保所有的 Ingress 配置都是有效的,并且不会导致 NGINX 配置文件生成失败或其他问题。

  • 自动注入注解:为 Ingress 资源添加必要的注解或默认值,比如 SSL 证书管理、负载均衡策略等。

  • TLS 终止配置:处理 TLS 相关的配置,如自动生成和管理 SSL 证书,确保 HTTPS 流量能够正确终止于 Ingress Controller。

  • CRD 支持:一些高级功能可能依赖于自定义资源定义(Custom Resource Definitions, CRDs),此时 Mutating 和 Validating Admission Webhooks 可以帮助管理这些自定义资源。

Admission Webhook 的组成部分

  1. Webhook 服务:一个运行中的 Pod 或 Deployment,负责处理来自 API Server 的 HTTP(S) 请求。这个服务通常由 NGINX Ingress Controller 的控制器组件提供。

  2. Service 资源:为 Webhook 服务提供稳定的网络端点,API Server 使用此 Service 的 DNS 名称和端口来调用 Webhook。

  3. Webhook Configuration 资源ValidatingWebhookConfigurationMutatingWebhookConfiguration 定义了何时以及如何调用 Webhook。它们包含 Webhook 的 URL 或 Service 引用、规则、选择器以及其他配置信息。

  4. TLS 证书:用于加密 API Server 和 Webhook 服务之间的通信,确保数据传输的安全性和完整性。

总结

Admission Webhook 在 NGINX Ingress Controller 中是一个重要的特性,它通过在资源创建或更新前执行额外的验证和修改步骤,增强了系统的安全性和稳定性。这不仅有助于防止错误配置,还能自动化一些常见的配置任务,提高用户体验

介绍2

     在 NGINX Ingress Controller 中,Admission Webhook 是一种用于增强 Kubernetes API 请求处理的机制,它允许你在资源(如 Ingress)被创建或更新之前对这些请求进行验证或修改。具体来说,Admission Webhook 在 NGINX Ingress Controller 中主要指的是两个方面的工作:验证和变更请求。

Validating Admission Webhook

  • 作用:验证传入的 API 请求是否符合预定义的规则和条件。
  • 工作原理:当用户尝试创建或更新一个 Ingress 资源时,API Server 会将请求发送给 Validating Admission Webhook 进行验证。如果请求不符合预期(例如配置错误或违反了某些策略),Webhook 可以拒绝该请求并返回错误信息给用户。
  • 目的:确保只有正确配置且合法的 Ingress 资源才能被创建或更新,从而防止不正确的配置进入系统

Mutating Admission Webhook

  • 作用:在资源创建或更新前自动修改 API 请求的内容。
  • 工作原理:与 Validating Admission Webhook 类似,但在验证之后,Mutating Admission Webhook 可以修改传入的请求,添加默认值、修正配置项等,然后再将修改后的请求提交给 API Server。
  • 目的:简化用户的配置过程,自动应用最佳实践或集群特定的设置,确保所有资源都遵循一致的标准

在 NGINX Ingress Controller 中的具体实现

对于 NGINX Ingress Controller 来说,Admission Webhook 主要用于以下场景:

  • Ingress 资源验证:确保所有的 Ingress 配置都是有效的,并且不会导致 NGINX 配置文件生成失败或其他问题

  • 自动注入注解:为 Ingress 资源添加必要的注解或默认值,比如 SSL 证书管理、负载均衡策略等

  • TLS 终止配置:处理 TLS 相关的配置,如自动生成和管理 SSL 证书,确保 HTTPS 流量能够正确终止于 Ingress Controller

  • CRD 支持:一些高级功能可能依赖于自定义资源定义(Custom Resource Definitions, CRDs),此时 Mutating 和 Validating Admission Webhooks 可以帮助管理这些自定义资源

Admission Webhook 的组成部分

  1. Webhook 服务:一个运行中的 Pod 或 Deployment,负责处理来自 API Server 的 HTTP(S) 请求。这个服务通常由 NGINX Ingress Controller 的控制器组件提供。

  2. Service 资源:为 Webhook 服务提供稳定的网络端点,API Server 使用此 Service 的 DNS 名称和端口来调用 Webhook

  3. Webhook Configuration 资源ValidatingWebhookConfigurationMutatingWebhookConfiguration 定义了何时以及如何调用 Webhook。它们包含 Webhook 的 URL 或 Service 引用、规则、选择器以及其他配置信息

  4. TLS 证书:用于加密 API Server 和 Webhook 服务之间的通信,确保数据传输的安全性和完整性。这些证书通常是通过 Helm Chart 自动生成,或者手动创建并通过 Kubernetes Secret 管理

总结

       Admission Webhook 在 NGINX Ingress Controller 中是一个重要的特性,它通过在资源创建或更新前执行额外的验证和修改步骤,增强了系统的安全性和稳定性。这不仅有助于防止错误配置,还能自动化一些常见的配置任务。此外,Admission Webhook 的存在也意味着 NGINX Ingress Controller 不仅仅是简单的反向代理,而是具有更深层次集成能力的 Kubernetes 组件,它可以参与到 Kubernetes API 请求的生命周期中,确保集群内资源的一致性和安全性


http://www.ppmy.cn/devtools/144231.html

相关文章

MapBox实现深蓝色科技风格底图方案

先来简单看一下效果: 当然你也可以根据自己的喜好去调整颜色: 而且我亲自测试不会影响其他的图层效果。 因为mapbox到目前为止的3.8.0版本不像openlayers那样能够灵活的操作图层。因此在mapbox中通过修改天地图去改变其底图色彩样式就变得比较困难。 我们都知道(不知道 的…

在 Ubuntu 下通过 Docker 部署 MariaDB 服务器

MariaDB 是 MySQL 的一个分支,旨在保持开源和社区驱动,提供高性能和稳定性。它被广泛应用于各种类型的应用程序,特别是在需要高可用性和可扩展性的环境中。Docker 是一个流行的容器化平台,允许开发者将应用及其依赖打包为容器&…

git重新提交方法

提交了几笔代码,修改之前某一笔的方法。 方法一: (本地需是最新版本,如果有提交未合,可以reset后再pull) 1.要修改的gerrit链接-右上角-download patch-复制cherry pick命令-as或项目中执行 2.修改代码 3.…

一篇文章理解前端的请求头和响应头含义

1.前言 作为一名前端开发必不可少的就是会和请求接口打交道,那么也应该理解请求头和响应头的含义,方便分析和快速定位问题及时解决。 通过这篇文章主要介绍比较常用的请求头和响应头,希望能对大家有所帮助。 2.什么是请求头和响应头 请求…

线性代数判断两条线方向相反(python)

以下是几种可以通过线性代数相关知识来判断两条线方向相反的方法,以下假设两条线都是二维平面上的线段,线 a 的端点坐标为 (x1_a, y1_a) 和 (x2_a, y2_a) ,线 b 的端点坐标为 (x1_b, y1_b) 和 (x2_b, y2_b) ,对应你给出的示例中 x…

SpringBoot集成ENC对配置文件进行加密

在线MD5生成工具 配置文件加密&#xff0c;集成ENC 引入POM依赖 <!-- ENC配置文件加密 --><dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>2.1.2</ver…

dolphinscheduler服务RPC框架源码解析(八)RPC提供者服务整合Spring框架实现

RPC提供者服务整合Spring框架实现 1.概述2.整合设计2.1.设计分析2.2.实现类关系设计3.整合实现3.1.WorkerServer启动3.2.WorkerRpcServer启动3.3.SpringServerMethodInvokerDiscovery类3.4.扫描注册RPC提供者的ServerMethodInvoker对象3.5.谁来执行扫描注册3.6. 注册ServerMeth…

使用pyinstaller打包pyqt的程序,运行后提示ModuleNotFoundError: No module named ‘Ui_main‘

环境&#xff1a;windowpython3.9pyqt6 使用pyqt UI编辑器生成了main.ui &#xff0c;main.ui编译成了Ui_main.py main.py 使用当前目录下的Ui_main.py。 打包过程没报错&#xff0c;运行报错。 错误如下: 解决方法&#xff1a;pyinstaller -Fw main.py --paths. 使…