CRDs-catalog icon indicating copy to clipboard operation
CRDs-catalog copied to clipboard

crd extractor misses some CRDs

Open gecube opened this issue 10 months ago • 2 comments

kubectl get crds | grep kms
aliases.kms.services.k8s.aws                            2023-07-18T05:50:49Z
grants.kms.services.k8s.aws                             2023-07-18T05:50:49Z
keys.kms.services.k8s.aws                               2023-07-18T05:50:49Z

then run crd extractor

./crd-extractor.sh 
JSON schema written to accessentry_v1alpha1.json
JSON schema written to acl_v1alpha1.json
JSON schema written to acraccesstoken_v1alpha1.json
JSON schema written to addon_v1alpha1.json
JSON schema written to adoptedresource_v1alpha1.json
JSON schema written to agent_v1alpha1.json
JSON schema written to alertmanagerconfig_v1alpha1.json
JSON schema written to alertmanager_v1.json
JSON schema written to alertprovider_v1beta1.json
JSON schema written to alert_v1beta1.json
JSON schema written to alert_v1beta2.json
JSON schema written to alert_v1beta3.json
JSON schema written to alias_v1alpha1.json
JSON schema written to alias_v1alpha1.json
JSON schema written to apmserver_v1.json
JSON schema written to apmserver_v1beta1.json
JSON schema written to apmserver_v1alpha1.json
JSON schema written to application_v1alpha1.json
JSON schema written to applicationset_v1alpha1.json
JSON schema written to appproject_v1alpha1.json
JSON schema written to application_v1alpha1.json
JSON schema written to authservice_v1.json
JSON schema written to authservice_v2.json
JSON schema written to authservice_v3alpha1.json
JSON schema written to automatedclusterdiscovery_v1alpha1.json
JSON schema written to backendlbpolicy_v1alpha2.json
JSON schema written to backend_v1alpha1.json
JSON schema written to backendtlspolicy_v1alpha3.json
JSON schema written to backendtrafficpolicy_v1alpha1.json
JSON schema written to backup_v1.json
JSON schema written to beat_v1beta1.json
JSON schema written to broker_v1alpha1.json
JSON schema written to bucket_v1alpha1.json
JSON schema written to bucket_v1.json
JSON schema written to bucket_v1beta1.json
JSON schema written to bucket_v1beta2.json
JSON schema written to cachecluster_v1alpha1.json
JSON schema written to cacheparametergroup_v1alpha1.json
JSON schema written to cachesubnetgroup_v1alpha1.json
JSON schema written to canary_v1beta1.json
JSON schema written to capacityreservation_v1alpha1.json
JSON schema written to capitemplate_v1alpha1.json
JSON schema written to capitemplate_v1alpha2.json
JSON schema written to certificaterequest_v1.json
JSON schema written to certificate_v1.json
JSON schema written to challenge_v1.json
JSON schema written to cleanuppolicy_v2.json
JSON schema written to cleanuppolicy_v2beta1.json
JSON schema written to clienttrafficpolicy_v1alpha1.json
JSON schema written to clusterbootstrapconfig_v1alpha1.json
JSON schema written to clustercleanuppolicy_v2.json
JSON schema written to clustercleanuppolicy_v2beta1.json
JSON schema written to clusterephemeralreport_v1.json
JSON schema written to clusterexternalsecret_v1beta1.json
JSON schema written to clusterimagecatalog_v1.json
JSON schema written to clusterissuer_v1.json
JSON schema written to clusterpolicy_v1.json
JSON schema written to clusterpolicy_v2beta1.json
JSON schema written to clusterpolicyreport_v1alpha2.json
JSON schema written to cluster_v1alpha1.json
JSON schema written to cluster_v1alpha1.json
JSON schema written to cluster_v1alpha1.json
JSON schema written to cluster_v1.json
JSON schema written to clustersecretstore_v1alpha1.json
JSON schema written to clustersecretstore_v1beta1.json
JSON schema written to cninode_v1alpha1.json
JSON schema written to codesigningconfig_v1alpha1.json
JSON schema written to consulresolver_v1.json
JSON schema written to consulresolver_v2.json
JSON schema written to consulresolver_v3alpha1.json
JSON schema written to database_v1.json
JSON schema written to dbclusterparametergroup_v1alpha1.json
JSON schema written to dbcluster_v1alpha1.json
JSON schema written to dbclustersnapshot_v1alpha1.json
JSON schema written to dbinstance_v1alpha1.json
JSON schema written to dbparametergroup_v1alpha1.json
JSON schema written to dbproxy_v1alpha1.json
JSON schema written to dbsnapshot_v1alpha1.json
JSON schema written to dbsubnetgroup_v1alpha1.json
JSON schema written to devportal_v1.json
JSON schema written to devportal_v2.json
JSON schema written to devportal_v3alpha1.json
JSON schema written to dhcpoptions_v1alpha1.json
JSON schema written to ecrauthorizationtoken_v1alpha1.json
JSON schema written to elasticipaddress_v1alpha1.json
JSON schema written to elasticmapsserver_v1alpha1.json
JSON schema written to elasticsearchautoscaler_v1alpha1.json
JSON schema written to elasticsearch_v1.json
JSON schema written to elasticsearch_v1beta1.json
JSON schema written to elasticsearch_v1alpha1.json
JSON schema written to eniconfig_v1alpha1.json
JSON schema written to enterprisesearch_v1.json
JSON schema written to enterprisesearch_v1beta1.json
JSON schema written to envoyextensionpolicy_v1alpha1.json
JSON schema written to envoypatchpolicy_v1alpha1.json
JSON schema written to envoyproxy_v1alpha1.json
JSON schema written to ephemeralreport_v1.json
JSON schema written to eventsourcemapping_v1alpha1.json
JSON schema written to externalsecret_v1alpha1.json
JSON schema written to externalsecret_v1beta1.json
JSON schema written to fake_v1alpha1.json
JSON schema written to fargateprofile_v1alpha1.json
JSON schema written to fieldexport_v1alpha1.json
JSON schema written to flowlog_v1alpha1.json
JSON schema written to function_v1alpha1.json
JSON schema written to functionurlconfig_v1alpha1.json
JSON schema written to gatewayclass_v1.json
JSON schema written to gatewayclass_v1beta1.json
JSON schema written to gateway_v1.json
JSON schema written to gateway_v1beta1.json
JSON schema written to gcraccesstoken_v1alpha1.json
JSON schema written to gitopscluster_v1alpha1.json
JSON schema written to gitopsset_v1alpha1.json
JSON schema written to gitopstemplate_v1alpha1.json
JSON schema written to gitopstemplate_v1alpha2.json
JSON schema written to gitrepository_v1.json
JSON schema written to gitrepository_v1beta1.json
JSON schema written to gitrepository_v1beta2.json
JSON schema written to globalcluster_v1alpha1.json
JSON schema written to globalcontextentry_v2alpha1.json
JSON schema written to grafanaagent_v1alpha1.json
JSON schema written to grant_v1alpha1.json
JSON schema written to group_v1alpha1.json
JSON schema written to grpcroute_v1.json
JSON schema written to grpcroute_v1alpha2.json
JSON schema written to healthcheck_v1alpha1.json
JSON schema written to helmchart_v1.json
JSON schema written to helmchart_v1beta1.json
JSON schema written to helmchart_v1beta2.json
JSON schema written to helmrelease_v2.json
JSON schema written to helmrelease_v2beta1.json
JSON schema written to helmrelease_v2beta2.json
JSON schema written to helmrepository_v1.json
JSON schema written to helmrepository_v1beta1.json
JSON schema written to helmrepository_v1beta2.json
JSON schema written to hostedzone_v1alpha1.json
JSON schema written to host_v2.json
JSON schema written to host_v3alpha1.json
JSON schema written to httproute_v1.json
JSON schema written to httproute_v1beta1.json
JSON schema written to identityproviderconfig_v1alpha1.json
JSON schema written to imagecatalog_v1.json
JSON schema written to imagepolicy_v1beta1.json
JSON schema written to imagepolicy_v1beta2.json
JSON schema written to imagerepository_v1beta1.json
JSON schema written to imagerepository_v1beta2.json
JSON schema written to imageupdateautomation_v1beta1.json
JSON schema written to imageupdateautomation_v1beta2.json
JSON schema written to imagevalidatingpolicy_v1alpha1.json
JSON schema written to ingressclassparams_v1beta1.json
JSON schema written to instanceprofile_v1alpha1.json
JSON schema written to instance_v1alpha1.json
JSON schema written to integration_v1alpha1.json
JSON schema written to internetgateway_v1alpha1.json
JSON schema written to issuer_v1.json
JSON schema written to key_v1alpha1.json
JSON schema written to kibana_v1.json
JSON schema written to kibana_v1beta1.json
JSON schema written to kibana_v1alpha1.json
JSON schema written to knativeeventing_v1beta1.json
JSON schema written to knativeserving_v1beta1.json
JSON schema written to kubernetesendpointresolver_v1.json
JSON schema written to kubernetesendpointresolver_v2.json
JSON schema written to kubernetesendpointresolver_v3alpha1.json
JSON schema written to kubernetesserviceresolver_v1.json
JSON schema written to kubernetesserviceresolver_v2.json
JSON schema written to kubernetesserviceresolver_v3alpha1.json
JSON schema written to kustomization_v1.json
JSON schema written to kustomization_v1beta1.json
JSON schema written to kustomization_v1beta2.json
JSON schema written to launchtemplate_v1alpha1.json
JSON schema written to layerversion_v1alpha1.json
JSON schema written to listener_v3alpha1.json
JSON schema written to loggroup_v1alpha1.json
JSON schema written to logservice_v1.json
JSON schema written to logservice_v2.json
JSON schema written to logservice_v3alpha1.json
JSON schema written to logsinstance_v1alpha1.json
JSON schema written to logstash_v1alpha1.json
JSON schema written to mapping_v1.json
JSON schema written to mapping_v2.json
JSON schema written to mapping_v3alpha1.json
JSON schema written to metricalarm_v1alpha1.json
JSON schema written to metricsinstance_v1alpha1.json
JSON schema written to metrictemplate_v1beta1.json
JSON schema written to module_v1.json
JSON schema written to module_v2.json
JSON schema written to module_v3alpha1.json
JSON schema written to natgateway_v1alpha1.json
JSON schema written to networkacl_v1alpha1.json
JSON schema written to nodegroup_v1alpha1.json
JSON schema written to ocirepository_v1beta2.json
JSON schema written to openidconnectprovider_v1alpha1.json
JSON schema written to order_v1.json
JSON schema written to parametergroup_v1alpha1.json
JSON schema written to password_v1alpha1.json
JSON schema written to pipeline_v1alpha1.json
JSON schema written to podidentityassociation_v1alpha1.json
JSON schema written to podlogs_v1alpha1.json
JSON schema written to podmonitor_v1.json
JSON schema written to policy_v1alpha1.json
JSON schema written to policy_v1.json
JSON schema written to policy_v2beta1.json
JSON schema written to policy_v1.json
JSON schema written to policy_v2beta1.json
JSON schema written to policy_v2beta2.json
JSON schema written to policyconfig_v2beta2.json
JSON schema written to policyendpoint_v1alpha1.json
JSON schema written to policyexception_v2.json
JSON schema written to policyexception_v2beta1.json
JSON schema written to policyexception_v1alpha1.json
JSON schema written to policyreport_v1alpha2.json
JSON schema written to policyset_v2beta1.json
JSON schema written to policyset_v2beta2.json
JSON schema written to pooler_v1.json
JSON schema written to probe_v1.json
JSON schema written to prometheusagent_v1alpha1.json
JSON schema written to prometheus_v1.json
JSON schema written to prometheusrule_v1.json
JSON schema written to provider_v1beta1.json
JSON schema written to provider_v1beta2.json
JSON schema written to provider_v1beta3.json
JSON schema written to publication_v1.json
JSON schema written to pullthroughcacherule_v1alpha1.json
JSON schema written to pushsecret_v1alpha1.json
JSON schema written to ratelimitservice_v1.json
JSON schema written to ratelimitservice_v2.json
JSON schema written to ratelimitservice_v3alpha1.json
JSON schema written to receiver_v1.json
JSON schema written to receiver_v1beta1.json
JSON schema written to receiver_v1beta2.json
JSON schema written to recordset_v1alpha1.json
JSON schema written to referencegrant_v1alpha2.json
JSON schema written to referencegrant_v1beta1.json
JSON schema written to replicationgroup_v1alpha1.json
JSON schema written to repository_v1alpha1.json
JSON schema written to role_v1alpha1.json
JSON schema written to routetable_v1alpha1.json
JSON schema written to scheduledbackup_v1.json
JSON schema written to scrapeconfig_v1alpha1.json
JSON schema written to secretstore_v1alpha1.json
JSON schema written to secretstore_v1beta1.json
JSON schema written to secretsync_v1alpha1.json
JSON schema written to securitygrouppolicy_v1beta1.json
JSON schema written to securitygroup_v1alpha1.json
JSON schema written to securitypolicy_v1alpha1.json
JSON schema written to securitypolicy_v1alpha1.json
JSON schema written to servicemonitor_v1.json
JSON schema written to shipwrightbuild_v1alpha1.json
JSON schema written to snapshot_v1alpha1.json
JSON schema written to snapshot_v1alpha1.json
JSON schema written to snapshotschedule_v1.json
JSON schema written to stackconfigpolicy_v1alpha1.json
JSON schema written to subnetgroup_v1alpha1.json
JSON schema written to subnet_v1alpha1.json
JSON schema written to subscription_v1.json
JSON schema written to targetgroupbinding_v1alpha1.json
JSON schema written to targetgroupbinding_v1beta1.json
JSON schema written to tcpmapping_v1.json
JSON schema written to tcpmapping_v2.json
JSON schema written to tcpmapping_v3alpha1.json
JSON schema written to tcproute_v1alpha2.json
JSON schema written to teleportrole_v5.json
JSON schema written to teleportrole_v6.json
JSON schema written to teleportsamlconnector_v2.json
JSON schema written to terraform_v1alpha1.json
JSON schema written to terraform_v1alpha2.json
JSON schema written to thanosruler_v1.json
JSON schema written to tlscontext_v1.json
JSON schema written to tlscontext_v2.json
JSON schema written to tlscontext_v3alpha1.json
JSON schema written to tlsroute_v1alpha2.json
JSON schema written to tracingservice_v1.json
JSON schema written to tracingservice_v2.json
JSON schema written to tracingservice_v3alpha1.json
JSON schema written to transitgateway_v1alpha1.json
JSON schema written to transitgatewayvpcattachment_v1alpha1.json
JSON schema written to turndownschedule_v1alpha1.json
JSON schema written to udproute_v1alpha2.json
JSON schema written to updaterequest_v1beta1.json
JSON schema written to updaterequest_v2.json
JSON schema written to usergroup_v1alpha1.json
JSON schema written to user_v1alpha1.json
JSON schema written to user_v1alpha1.json
JSON schema written to user_v1alpha1.json
JSON schema written to validatingpolicy_v1alpha1.json
JSON schema written to vaultdynamicsecret_v1alpha1.json
JSON schema written to vault_v1alpha1.json
JSON schema written to version_v1alpha1.json
JSON schema written to vlogs_v1beta1.json
JSON schema written to vmagent_v1beta1.json
JSON schema written to vmalertmanagerconfig_v1beta1.json
JSON schema written to vmalertmanager_v1beta1.json
JSON schema written to vmalert_v1beta1.json
JSON schema written to vmauth_v1beta1.json
JSON schema written to vmcluster_v1beta1.json
JSON schema written to vmnodescrape_v1beta1.json
JSON schema written to vmpodscrape_v1beta1.json
JSON schema written to vmprobe_v1beta1.json
JSON schema written to vmrule_v1beta1.json
JSON schema written to vmscrapeconfig_v1beta1.json
JSON schema written to vmservicescrape_v1beta1.json
JSON schema written to vmsingle_v1beta1.json
JSON schema written to vmstaticscrape_v1beta1.json
JSON schema written to vmuser_v1beta1.json
JSON schema written to volumesnapshotclass_v1.json
JSON schema written to volumesnapshotclass_v1beta1.json
JSON schema written to volumesnapshotcontent_v1.json
JSON schema written to volumesnapshotcontent_v1beta1.json
JSON schema written to volumesnapshot_v1.json
JSON schema written to volumesnapshot_v1beta1.json
JSON schema written to vpcendpoint_v1alpha1.json
JSON schema written to vpcendpointserviceconfiguration_v1alpha1.json
JSON schema written to vpcpeeringconnection_v1alpha1.json
JSON schema written to vpc_v1alpha1.json
Successfully converted 237 CRDs to JSON schema

To validate a CR using various tools, run the relevant command:

- datree:
$ datree test /path/to/file

- kubeconform:
$ kubeconform -summary -output json -schema-location default -schema-location '/Users/george/.datree/crdSchemas/{{ .ResourceKind }}_{{ .ResourceAPIVersion }}.json' /path/to/file

- kubeval:
$ kubeval --additional-schema-locations file:"/Users/george/.datree/crdSchemas" /path/to/file

during the work I see that Aliases were extracted:

Image

but they are no present in the target catalogue

Image

gecube avatar May 02 '25 08:05 gecube

I believe the issue is that the crd extractor does not consider the possibility of having the same Kind in different API groups, that could be confirmed by existence only one alias json in master-standalone catalogue:

Image

gecube avatar May 02 '25 08:05 gecube

should be fixed by #506 but as was not released it is effectively impossible to guess that one needs the script from main branch

gecube avatar May 02 '25 09:05 gecube