Compliance Operator 开发者指南

版本: 1.0.0
更新日期: 2026-06-08 适用对象: 参与 Compliance Operator 开发的贡献者

项目结构

compliance-operator/
  |-- cmd/
  |     |-- manager/
  |           |-- main.go                  # Operator 入口(含 manager 和 report 子命令)
  |
  |-- api/
  |     |-- v1alpha1/
  |           |-- compliancescan_types.go            # ComplianceScan CRD 类型定义
  |           |-- compliancescanresult_types.go      # ComplianceScanResult CRD 类型定义(聚合摘要)
  |           |-- compliancescannoderesult_types.go  # ComplianceScanNodeResult CRD 类型定义(单节点详细结果)
  |           |-- groupversion_info.go               # API Group 注册
  |           |-- zz_generated.deepcopy.go           # 自动生成的 DeepCopy 方法
  |
  |-- controllers/
  |     |-- compliancescan_controller.go        # 主 Reconciler
  |     |-- scan_job_builder.go                 # Job Spec 构造器
  |     |-- result_collector.go                 # 结果回收逻辑
  |     |-- history_manager.go                  # 历史记录管理(淘汰策略)
  |     |-- schedule_manager.go                 # 定时扫描调度
  |
  |-- pkg/
  |     |-- scanner/
  |     |     |-- interface.go                  # Scanner 接口定义
  |     |     |-- kubebench/
  |     |     |     |-- parser.go               # kube-bench JSON 输出解析
  |     |     |-- openscap/
  |     |           |-- parser.go               # OpenSCAP XCCDF Results XML 解析
  |     |
  |     |-- report/
  |     |     |-- knowledge.go                  # 规则知识库(KnowledgeBase)
  |     |     |-- cis_loader.go                 # CIS Benchmark 规则加载(go:embed YAML)
  |     |     |-- stig_loader.go                # STIG 规则加载(go:embed XCCDF XML)
  |     |     |-- generator.go                  # HTML 报告生成
  |     |     |-- template.go                   # HTML 模板定义
  |     |
  |     |-- unified/
  |     |     |-- model.go                      # UnifiedCheckResult 模型
  |     |
  |     |-- util/
  |           |-- node.go                       # 节点选择工具
  |           |-- scanid.go                     # scanID 生成
  |
  |-- config/
  |     |-- crd/
  |     |     |-- bases/                        # CRD YAML(3 个 CRD 定义)
  |     |-- rbac/
  |     |     |-- role.yaml                     # Operator ClusterRole
  |     |     |-- scan_job_role.yaml            # Scan Job ClusterRole
  |     |     |-- role_binding.yaml             # ClusterRoleBinding
  |     |     |-- service_account.yaml          # ServiceAccount
  |     |-- manager/
  |     |     |-- manager.yaml                  # Deployment
  |     |-- samples/
  |           |-- compliance_v1alpha1_compliancescan_kubebench.yaml
  |           |-- compliance_v1alpha1_compliancescan_openscap.yaml
  |
  |-- charts/
  |     |-- compliance-operator/
  |           |-- Chart.yaml
  |           |-- values.yaml
  |           |-- crds/                         # CRD YAML(Helm 安装时自动加载)
  |           |-- templates/                    # 部署模板(含 deployment, RBAC, service 等)
  |
  |-- docs/
  |     |-- detailed-design.md                  # 本文档
  |     |-- user_guide.md                       # 用户指南
  |     |-- developer_guide.md                  # 开发者指南
  |     |-- diagrams/                           # 架构图
  |
  |-- build/
  |     |-- Dockerfile                          # Operator 镜像构建文件
  |
  |-- hack/
  |     |-- boilerplate.go.txt                  # Kubebuilder 代码头模板
  |
  |-- Makefile
  |-- go.mod
  |-- go.sum

本地开发

# 克隆项目
git clone https://gitcode.com/openFuyao/compliance-operator.git
cd compliance-operator

# 构建
make build

# 运行测试
make test

# 生成 CRD
make manifests

# 本地运行(需要 kubeconfig)
make run

运行测试

# 运行所有测试
go test ./... -v

# 运行测试并生成覆盖率报告
go test ./... -coverprofile=coverage.out

# 查看覆盖率
go tool cover -html=coverage.out