带你读《云原生应用开发:Operator原理与实践》——2.3.1 Kubernetes API 访问控制

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
访问控制,不限时长
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 带你读《云原生应用开发:Operator原理与实践》——2.3.1 Kubernetes API 访问控制

2.3  Kube-APIServer 介绍


Kube-APIServer 组件负责对外暴露资源的 API,也包括自定义资源。外部访问和操作 Kubernetes 资源会经过哪些流程呢?下面介绍 Kubernetes API 的访问控制。


2.3.1 Kubernetes API 访问控制

在 Kubernetes 集群中,Kube-APIServer 是控制面的一个组件,它对外暴露 Kubernetes的 API,通常这个服务使用 6443 端口。集群控制面之外的组件要访问这个服务有两种情况。

(1)用户可以使用 Kubectl、客户端库或 REST 风格的请求去访问 Kube-APIServer。

(2)用户运行在集群中的服务使用 ServiceAccount 去访问 Kube-APIServer。一个请求到达 API 要经过多个阶段,如图 2-9 所示。

image.png

图 2-9 Kubernetes API 请求处理步骤

1. 认证

如图 2-9 中的步骤①,客户端(Kubectl 工具、REST 请求或集群中的 Pod 等)在集群内应用访问 Kube-APIServer 的 HTTP 请求首先会进入认证这步。我们在创建集群时可以配置一个或者多个认证模块。

认证模块的工作过程:请求会依次通过每个认证模块,只要有一个模块通过则进入下一步。如果所有的认证模块都没有通过,就会给客户端返回一个 401 的 HTTP 状态码。认证通过后会解析认证信息中对应的用户,这个用户会作为后续步骤决策的依据。

需要注意的是,虽然 Kubernetes 通过用户来对访问 Kube-APIServer 的请求进行访问控制决策和访问日志记录,但 Kubernetes 中没有用户这个对象,也没有在 API 中存储用户和用户相关的信息。

2. 鉴权

图 2-9 中的步骤②是根据上一步的用户对请求进行鉴权操作。鉴权过程是判断当前用户是否有权限去操作 HTTP 请求中的资源对象,判断的依据是存储在集群中的策略声明。Kubernetes 中支持多种鉴权模块,比如 ABAC、RBAC 和 WebHook。鉴权模块是在创建集群时配置的,如果配置了多种鉴权模块,Kubernetes 会检查每个模块。如果有一个模块通过鉴权,那么该请求鉴权通过;如果所有的模块都拒绝了该请求,就会给客户端返回一个 403 的 HTTP 状态码。

3. 准入控制

请求经过认证和鉴权之后会被准入控制器拦截,如图 2-9 中的步骤③所示,准入控制器可以修改或拒绝请求。准入控制器只对创建、修改或删除对象的请求起作用,对只读请求不起作用。当配置了多个准入控制器时,会按照顺序进行调用。与认证或鉴权模块不同的是,如果有任何一个准入控制器拒绝了请求,那么请求会立马被其他准入控制器拒绝。除了拒绝请求之外,准入控制器还可以为请求中的字段设置一些默认值。

一旦请求通过所有的准入控制器,就会使用相应的验证逻辑对 API 对象进行验证,之后会将对象写入存储中,即图 2-9 中的步骤④。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
5天前
|
Cloud Native API
微服务引擎 MSE 及云原生 API 网关 2024 年 9 月产品动态
微服务引擎 MSE 及云原生 API 网关 2024 年 9 月产品动态。
|
15天前
|
Kubernetes Cloud Native 云计算
云原生入门:从Docker到Kubernetes的旅程
【10月更文挑战第2天】本文将带你走进云原生的世界,从基础的Docker容器技术开始,逐步深入到Kubernetes集群管理。我们将通过实际代码示例,探索如何利用这些工具构建、部署和管理现代云应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的知识和技能,让你在云原生领域迈出坚实的一步。
56 5
|
1天前
|
Kubernetes Cloud Native 开发者
探秘云原生计算:Kubernetes与Docker的协同进化
在这个快节奏的数字时代,云原生技术以其灵活性和可扩展性成为了开发者们的新宠。本文将带你深入了解Kubernetes和Docker如何共同塑造现代云计算的架构,以及它们如何帮助企业构建更加敏捷和高效的IT基础设施。
|
21天前
|
Kubernetes Cloud Native 云计算
云原生之旅:Kubernetes 集群的搭建与实践
【8月更文挑战第67天】在云原生技术日益成为IT行业焦点的今天,掌握Kubernetes已成为每个软件工程师必备的技能。本文将通过浅显易懂的语言和实际代码示例,引导你从零开始搭建一个Kubernetes集群,并探索其核心概念。无论你是初学者还是希望巩固知识的开发者,这篇文章都将为你打开一扇通往云原生世界的大门。
90 17
|
10天前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 09 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
9天前
|
Kubernetes 安全 Cloud Native
云上攻防-云原生篇&K8s安全-Kubelet未授权访问、API Server未授权访问
本文介绍了云原生环境下Kubernetes集群的安全问题及攻击方法。首先概述了云环境下的新型攻击路径,如通过虚拟机攻击云管理平台、容器逃逸控制宿主机等。接着详细解释了Kubernetes集群架构,并列举了常见组件的默认端口及其安全隐患。文章通过具体案例演示了API Server 8080和6443端口未授权访问的攻击过程,以及Kubelet 10250端口未授权访问的利用方法,展示了如何通过这些漏洞实现权限提升和横向渗透。
云上攻防-云原生篇&K8s安全-Kubelet未授权访问、API Server未授权访问
|
13天前
|
Kubernetes Cloud Native Docker
云原生入门:Kubernetes和Docker的协同之旅
【10月更文挑战第4天】在这篇文章中,我们将通过一次虚拟的旅行来探索云原生技术的核心——Kubernetes和Docker。就像乘坐一艘由Docker驱动的小船启航,随着波浪(代码示例)起伏,最终抵达由Kubernetes指挥的宏伟舰队。这不仅是一段技术上的旅程,也是理解现代云架构如何支撑数字世界的冒险。让我们扬帆起航,一探究竟!
|
19天前
|
Kubernetes Cloud Native 云计算
云原生时代的技术演进:Kubernetes与微服务架构的完美融合
随着云计算技术的飞速发展,云原生概念逐渐深入人心。本文将深入探讨云原生技术的核心——Kubernetes,以及它如何与微服务架构相结合,共同推动现代软件架构的创新与发展。文章不仅剖析了Kubernetes的基本工作原理,还通过实际案例展示了其在微服务部署和管理中的应用,为读者提供了一条清晰的云原生技术应用路径。
36 2
|
23天前
|
Kubernetes Cloud Native 持续交付
云原生之旅:Docker容器化与Kubernetes集群管理
【9月更文挑战第33天】在数字化转型的浪潮中,云原生技术如同一艘航船,带领企业乘风破浪。本篇文章将作为你的航海指南,从Docker容器化的基础讲起,直至Kubernetes集群的高级管理,我们将一起探索云原生的奥秘。你将学习到如何封装应用、实现环境隔离,以及如何在Kubernetes集群中部署、监控和扩展你的服务。让我们启航,驶向灵活、可伸缩的云原生未来。
|
26天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker与Kubernetes入门
【9月更文挑战第30天】在云计算的浪潮中,云原生技术正以前所未有的速度重塑着软件开发和运维领域。本文将通过深入浅出的方式,带你了解云原生的核心组件——Docker容器和Kubernetes集群,并探索它们如何助力现代应用的构建、部署和管理。从Docker的基本命令到Kubernetes的资源调度,我们将一起开启云原生技术的奇妙之旅。