Kubernetes CRDs-catalog完整指南:一站式CRD JSON Schema资源库
【免费下载链接】CRDs-catalogPopular Kubernetes CRDs (CustomResourceDefinition) in JSON schema format.项目地址: https://gitcode.com/gh_mirrors/cr/CRDs-catalog
Kubernetes CRDs-catalog项目是一个集中式资源库,汇集了数百个流行的Kubernetes自定义资源定义(CRDs)的JSON Schema格式文件。这个强大的工具库为开发者和运维团队提供了一站式解决方案,用于验证Kubernetes自定义资源的配置,实现"左移"(shift-left)的DevOps实践。
📊 为什么需要CRD验证工具?
在Kubernetes生态系统中,自定义资源定义(CRDs)允许用户扩展Kubernetes API,创建自定义资源类型。然而,随着CRDs的广泛应用,配置错误成为常见问题。传统的kubectl --dry-run验证需要访问集群,这在CI/CD流水线或本地开发环境中并不总是可行的。
Kubernetes CRDs-catalog解决了这一痛点,它提供了:
- 离线验证能力:无需集群访问即可验证CRD配置
- 标准化Schema:统一的JSON Schema格式
- 广泛兼容性:支持多种流行工具
🚀 快速开始使用CRDs-catalog
安装与配置
要开始使用这个强大的CRD JSON Schema资源库,您首先需要克隆项目:
git clone https://gitcode.com/gh_mirrors/cr/CRDs-catalog cd CRDs-catalog项目结构清晰,所有CRD Schema都按API组组织:
├── aadpodidentity.k8s.io/ │ ├── azureassignedidentity_v1.json │ ├── azureidentity_v1.json │ └── ... ├── cert-manager.io/ │ ├── certificate_v1.json │ ├── clusterissuer_v1.json │ └── ... ├── cilium.io/ │ ├── ciliumnetworkpolicy_v2.json │ └── ... └── ...支持的验证工具
1. Datree集成
Datree是一个强大的Kubernetes策略检查工具,内置支持CRDs-catalog:
datree test your-manifest.yaml2. Kubeconform配置
Kubeconform是专门用于Kubernetes资源配置验证的工具:
kubeconform -schema-location default \ -schema-location 'https://raw.githubusercontent.com/datreeio/CRDs-catalog/main/{{.Group}}/{{.ResourceKind}}_{{.ResourceAPIVersion}}.json' \ your-manifest.yaml3. VS Code智能提示
通过Red Hat YAML插件,在VS Code中获得完整的CRD智能提示和验证:
# yaml-language-server: $schema=https://datreeio.github.io/CRDs-catalog/cilium.io/ciliumnetworkpolicy_v2.json apiVersion: cilium.io/v2 kind: CiliumNetworkPolicy metadata: name: demo-policy spec: endpointSelector: matchLabels: app: myapp🔧 CRD提取器实用工具
项目内置的CRD提取器是真正的亮点!这个实用工具可以从您的Kubernetes集群中提取所有CRD并转换为JSON Schema格式。
一键提取CRDs
cd Utilities ./crd-extractor.sh该工具会自动:
- 检查Python3和kubectl是否安装
- 从集群提取CRD定义
- 转换为JSON Schema格式
- 生成可直接使用的验证文件
特定上下文提取
如果您有多个Kubernetes集群,可以指定上下文:
KUBECTL_CONTEXT=production ./crd-extractor.sh开发环境支持
项目支持多种开发环境:
- Devbox用户:
devbox run crd-extractor - Nix用户:
nix develop && ./crd-extractor.sh
📁 项目结构与组织
API组分类系统
CRDs-catalog采用清晰的目录结构组织数千个CRD Schema:
cert-manager.io/ ├── certificate_v1.json # 证书管理 ├── clusterissuer_v1.json # 集群签发者 └── issuer_v1.json # 签发者 cilium.io/ ├── ciliumnetworkpolicy_v2.json # 网络策略 ├── ciliumegressgatewaypolicy_v2.json └── ciliumclusterwidenetworkpolicy_v2.json postgresql.cnpg.io/ ├── cluster_v1.json # PostgreSQL集群 └── backup_v1.json # 备份配置版本管理策略
每个CRD Schema都包含完整的版本信息:
_v1.json- 稳定版本_v1alpha1.json- 实验性功能_v1beta1.json- 测试版本
🛠️ 实际应用场景
场景1:CI/CD流水线验证
在GitHub Actions中集成CRD验证:
name: Validate Kubernetes Manifests on: [push] jobs: validate: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Validate with Kubeconform run: | kubeconform -schema-location default \ -schema-location 'https://raw.githubusercontent.com/datreeio/CRDs-catalog/main/{{.Group}}/{{.ResourceKind}}_{{.ResourceAPIVersion}}.json' \ manifests/场景2:本地开发验证
创建本地验证脚本validate.sh:
#!/bin/bash # 验证所有Kubernetes清单文件 for file in manifests/*.yaml; do echo "Validating $file..." kubeconform -schema-location default \ -schema-location 'https://raw.githubusercontent.com/datreeio/CRDs-catalog/main/{{.Group}}/{{.ResourceKind}}_{{.ResourceAPIVersion}}.json' \ "$file" done场景3:团队标准化
在团队项目中创建.vscode/settings.json:
{ "yaml.schemas": { "https://datreeio.github.io/CRDs-catalog/cert-manager.io/certificate_v1.json": "certificate.yaml", "https://datreeio.github.io/CRDs-catalog/istio.io/virtualservice_v1beta1.json": "virtualservice.yaml" } }🔍 高级使用技巧
批量注释工具
使用项目提供的annotate-yaml.py工具自动为YAML文件添加Schema注释:
python3 Utilities/annotate-yaml.py -i your-manifests/ -o annotated-manifests/离线环境部署
对于隔离网络环境,您可以:
- 下载完整的CRDs-catalog仓库
- 设置本地Schema服务器
- 配置工具使用本地路径:
kubeconform -schema-location default \ -schema-location 'file:///path/to/CRDs-catalog/{{.Group}}/{{.ResourceKind}}_{{.ResourceAPIVersion}}.json' \ manifests/自定义Schema扩展
如果遇到未包含的CRD,使用提取器生成:
# 从集群提取特定CRD kubectl get crd your-crd -o yaml > custom-crd.yaml # 转换为JSON Schema python3 Utilities/openapi2jsonschema.py custom-crd.yaml📈 性能优化建议
缓存策略
对于频繁使用的Schema,建议设置本地缓存:
# 下载常用Schema到本地 mkdir -p ~/.kube/schemas wget -P ~/.kube/schemas/ \ https://raw.githubusercontent.com/datreeio/CRDs-catalog/main/cert-manager.io/certificate_v1.json \ https://raw.githubusercontent.com/datreeio/CRDs-catalog/main/istio.io/virtualservice_v1beta1.json选择性验证
只验证需要的CRD类型,提高验证速度:
# 只验证特定API组的资源 kubeconform -skip-kinds Pod,Service \ -schema-location 'https://raw.githubusercontent.com/datreeio/CRDs-catalog/main/{{.Group}}/{{.ResourceKind}}_{{.ResourceAPIVersion}}.json' \ manifests/🤝 社区贡献指南
提交新的CRD Schema
如果您发现缺少某个流行的CRD Schema:
- 使用CRD提取器从您的集群提取
- 按照现有格式组织文件
- 提交Pull Request到相应目录
质量保证要求
所有提交的Schema必须:
- 通过JSON Schema验证
- 包含完整的元数据
- 遵循项目命名约定
- 通过基本的语法检查
测试验证
在提交前运行测试:
# 验证Schema格式 python3 -m json.tool your-schema.json > /dev/null && echo "Valid JSON" # 测试实际验证 kubeconform -schema-location 'file://./your-schema.json' test-manifest.yaml🎯 最佳实践总结
1. 逐步采用策略
从关键业务应用开始,逐步扩展到所有CRD验证。
2. 自动化集成
将验证集成到CI/CD流水线,确保每次提交都经过验证。
3. 团队培训
确保团队成员了解Schema验证的重要性。
4. 定期更新
定期更新本地Schema副本,获取最新的CRD定义。
5. 监控与告警
设置验证失败的告警,及时发现配置问题。
💡 常见问题解答
Q: CRDs-catalog支持哪些Kubernetes版本?A: 项目支持Kubernetes 1.16及以上版本的所有CRD。
Q: 如何处理私有CRD?A: 使用CRD提取器从您的集群生成私有CRD的Schema。
Q: 验证性能如何?A: 本地缓存后,验证速度与原生kubectl相当。
Q: 是否支持Windows?A: 主要工具支持Linux和macOS,Windows用户可以使用WSL。
Q: 如何报告问题?A: 在项目仓库中创建Issue,提供详细的复现步骤。
🌟 结语
Kubernetes CRDs-catalog项目为Kubernetes生态系统带来了革命性的改进。通过提供标准化的JSON Schema资源库,它使得CRD验证变得简单、可靠且高效。无论您是刚开始接触Kubernetes的新手,还是经验丰富的运维专家,这个工具都能显著提升您的工作流程质量。
记住:好的验证策略不仅能防止错误,还能加速开发流程。现在就开始使用CRDs-catalog,让您的Kubernetes配置更加健壮可靠!
提示:定期访问项目更新,获取最新的CRD Schema和支持的工具特性。
【免费下载链接】CRDs-catalogPopular Kubernetes CRDs (CustomResourceDefinition) in JSON schema format.项目地址: https://gitcode.com/gh_mirrors/cr/CRDs-catalog
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考