PyConChina2022-北京-用Python给Kubernetes写个自定义控制器-张晋涛
                
  
              1.76 MB
             
              17 页
               
              0 评论
              
| 上传 | 格式 | 评分 | 
|---|---|---|
copilot  | .pdf  | 3  | 
| 摘要 | ||
本文档介绍了如何使用Python为Kubernetes开发自定义准入控制器。讲解了Kubernetes请求处理流程、准入控制器的功能以及分类,包括静态准入控制器和动态准入控制器。动态准入控制器利用Kubernetes提供的MutatingAdmissionWebhook和ValidatingAdmissionWebhook扩展点,允许用户自行开发组件并接收HTTP回调。演讲还比较了其他实现方案,如OPA/Gatekeeper和Kyverno,并介绍了如何利用v1.16以上版本的v1 API构建Web服务器并配置AdmissionConfiguration资源。  | ||
| AI总结 | ||
本文是PyConChina2022北京站主题演讲《用Python给Kubernetes写个自定义控制器》的总结,以下是核心内容:
---
### 讲座概况
- **主讲人**:张晋涛  
  Apache APISIX PMC成员,Kubernetes Ingress NGINX维护者,Microsoft MVP,『K8S生态周报』发起人与维护者。  
  联系方式:GitHub @tao12345666333,邮箱 zhangjintao@apache.org。  
- **Agenda**:  
  1. Kubernetes请求处理流程  
  2. 什么是准入控制器  
  3. 用Python实现准入控制器  
  4. 与其他方案对比  
---
### 为什么需要准入控制器?
1. **Kubernetes的复杂性**:Kubernetes中存在一系列复杂的校验和事务逻辑。  
2. **用户需求多样化**:  
   - **安全合规**:如镜像源检查、启动用户验证等;  
   - **应用治理**:如资源配额设置、Label标识等。  
3. **其他功能需求**:包括认证、授权、对象Schema校验等。  
---
### 什么是准入控制器?
准入控制器在Kubernetes中扮演了关键角色,主要分为两类:  
1. **静态准入控制器**:  
   - 固定在Kubernetes代码中,不可动态调整。  
2. **动态准入控制器**:  
   - 基于Kubernetes的`MutatingAdmissionWebhook`和`ValidatingAdmissionWebhook`扩展点,用户可自行开发组件,并通过HTTP回调接收请求。  
   - **功能**:  
     - `Mutating Admission`:可修改请求内容;  
     - `Validating Admission`:仅可验证请求内容;  
     - 支持对`etcd`持久化存储的操作。  
---
### 如何实现动态准入控制器?
1. **版本要求**:建议使用Kubernetes v1.16以上版本,采用v1 API。  
2. **实现步骤**:  
   - **构建Web Server**:接收Kubernetes的请求并作出响应;  
   - **配置Kubernetes资源**:创建`AdmissionConfiguration`或`ValidatingWebhookConfiguration`资源,配置回调地址。  
3. **代码实现**:  
   - GitHub代码仓库地址:[https://github.com/tao12345666333/py-admission-controller](https://github.com/tao12345666333/py-admission-controller)。  
   - 请求处理逻辑:  
     - `uid`从请求中复制;  
     - `allowed`字段决定是否允许请求;  
     - 响应中可包含`status`或`patch`等内容。  
---
### 其他方案对比
除了动态准入控制器,还有其他实现方式:  
1. **OPA/Gatekeeper**:基于Open Policy Agent(OPA)实现策略管理。  
2. **Kyverno**:为Kubernetes提供了增强的策略管理功能。  
3. **Kubernetes v1.26 ValidatingAdmissionPolicy**:新特性,提供本地策略管理功能。  
---
### 总结
通过本次讲座,张晋涛详细介绍了Kubernetes准入控制器的功能与实现方式,特别是用Python开发动态准入控制器的具体步骤与代码实现,并对其他方案进行了对比。内容涵盖了Kubernetes架构、准入控制器的作用、实现方法及场景应用,为开发者提供了实际运用Kubernetes扩展能力的参考。  | ||
 P1 
 P2 
 P3 
 P4 
 P5 
 P6 
 P7 
 P8 
 P9 
 P10 
 P11 
 P12 
下载文档到本地,方便使用
    
                - 可预览页数已用完,剩余
                5 页请下载阅读 -
              
文档评分 
  












