通过Admission Webhook限制Namespace下Nodeport Service的端口范围

背景

要给每个namspce分配Nodeport 端口范围, 不允许使用范围之外的端口. 实现对平台 nodeport 端口的统一管理

方案

Kubernetes本身不支持直接限制NodePort的范围。可以通过创建一个Admission Webhook来拦截Service创建请求,并在其端口字段中进行检查和限制。

以下是创建Admission Webhook的大致步骤:

创建一个Admission Webhook的服务。

实现一个Admission Controller,用于检查Service创建请求。

配置MutatingWebhookConfiguration和ValidatingWebhookConfiguration,以使Admission Controller能够拦截Service创建事件。

以下是一个简化的Admission Controller的示例代码,用于检查Service的NodePort范围:

import ("net/http""github.com/gin-gonic/gin"admissionv1 "k8s.io/api/admission/v1"corev1 "k8s.io/api/core/v1"
)func ServiceWebhook(c *gin.Context) {var admissionResponse = admissionv1.AdmissionResponse{}var admissionRequest admissionv1.AdmissionRequest// 解析请求体if err := c.ShouldBindJSON(&admissionRequest); err != nil {// 处理错误}// 确保是创建Service的请求if admissionRequest.Resource.Resource == "services" && admissionRequest.Operation == admissionv1.Create {// 反序列化Service对象var service corev1.Serviceif err := json.Unmarshal(admissionRequest.Object.Raw, &service); err != nil {// 处理错误}// 检查NodePort范围if service.Spec.Type == corev1.ServiceTypeNodePort {for _, p := range service.Spec.Ports {if p.NodePort < 30000 || p.NodePort > 32767 {admissionResponse.Allowed = falseadmissionResponse.Result = &metav1.Status{Message: "NodePort port out of range. Must be between 30000-32767",}break}}}}// 返回响应c.JSON(http.StatusOK, admissionResponse)
}

在这个示例中,我们定义了一个Webhook,它在Service创建时检查NodePort的值。如果NodePort的值不在30000到32767的范围内,Webhook将拒绝该请求。

注意还需要配置MutatingWebhookConfiguration和ValidatingWebhookConfiguration。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/480.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MYSQL中如何插入、更新和删除数据

目录 一、插入(INSERT) 1.插入一行 2.插入多行 3.插入检索出的数据 二、更新(UPDATE) 三、删除(DELETE) 四、更新和删除使用时需要注意&#xff1a; *本节总结于图灵程序设计丛书&#xff0c;数据库系列——《MySQL必知必会》 一、插入(INSERT) 1.插入一行 ①INSERT I…

新手入门:大语言模型训练指南

在这个信息爆炸的时代&#xff0c;人工智能技术正以前所未有的速度渗透到我们生活的方方面面。从智能手机上的语音助手到自动驾驶汽车&#xff0c;AI的应用无处不在。而在这些令人惊叹的技术背后&#xff0c;大语言模型&#xff08;LLM&#xff09;扮演着至关重要的角色。它们不…

国外问卷调查如何做?需要借助海外住宅IP吗?

在数字化时代&#xff0c;国外问卷调查不仅是了解市场需求的重要手段&#xff0c;还成为了一项能够赚取额外收入的方式。随着全球范围内消费者行为的多样化&#xff0c;各类企业和机构越来越需要了解不同地区的用户观点和偏好&#xff0c;以优化产品和服务。 一、国外问卷调查…

C++ 比较三个数的大小

int maxValue,minValue; maxValue xSize > ySize ? xSize : ySize; maxValue maxValue > zSize ? maxValue : zSize;minValue xSize < ySize ? xSize : ySize; minValue minValue<zSize?minValue:zSize;int maxValue xSize > ySize ? xSize > zSize…

每日算法4.17

力扣287寻找重复数 给定一个包含 n 1 个整数的数组 nums &#xff0c;其数字都在 [1, n] 范围内&#xff08;包括 1 和 n&#xff09;&#xff0c;可知至少存在一个重复的整数。 假设 nums 只有 一个重复的整数 &#xff0c;返回 这个重复的数 。 你设计的解决方案必须 不修…

基于flink cdc技术,在不停机情况下完成新老系统数据迁移解决方案

1.业务场景及痛点描述 当前随着业务发展&#xff0c;由于公司是做海外业务&#xff0c;公司前几年搭建了官网商城&#xff0c;并积累了一定的用户量&#xff0c;然后去年&#xff0c;由于公司发展智能机器人业务&#xff0c;开发了手机APP&#xff0c;供用户控制机器人&#xf…

设计模式(工厂方法-Factory Method)结构|原理|优缺点|场景|示例

目录 设计模式&#xff08;分类&#xff09; 设计模式&#xff08;六大原则&#xff09; 创建型 工厂方法 抽象工厂模式 单例模式 建造者模式 设计模式中的工厂方法&#xff08;Factory Method&#xff09;是一种创建型模式&#xff…

我与C++的爱恋:日期计算器

