d21d9a92d3
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.
108 lines
4.7 KiB
JSON
108 lines
4.7 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/schema#",
|
|
"description": "VMStaticScrape defines static targets configuration for scraping.",
|
|
"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": "VMStaticScrapeSpec defines the desired state of VMStaticScrape.",
|
|
"required": [
|
|
"targetEndpoints"
|
|
],
|
|
"type": "object",
|
|
"x-kubernetes-preserve-unknown-fields": true
|
|
},
|
|
"status": {
|
|
"description": "ScrapeObjectStatus defines the observed state of ScrapeObjects",
|
|
"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"
|
|
}
|
|
},
|
|
"type": "object"
|
|
}
|