用途
Kubernetes Manifest Generator 用于生成生产级 Kubernetes 清单(manifest),涵盖 Deployment、Service、ConfigMap、Secret、Ingress、HPA 等资源,并遵循安全与可扩展性最佳实践。当用户请求生成 Kubernetes 相关配置时使用。
核心工作流
- 定义资源:识别所需的 K8s 对象
- 创建命名空间:隔离应用资源
- 配置部署:Pod、副本数、资源
- 设置服务:网络与负载均衡
- 添加 Ingress:外部访问路由
- 配置扩缩容:HPA 与资源限制
主要能力
该技能可生成以下类型的清单:
- Deployment:包含副本数、滚动更新策略(maxSurge/maxUnavailable)、安全上下文(runAsNonRoot、runAsUser、fsGroup)、容器端口、环境变量(来自 Secret 与 ConfigMap)、资源 requests/limits、liveness/readiness 探针、容器级安全上下文(禁止提权、只读根文件系统、丢弃全部 capabilities)、卷挂载、Pod 反亲和性、拓扑分布约束。
- Service:ClusterIP 类型服务,以及用于 StatefulSet 的 Headless Service(clusterIP: None)。
- Ingress:配置 nginx ingress class、cert-manager 集群签发者、SSL 重定向、速率限制、代理 body 大小与读取超时、TLS 主机与密钥、多主机路由规则。
- ConfigMap 与 Secret:普通 ConfigMap、Opaque Secret,以及使用 external-secrets operator 的 ExternalSecret(含刷新间隔、SecretStore 引用、目标与远程引用)。
- Horizontal Pod Autoscaler:基于 CPU、内存利用率以及 Pods 自定义指标(如 http_requests_per_second)的扩缩容,并配置 scaleDown/scaleUp 行为策略。
- Pod Disruption Budget:设置 minAvailable 与选择器。
- Network Policy:定义 Ingress 与 Egress 规则,限制 Pod 通信,包括命名空间选择器、Pod 选择器、端口与 ipBlock 例外。
- Service Account 与 RBAC:ServiceAccount、Role(对 configmaps、secrets、pods 的最小权限)、RoleBinding。
- StatefulSet:用于有状态应用,包含 serviceName、副本数、volumeClaimTemplates(访问模式、storageClassName、存储请求)。
- CronJob:配置调度表达式、时区、并发策略、历史保留数、backoffLimit、activeDeadlineSeconds、重启策略与资源限制。
- Kustomize 结构:base 与 overlays(如 production)的 kustomization.yaml,包含 resources、commonLabels、namespace、replicas、images、patches。
使用方式
该技能以生成清单文件的方式工作,输出 YAML 配置。示例中文件按 k8s/ 目录组织,如 k8s/deployment.yaml、k8s/service.yaml、k8s/ingress.yaml、k8s/configmap.yaml、k8s/secret.yaml、k8s/hpa.yaml、k8s/pdb.yaml、k8s/network-policy.yaml、k8s/rbac.yaml、k8s/statefulset.yaml、k8s/cronjob.yaml,以及 Kustomize 的 base 与 overlays 目录结构。
最佳实践
- 资源限制:始终设置 requests 与 limits
- 健康探针:配置 liveness 与 readiness
- 安全上下文:以非 root 运行,丢弃 capabilities
- Pod 反亲和性:跨节点/区域分布
- 网络策略:限制 Pod 通信
- 密钥管理:使用 external secrets operator
- 滚动更新:配置 maxSurge 与 maxUnavailable
- PDB:确保更新期间的最低可用性
输出检查清单
每个 Kubernetes 部署应包含:
- 命名空间隔离
- 带资源限制的 Deployment
- 健康探针(liveness/readiness)
- 安全上下文(非 root、只读文件系统)
- 用于网络的服务
- 带 TLS 的 Ingress
- 用于配置的 ConfigMap
- Secret(优先使用外部密钥)
- 用于自动扩缩的 HPA
- 用于可用性的 PDB
- 网络策略
- 带最小 RBAC 的 ServiceAccount
适用场景
适用于需要快速生成符合最佳实践的 Kubernetes 部署配置的场景,包括无状态应用、有状态应用、定时任务、多环境(通过 Kustomize overlays)等。
限制
资料未提供该技能的具体安装命令、运行环境要求、收费方式、平台支持范围或效果保证等信息。