|
| 1 | +In this chapter, we are going to cover _package orchestration_ - management |
| 2 | +of package lifecycle supported by the kpt toolchain. |
| 3 | + |
| 4 | +Package Orchestration encompasses management of the overall lifecycle of the |
| 5 | +configuration package, including: |
| 6 | + |
| 7 | +* management of package repositories |
| 8 | +* discovery of configuration packages and kpt functions |
| 9 | +* creating, modifying, updating, and deleting packages |
| 10 | +* versioning packages |
| 11 | +* WYSIWYG package authoring and customization with _guardrails_ |
| 12 | +* evaluation of functions on package data |
| 13 | +* approval flow to publish a change to a configuration package |
| 14 | +* deployment and rollouts |
| 15 | + |
| 16 | +Package Orchestration enables [workflows](/book/02-concepts/02-workflows) |
| 17 | +similar to those supported by the kpt CLI, but makes them available as a |
| 18 | +service and enables creation of WYSIWYG user experiences, similar to the |
| 19 | +proof-of-concept [Backstage plugin](/guides/namespace-provisioning-ui). |
| 20 | + |
| 21 | +## Package Orchestration Concepts |
| 22 | + |
| 23 | +Package Orchestration relies on the already familiar concepts of |
| 24 | +[**Package**](/book/02-concepts/01-packages) |
| 25 | +and [**Function**](/book/02-concepts/03-functions). |
| 26 | + |
| 27 | +Package Orchestrator supports several **lifecycle stages** of packages: |
| 28 | +* ***Draft*** - package is being created or edited. The package contents can be |
| 29 | + modified but package is not ready to be used (deployed or cloned) |
| 30 | +* ***Proposed*** - author of the package proposed that the package be published |
| 31 | +* ***Published*** - the changes to the package have been approved and the |
| 32 | + package is ready to be used. Published packages can be deployed or cloned. |
| 33 | + |
| 34 | +A **Repository** containing kpt packages (for example a [git][] repository or |
| 35 | +an [OCI][] container registry) can be registered with the Package Orchestrator |
| 36 | +to enable package discovery or management. |
| 37 | + |
| 38 | +An [OCI][] container registry containing kpt functions can be registered with |
| 39 | +the Package Orchestrator to enable discovery of kpt functions. |
| 40 | + |
| 41 | +A repository containing *packages* can be designated as a |
| 42 | +***deployment repository***. *Published* packages in a deployment repository are |
| 43 | +considered deployment-ready. |
| 44 | + |
| 45 | +<!-- Reference links --> |
| 46 | +[git]: https://git-scm.org/ |
| 47 | +[oci]: https://opencontainers.org/ |
| 48 | +[config sync]: https://cloud.google.com/anthos-config-management/docs/config-sync-overview |
| 49 | + |
| 50 | +The following image illustrates how Package Orchestration fits into the overall |
| 51 | +configuration management ecosystem. Package Orchestration service enables |
| 52 | +management of packages in registered repositories and enables WYSIWYG UI |
| 53 | +experience of package authoring. |
| 54 | +A separate GitOps deployment mechanism (for example [Config Sync][]) is used to |
| 55 | +deploy published packages to realize the live state from the configuration and |
| 56 | +provides observability of the status of deployed resources. |
| 57 | + |
| 58 | + |
| 59 | + |
| 60 | +Dedicated user guides are available for the use of Porch with |
| 61 | +* the [Backstage UI](/guides/namespace-provisioning-ui) |
| 62 | +* the [kpt cli](/guides/porch-user-guide) |
0 commit comments