​ ​ &#x1f525;个人主页&#xff1a;guoguoqiang. &#x1f525;专栏&#xff1a;我与C的爱恋 朋友们大家好啊&#xff0c;在我们学习了默认成员函数后&#xff0c;我们通过上述内容&#xff0c;来实现一个简易的日期计算器。 ​ ​ 头文件的声明 #pragma once #incl…

面试经典-Redis数据库的数据倾斜

一、定义 对于集群系统&#xff0c;一般缓存是分布式的&#xff0c;即不同节点负责一定范围的缓存数据。我们把缓存数据分散度不够&#xff0c;导致大量的缓存数据集中到了一台或者几台服务节点上&#xff0c;称为数据倾斜。一般来说数据倾斜是由于负载均衡实施的效果不好引起…

K8S调度下的ingress-controller集群的实现以及nginx配置

# 22、K8S调度下的ingress-controller集群的实现以及nginx配置 目标&#xff1a; 1. 实现ingress-controller的集群部署 实现方法&#xff1a; 1. 为ingress-controller 规划两个节点 2.将这两个节点 打上自定义的 label 3.修改yaml文件&#xff0c;并重新创建 ingress-co…

签约棒球自由球员算法设计

签约棒球自由球员算法设计 1. 问题描述2. 算法设计2.1 动态规划2.2 状态转移方程2.3 初始化2.4 最终结果 3. 算法实现3.1 伪代码3.2 C代码示例 1. 问题描述 假设你是一支棒球大联盟球队的总经理。在赛季休季期间&#xff0c;你需要签入一些自由球员。球队老板给你的预算为 X美…

攻防世界fileclude题解

攻防世界fileclude题解 ​​ 题目要求file1和file2参数不能为空 且file2这个文件内容值为hello ctf&#xff0c;用php://input 然后POST体内输入hello ctf即可满足这个if条件 满足这个条件后就会包含file1变量所指定的那个文件。用php伪协议来跨目录包含一下flag.php文件就可以…

人工智能培训老师叶梓:如何通过Prompt优化提升GPT-4性能

在人工智能领域&#xff0c;尤其是自然语言处理&#xff08;NLP&#xff09;中&#xff0c;Prompt工程是一种通过精心设计的提示&#xff08;prompt&#xff09;来引导模型生成期望输出的技术。最近&#xff0c;微软的研究团队通过Prompt优化策略&#xff0c;在医疗领域取得了显…

Redis系列1:深刻理解高性能Redis的本质

1 背景 分布式系统绕不开的核心之一的就是数据缓存&#xff0c;有了缓存的支撑&#xff0c;系统的整体吞吐量会有很大的提升。通过使用缓存&#xff0c;我们把频繁查询的数据由磁盘调度到缓存中&#xff0c;保证数据的高效率读写。 当然&#xff0c;除了在内存内运行还远远不够…

K3S 证书有效期和续签问题

本文使用k3s版本&#xff1a;k3s version v1.24.17k3s1 (026bb0ec) 默认安装情况下&#xff0c;ca证书有效期是10年&#xff0c;普通证书有效期是1年。 普通证书 k3s官网描述&#xff1a;K3s 客户端和服务器证书自颁发日起 365 天内有效。每次启动 K3s 时&#xff0c;已过期或…

linux 云计算平台基本环境(知识准备篇)

为了更多的了解云计算平台&#xff0c;结合云计算和linux的知识写了一篇云计算的介绍和汇总。 文章目录 前言1. centos的软件管理1.1 yum软件包管理1.1.1 yum命令语法&#xff1a;1.1.2 安装软件包的步骤1.1.3 yum源 2. 主机名管理与域名解析3. centos的防火墙管理4. openstack…

java锁介绍

乐观锁 乐观地认为并发访问不会造成数据冲突&#xff0c;只在更新时检查是否有冲突。乐观锁和CAS的关系可以用“乐观锁是一种思想&#xff0c;CAS是一种具体的实现”来理解。 当使用CAS操作修改数据时&#xff0c;如果版本号不匹配或者其他线程已经修改了要操作的数据&#x…

面试题集中营—分布式共识算法

分布式共识算法目标 分布式主要就是为了解决单点故障。一开始只有一个服务节点提供服务&#xff0c;如下图所示。那么如果服务节点挂了&#xff0c;对不起等着吧。 为了服务的高可用性&#xff0c;我们一般都会多引入几个副节点当备份&#xff0c;当服务节点挂了&#xff0c;就…

记一次Mac(M1)交叉编译Windows系统的过程

做了一个导出文件项目来实践学习GO的成果&#xff0c;开发完成后&#xff0c;在本地调试环境一切正常&#xff0c;打包到Windows测试出现了报错Error: Binary was compiled with CGO_ENABLED0, go-sqlite3 requires cgo to work. This is a stub。后研究得知&#xff0c;gorm的…

如何逃过极域的管控

本文由Jzwalliser原创&#xff0c;发布在CSDN平台上&#xff0c;遵循CC 4.0 BY-SA协议。 因此&#xff0c;若需转载/引用本文&#xff0c;请注明作者并附原文链接&#xff0c;且禁止删除/修改本段文字。 违者必究&#xff0c;谢谢配合。 个人主页&#xff1a;blog.csdn.net/jzw…