kubernetes-sigs / apisnoop

⭕️Snooping on the Kubernetes OpenAPI communications
https://apisnoop.cncf.io
Apache License 2.0
86 stars 40 forks source link
k8s-sig-architecture

+TITLE: APISnoop Readme

A suite of tools to assist kubernetes test-writing and investigate test coverage.

APISnoop is a collection of programs intended to run in a kubernetes cluster, that help with multiple aspects of conformance testing. These programs include:

We use snoopdb to generate the data for the site [[https://apisnoop.cncf.io]].

The testgrid for the job can be found here: https://testgrid.k8s.io/sig-arch-conformance#apisnoop-conformance-gate

** How the job works The job uses our snoopdb image. This image, on startup, runs through a set of sql initialization scripts including one that gathers any new, untested conformant endpoints. If the image detects it's being run as part of prow, it will then do a simple check if its list of untested endpoints is greater than 0. If so, the job fails and we output the latest endpoints. Otherwise, it passes and the db shuts down, completing the job.

Snoopdb uses the following sources for determining tested conformant endpoints:

We define "new conformance endpoints" as the endpoints in the most recent openAPI spec that are stable, not deprecated, and are not included in the ineligible-endpoints.yaml.

We define "tested" to mean the endpoint shows up in the audit logs of the conformance test suite as a target of a conformance test(e.g. a test that is included in the above conformance.yaml)

The logic for this work is present among the sql files in snoopdb's [[https://github.com/cncf/apisnoop/tree/main/apps/snoopdb/postgres/initdb][initdb]]. Mainly: