This EPIC covers the activities required to release a hard revision of the Porch APIs.
Porch API rules
- These rules comply with Kubernetes Versions in CustomResourceDefinitions rules
- These rules follow the direction set in the Kubernetes document Changing the API
- The Porch versioning will follow the semantic versioning convention vx. Porch alpha and beta releases will follow the semantic versioning convention vx-alpha.n and vx-beta.n. The first full version would be v1, a beta would v1-beta.24
- The latest version of the API will always be the "stored" version.
- The Porch codebase will always import the latest version of the API (Check this, use the unversioned type?)
- The Porch code that is not webhook code or specific API version code should not import specific versions of the API
- Supported versions will be served using webhook conversion, that is they will be translated from the "served" version to the "stored" version 'client-->server' and from the "stored" version to the "served" version "server->client"
- Each time a Kind in either the
porch.kpt.dev group is changed, the version of the porch.kpt.dev will be stepped. The Porch API server Kinds are in this group.
- Each time a Kind in either the
config.porch.kpt.dev group is changed, the version of the config.porch.kpt.dev will be stepped. Note that the Repository, PackageVariant, PackageVariantSet, and PackageRev kinds are all in this group.
- Unversioned API calls are not supported.
Porch APIs
Porch currently has five published APIs.
The Porch API
Group Name: porch.kpt.dev
Types:
PorchPackage
PorchPackageList
PackageRevision
PackageRevisionList
PackageRevisionResources
PackageRevisionResourcesList
Stored in api/porch
Versions:
- v1alpha1: stored and served
Porch Repository CRD
Group Name: config.porch.kpt.dev
Types:
Stored in api/porchconfig
Versions:
- v1alpha1: stored and served
PackageVariant CRD
Group Name: config.porch.kpt.dev
Types:
Stored in controllers/packagevariants
Versions:
- v1alpha1: stored and served
PackageVariantSet CRD
Group Name: config.porch.kpt.dev
Types:
Stored in controllers/packagevariantsets
Versions:
- v1alpha1: not stored and not served
- v1alpha2: stored and served
PackageRev CRD
Group Name: config.porch.kpt.dev
Types:
Stored in internal/api/porchinternal
Versions:
- v1alpha1: stored and served
Tasks
The tasks to achieve this are as follows
Subtasks will be created for the task list above if tasks are substantial enough to merit their own subtask.
See also Discussion Cleaning up porch API to move to v1
This EPIC covers the activities required to release a hard revision of the Porch APIs.
Porch API rules
porch.kpt.devgroup is changed, the version of theporch.kpt.devwill be stepped. The Porch API server Kinds are in this group.config.porch.kpt.devgroup is changed, the version of theconfig.porch.kpt.devwill be stepped. Note that theRepository,PackageVariant,PackageVariantSet, andPackageRevkinds are all in this group.Porch APIs
Porch currently has five published APIs.
The Porch API
Group Name:
porch.kpt.devTypes:
PorchPackagePorchPackageListPackageRevisionPackageRevisionListPackageRevisionResourcesPackageRevisionResourcesListStored in
api/porchVersions:
Porch Repository CRD
Group Name:
config.porch.kpt.devTypes:
RepositoryStored in
api/porchconfigVersions:
PackageVariant CRD
Group Name:
config.porch.kpt.devTypes:
PackageVariantStored in
controllers/packagevariantsVersions:
PackageVariantSet CRD
Group Name:
config.porch.kpt.devTypes:
PackageVariantSetStored in
controllers/packagevariantsetsVersions:
PackageRev CRD
Group Name:
config.porch.kpt.devTypes:
PackageRevStored in
internal/api/porchinternalVersions:
Tasks
The tasks to achieve this are as follows
Subtasks will be created for the task list above if tasks are substantial enough to merit their own subtask.
See also Discussion Cleaning up porch API to move to v1