schemas/gen-k8s-schemas.sh
Rama main · réplica de lectura del repositorio original.
#!/usr/bin/env bash
set -ex
# This script uses openapi2jsonschema to generate a set of JSON schemas for
# the specified Kubernetes versions in different flavours:
#
# X.Y.Z - URL referenced based on the specified GitHub repository
# X.Y.Z-standalone - de-referenced schemas, more useful as standalone documents
# X.Y.Z-standalone-strict - de-referenced schemas, more useful as standalone documents, additionalProperties disallowed
# X.Y.Z-local - relative references, useful to avoid the network dependency
declare -a K8S_VERSIONS=(
v1.37.1
v1.36.1
v1.35.0
v1.34.0
v1.33.0
v1.32.0
v1.31.1
v1.30.2
v1.29.4
v1.28.3
v1.27.4
v1.26.7
v1.25.8
v1.24.12
v1.23.17
v1.22.17
v1.21.13
)
pushd schemas
OPENAPI2JSONSCHEMABIN="docker run -i -v ${PWD}:/out/schemas ghcr.io/yannh/openapi2jsonschema:latest"
# OPENAPI2JSONSCHEMABIN="openapi2jsonschema"
if [ -n "${K8S_VERSION_PREFIX}" ]; then
export K8S_VERSIONS=$(git ls-remote --refs --tags https://github.com/kubernetes/kubernetes.git | cut -d/ -f3 | grep -e '^'"${K8S_VERSION_PREFIX}" | grep -e '^v1\.[0-9]\{2\}\.[0-9]\{1,2\}$')
fi
for K8S_VERSION in "${K8S_VERSIONS[@]}"; do
OUT_VERSION=${K8S_VERSION%.*}
SCHEMA=https://raw.githubusercontent.com/kubernetes/kubernetes/${K8S_VERSION}/api/openapi-spec/swagger.json
# PREFIX=https://kubernetesjsonschema.dev/${K8S_VERSION}/_definitions.json
# if [ ! -f "${OUT_VERSION}-standalone-strict.tar.gz" ]; then
# $OPENAPI2JSONSCHEMABIN -o "${OUT_VERSION}-standalone-strict" --expanded --kubernetes --stand-alone --strict "${SCHEMA}"
# $OPENAPI2JSONSCHEMABIN -o "${OUT_VERSION}-standalone-strict" --kubernetes --stand-alone --strict "${SCHEMA}"
# tar -zcvf ${OUT_VERSION}-standalone-strict.tar.gz ${OUT_VERSION}-standalone-strict
# rm -rf ${OUT_VERSION}-standalone-strict
# fi
if [ ! -f "${OUT_VERSION}-standalone.tar.gz" ]; then
$OPENAPI2JSONSCHEMABIN -o "${OUT_VERSION}-standalone" --expanded --kubernetes --stand-alone "${SCHEMA}"
container_id=$(docker ps -a -l -q)
docker cp $container_id:/out/${OUT_VERSION}-standalone ${PWD}/${OUT_VERSION}-standalone-expanded
$OPENAPI2JSONSCHEMABIN -o "${OUT_VERSION}-standalone" --kubernetes --stand-alone "${SCHEMA}"
container_id=$(docker ps -a -l -q)
docker cp $container_id:/out/${OUT_VERSION}-standalone ${PWD}/${OUT_VERSION}-standalone
cp -r ${OUT_VERSION}-standalone-expanded/* ${OUT_VERSION}-standalone
tar -zcvf "${OUT_VERSION}"-standalone.tar.gz "${OUT_VERSION}"-standalone
rm -rf "${OUT_VERSION}"-standalone-expanded
rm -rf "${OUT_VERSION}"-standalone
fi
# if [ ! -f "${OUT_VERSION}-local.tar.gz" ]; then
# $OPENAPI2JSONSCHEMABIN -o "${OUT_VERSION}-local" --expanded --kubernetes "${SCHEMA}"
# $OPENAPI2JSONSCHEMABIN -o "${OUT_VERSION}-local" --kubernetes "${SCHEMA}"
# tar -zcvf ${OUT_VERSION}-local.tar.gz ${OUT_VERSION}-local
# rm -rf ${OUT_VERSION}-local
# fi
# if [ ! -f "${OUT_VERSION}.tar.gz" ]; then
# $OPENAPI2JSONSCHEMABIN -o "${OUT_VERSION}" --expanded --kubernetes --prefix "${PREFIX}" "${SCHEMA}"
# $OPENAPI2JSONSCHEMABIN -o "${OUT_VERSION}" --kubernetes --prefix "${PREFIX}" "${SCHEMA}"
# tar -zcvf ${OUT_VERSION}.tar.gz ${OUT_VERSION}
# rm -rf ${OUT_VERSION}
# fi
done
popd