Files
argocd-apps/ci/crd-schemas/operator.victoriametrics.com/vmrule_v1beta1.json
T
unkinben d21d9a92d3 feat(ci): add CRD schema generation for kubeconform validation
Add scripts to extract OpenAPI v3 schemas from CRD definitions in all
kustomize overlays and write JSON schema files to ci/crd-schemas/ for
kubeconform validation. This allows kubeconform to validate CRD instances
(Elasticsearch, Kibana, CNPG Cluster, VictoriaMetrics, etc.) instead of
skipping or erroring on them.

- ci/generate-crd-schemas.py: extracts schemas from CRD YAML on stdin
- ci/generate-crd-schemas.sh: iterates overlays, pipes to Python script
- ci/validate-apps.sh, ci/validate-clusters.sh: add local schema-location fallback
- Makefile: add generate-schemas target
- ci/crd-schemas/: 67 generated schemas (cert-manager, cnpg, elastic, victoriametrics, argocd, gateway)
- .pre-commit-config.yaml: raise large-file limit to 2 MB for generated schemas

Run `make generate-schemas` to regenerate after CRD version changes.
2026-05-30 23:09:34 +10:00

111 lines
4.6 KiB
JSON

{
"$schema": "http://json-schema.org/schema#",
"description": "VMRule defines rule records for vmalert application",
"properties": {
"apiVersion": {
"description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
"type": "string"
},
"kind": {
"description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
"type": "string"
},
"metadata": {
"type": "object"
},
"spec": {
"description": "VMRuleSpec defines the desired state of VMRule",
"required": [
"groups"
],
"type": "object",
"x-kubernetes-preserve-unknown-fields": true
},
"status": {
"description": "VMRuleStatus defines the observed state of VMRule",
"properties": {
"conditions": {
"description": "Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\"",
"items": {
"description": "Condition defines status condition of the resource",
"properties": {
"lastTransitionTime": {
"description": "lastTransitionTime is the last time the condition transitioned from one status to another.",
"format": "date-time",
"type": "string"
},
"lastUpdateTime": {
"description": "LastUpdateTime is the last time of given type update.\nThis value is used for status TTL update and removal",
"format": "date-time",
"type": "string"
},
"message": {
"description": "message is a human readable message indicating details about the transition.\nThis may be an empty string.",
"maxLength": 32768,
"type": "string"
},
"observedGeneration": {
"description": "observedGeneration represents the .metadata.generation that the condition was set based upon.\nFor instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date\nwith respect to the current state of the instance.",
"format": "int64",
"minimum": 0,
"type": "integer"
},
"reason": {
"description": "reason contains a programmatic identifier indicating the reason for the condition's last transition.\nProducers of specific condition types may define expected values and meanings for this field,\nand whether the values are considered a guaranteed API.\nThe value should be a CamelCase string.\nThis field may not be empty.",
"maxLength": 1024,
"minLength": 1,
"type": "string"
},
"status": {
"description": "status of the condition, one of True, False, Unknown.",
"enum": [
"True",
"False",
"Unknown"
],
"type": "string"
},
"type": {
"description": "Type of condition in CamelCase or in name.namespace.resource.victoriametrics.com/CamelCase.",
"maxLength": 316,
"type": "string"
}
},
"required": [
"lastTransitionTime",
"lastUpdateTime",
"reason",
"status",
"type"
],
"type": "object"
},
"type": "array",
"x-kubernetes-list-map-keys": [
"type"
],
"x-kubernetes-list-type": "map"
},
"observedGeneration": {
"description": "ObservedGeneration defines current generation picked by operator for the\nreconcile",
"format": "int64",
"type": "integer"
},
"reason": {
"description": "Reason defines human readable error reason",
"type": "string"
},
"updateStatus": {
"description": "UpdateStatus defines a status for update rollout",
"type": "string"
}
},
"type": "object"
}
},
"required": [
"spec"
],
"type": "object"
}