93581bfde2
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 - add generate-schemas step to kubeconform woodpecker pipeline so schemas
26 lines
672 B
Makefile
26 lines
672 B
Makefile
.PHONY: build clean
|
|
|
|
# Build a kustomization path to manifests directory
|
|
# Usage: make build clusters/au-syd1/bootstrap
|
|
build:
|
|
@mkdir -p manifests/$(filter-out $@,$(MAKECMDGOALS))
|
|
@kustomize build --enable-helm $(filter-out $@,$(MAKECMDGOALS)) --output manifests/$(filter-out $@,$(MAKECMDGOALS))
|
|
|
|
# kubeconform
|
|
kubeconform:
|
|
@ci/validate-apps.sh && \
|
|
ci/validate-clusters.sh
|
|
|
|
# Generate JSON schemas from CRD definitions for kubeconform
|
|
# Run when CRD versions change, then commit ci/crd-schemas/
|
|
generate-schemas:
|
|
@ci/generate-crd-schemas.sh
|
|
|
|
# Clean all generated manifests
|
|
clean:
|
|
@rm -rf manifests/
|
|
|
|
# Allow any argument after build to be treated as a path
|
|
%:
|
|
@:
|