Skip to main content

Package

API Group: environments.blanketops.dev

Version: v1alpha1

Scope: Namespaced


Description

Package defines a versioned, distributable configuration unit for a delivery workload.

It encapsulates metadata, ownership, repository source, and environment state projection rules.

Package governs configuration distribution, not artifact creation.


Spec

spec

FieldTypeRequiredDescription
contractobjectYesPackage definition contract

spec.contract

FieldTypeRequiredDescription
namestringYesCanonical package identity
versionstringYesLogical version identifier
enabledbooleanYesWhether the package is active
packageNamestringYesDistribution name
packageVersionstringYesDistribution version
packageDescriptionstringNoHuman-readable description
packageMaintainers[]objectNoList of maintainers
packageRepositoryobjectYesSource repository for package configuration
packageKappDiffbooleanNoEnables structured diff behavior
stateRepoobjectYesEnvironment state repository definition

spec.contract.packageMaintainers[]

FieldTypeRequiredDescription
namestringYesMaintainer name
emailstringYesMaintainer email

spec.contract.packageRepository

FieldTypeRequiredDescription
urlstringYesGit repository URL
credentialsSecretstringNoSecret for repository authentication

spec.contract.stateRepo

FieldTypeRequiredDescription
urlstringYesGit repository URL for state projection
refobjectYesGit reference configuration
cloneSecretstringNoSecret for repository authentication
strategystringYesReconciliation strategy (e.g. kustomization)
pathstringYesPath within repository for state projection

spec.contract.stateRepo.ref

FieldTypeRequiredDescription
branchstringYesGit branch name

Status

FieldTypeDescription
phasestringCurrent lifecycle phase
observedVersionstringVersion currently reconciled
lastAppliedRevisionstringGit revision currently applied
conditions[]ConditionStandard Kubernetes condition array

status.phase Values

ValueMeaning
PendingPackage registered but not reconciled
ReconcilingSynchronizing configuration
ReadyPackage state aligned with contract
DisabledPackage disabled by contract
FailedReconciliation failure

Example

apiVersion: environments.blanketops.dev/v1alpha1
kind: Package
metadata:
name: for-kaniko-app
namespace: dev
spec:
contract:
name: for-kaniko-app
version: v1.0.0
enabled: true
packageName: for-kaniko-app
packageVersion: v1.2.3
packageDescription: >
This package contains the API deployment manifests and runtime configuration.
packageMaintainers:
- name: Jane Doe
email: jane@example.com
packageRepository:
url: git@github.com:example-org/for-kaniko-app-packages.git
credentialsSecret: git-ssh-credentials-packages
packageKappDiff: true
stateRepo:
url: git@github.com:example-org/for-kaniko-app-state.git
ref:
branch: master
cloneSecret: git-ssh-credentials-state
strategy: kustomization
path: ./clusters/dev

Invariants

  • name and version must remain consistent for a given package lifecycle.
  • packageRepository.url must be reachable.
  • stateRepo.url must be reachable.
  • stateRepo.path must resolve to valid manifests.
  • Disabled packages must not reconcile state.
  • Package does not modify Build or Deployment resources directly.