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

news/2024/12/21 22:07:27/

   介绍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/news/1557026.html

相关文章

Sui 基金会任命 Christian Thompson 为新任负责人

Sui 基金会是专注于推动 Sui 蓬勃发展的生态增长与采用的机构。近日,基金会宣布任命 Christian Thompson 为新任负责人。在 Sui 主网发布的开创性一年里,Sui 凭借其无与伦比的速度、可扩展性和效率,迅速崛起为领先的 Layer 1 区块链之一&…

Ubuntu搭建ES8集群+加密通讯+https访问

目录 写在前面 一、前期准备 1. 创建用户和用户组 2. 修改limits.conf文件 3. 关闭操作系统swap功能 4. 调整mmap上限 二、安装ES 1.下载ES 2.配置集群间安全访问证书密钥 3.配置elasticsearch.yml 4.修改jvm.options 5.启动ES服务 6.修改密码 7.启用外部ht…

基底展开(Expansion in a Basis):概念、推导与应用 (中英双语)

参考:Introduction to Applied Linear Algebra – Vectors, Matrices, and Least Squares Stephen Boyd and Lieven Vandenberghe Website: https://web.stanford.edu/~boyd/vmls/ 基底展开(Expansion in a Basis):概念、推导与…

JS实现在线预览HTML文件

要在JavaScript中直接预览一个在线的HTML文件,可以采用以下几种方法: 使用iframe标签 这是最简单的方法之一。你可以创建一个iframe元素,并设置其src属性为在线HTML文件的URL。示例代码:const iframe document.createElement(i…

数据分析实战—鸢尾花数据分类

1.实战内容 (1) 加载鸢尾花数据集(iris.txt)并存到iris_df中,使用seaborn.lmplot寻找class(种类)项中的异常值,其他异常值也同时处理 。 import pandas as pd from sklearn.datasets import load_iris pd.set_option(display.max_columns, N…

【故障处理系列--gitlab的CI流水线下载安装包提示报错】

故障现象: 前端同事一直向我反映使用alpine-node系列的镜像,安装包报错故障原因 在CI文件上配置的代理没有生效,导致流水线无法在gitlab-runner上拉取https://registry.npmmirror.com仓库软件包 后来查资料提示说,在gitlab的CI文…

SQL 外联结与全联结的使用详解

在数据库查询中,联结操作是用于从多个表中获取相关数据的关键技术。SQL 提供了多种类型的联结(Join)方式,其中外联结(Outer Join)和全联结(Full Outer Join)是常用的两种类型。它们不…

android opencv导入进行编译

1、直接新建module进行导入,选择opencv的sdk 导入module模式,选择下载好的sdk,修改module name为OpenCV490。 有报错直接解决报错,没报错直接运行成功。 2、解决错误,同步成功 一般报错是gradle版本问题较多。我的报…