From 08f6afbdadc6956adc96a8da2fcf1ac69ca06efc Mon Sep 17 00:00:00 2001 From: Gergely Csatari Date: Tue, 9 Jul 2024 17:59:34 +0300 Subject: [PATCH] Removal of documentation Porch documentation was moved to the Nephio docs repo. Signed-off-by: Gergely Csatari --- README.md | 4 + docs/06-config-as-data.md | 165 -- docs/07-package-orchestration.md | 510 ----- docs/08-package-variant.md | 1373 ------------ docs/09-function-runner-pod-templates.md | 88 - docs/README.md | 3 +- docs/adding-external-git-ca-bundle.md | 32 - docs/development.md | 107 - docs/porch-roadmap.md | 157 -- docs/porchctl-cli-guide.md | 70 - docs/running-locally.md | 115 - docs/running-porch-in-kind-cluster.md | 265 --- docs/static/images/CaD Core Architecture.svg | 1 - docs/static/images/CaD Overview.svg | 1 - docs/static/images/Porch Architecture.svg | 1 - docs/static/images/Porch Inner Loop.svg | 1 - docs/static/images/packagevariant-clone.png | Bin 28004 -> 0 bytes .../packagevariant-config-injection.png | Bin 144272 -> 0 bytes docs/static/images/packagevariant-context.png | Bin 75460 -> 0 bytes .../static/images/packagevariant-function.png | Bin 124315 -> 0 bytes docs/static/images/packagevariant-legend.png | Bin 24320 -> 0 bytes ...gevariantset-target-list-with-packages.png | Bin 61096 -> 0 bytes .../images/packagevariantset-target-list.png | Bin 64351 -> 0 bytes ...packagevariantset-target-repo-selector.png | Bin 154461 -> 0 bytes .../porch-development-environment/README.md | 166 -- .../dev-process.md | 211 -- docs/tutorials/starting-with-porch/README.md | 1975 ----------------- .../blueprints/initialized/.gitignore | 2 - .../network-function-auto-namespace/Kptfile | 15 - .../network-function-auto-namespace/README.md | 25 - .../deployment.yaml | 17 - .../package-context.yaml | 8 - .../local-changes/network-function/Kptfile | 10 - .../local-changes/network-function/README.md | 25 - .../network-function/deployment.yaml | 17 - .../kind_edge1_cluster.yaml | 14 - .../kind_management_cluster.yaml | 16 - .../kpt_packages/.gitignore | 2 - .../starting-with-porch/metallb-conf.yaml | 15 - .../name-namespace-variant.yaml | 21 - .../porch-repositories.yaml | 59 - .../starting-with-porch/repos/.gitignore | 2 - .../starting-with-porch/simple-variant.yaml | 18 - .../tmp_packages_for_deployment/.gitignore | 2 - 44 files changed, 5 insertions(+), 5508 deletions(-) delete mode 100644 docs/06-config-as-data.md delete mode 100644 docs/07-package-orchestration.md delete mode 100644 docs/08-package-variant.md delete mode 100644 docs/09-function-runner-pod-templates.md delete mode 100644 docs/adding-external-git-ca-bundle.md delete mode 100644 docs/development.md delete mode 100644 docs/porch-roadmap.md delete mode 100644 docs/porchctl-cli-guide.md delete mode 100644 docs/running-locally.md delete mode 100644 docs/running-porch-in-kind-cluster.md delete mode 100644 docs/static/images/CaD Core Architecture.svg delete mode 100644 docs/static/images/CaD Overview.svg delete mode 100644 docs/static/images/Porch Architecture.svg delete mode 100644 docs/static/images/Porch Inner Loop.svg delete mode 100644 docs/static/images/packagevariant-clone.png delete mode 100644 docs/static/images/packagevariant-config-injection.png delete mode 100644 docs/static/images/packagevariant-context.png delete mode 100644 docs/static/images/packagevariant-function.png delete mode 100644 docs/static/images/packagevariant-legend.png delete mode 100644 docs/static/images/packagevariantset-target-list-with-packages.png delete mode 100644 docs/static/images/packagevariantset-target-list.png delete mode 100644 docs/static/images/packagevariantset-target-repo-selector.png delete mode 100644 docs/tutorials/porch-development-environment/README.md delete mode 100644 docs/tutorials/porch-development-environment/dev-process.md delete mode 100644 docs/tutorials/starting-with-porch/README.md delete mode 100644 docs/tutorials/starting-with-porch/blueprints/initialized/.gitignore delete mode 100644 docs/tutorials/starting-with-porch/blueprints/local-changes/network-function-auto-namespace/Kptfile delete mode 100644 docs/tutorials/starting-with-porch/blueprints/local-changes/network-function-auto-namespace/README.md delete mode 100644 docs/tutorials/starting-with-porch/blueprints/local-changes/network-function-auto-namespace/deployment.yaml delete mode 100644 docs/tutorials/starting-with-porch/blueprints/local-changes/network-function-auto-namespace/package-context.yaml delete mode 100644 docs/tutorials/starting-with-porch/blueprints/local-changes/network-function/Kptfile delete mode 100644 docs/tutorials/starting-with-porch/blueprints/local-changes/network-function/README.md delete mode 100644 docs/tutorials/starting-with-porch/blueprints/local-changes/network-function/deployment.yaml delete mode 100644 docs/tutorials/starting-with-porch/kind_edge1_cluster.yaml delete mode 100644 docs/tutorials/starting-with-porch/kind_management_cluster.yaml delete mode 100644 docs/tutorials/starting-with-porch/kpt_packages/.gitignore delete mode 100644 docs/tutorials/starting-with-porch/metallb-conf.yaml delete mode 100644 docs/tutorials/starting-with-porch/name-namespace-variant.yaml delete mode 100644 docs/tutorials/starting-with-porch/porch-repositories.yaml delete mode 100644 docs/tutorials/starting-with-porch/repos/.gitignore delete mode 100644 docs/tutorials/starting-with-porch/simple-variant.yaml delete mode 100644 docs/tutorials/starting-with-porch/tmp_packages_for_deployment/.gitignore diff --git a/README.md b/README.md index e7d14032..9e777ed1 100644 --- a/README.md +++ b/README.md @@ -5,3 +5,7 @@ which manages the lifecycle of KRM configuration packages. This code was donated to Nephio from the [kpt](https://github.com/kptdev/kpt) project as of December 2023. + +## Documentation + +Documentation of Porch is available in the [Nephio documentation page](https://docs.nephio.org/docs/porch/). diff --git a/docs/06-config-as-data.md b/docs/06-config-as-data.md deleted file mode 100644 index 04dbdf02..00000000 --- a/docs/06-config-as-data.md +++ /dev/null @@ -1,165 +0,0 @@ -# Configuration as Data - -* Author(s): Martin Maly, @martinmaly -* Approver: @bgrant0607 - -## Why - -This document provides background context for Package Orchestration, which is -further elaborated in a dedicated [document](07-package-orchestration.md). - -## Configuration as Data - -*Configuration as Data* is an approach to management of configuration (incl. -configuration of infrastructure, policy, services, applications, etc.) which: - -* makes configuration data the source of truth, stored separately from the live - state -* uses a uniform, serializable data model to represent configuration -* separates code that acts on the configuration from the data and from packages - / bundles of the data -* abstracts configuration file structure and storage from operations that act - upon the configuration data; clients manipulating configuration data don’t - need to directly interact with storage (git, container images) - -![CaD Overview](./static/images/CaD%20Overview.svg) - -## Key Principles - -A system based on CaD *should* observe the following key principles: - -* secrets should be stored separately, in a secret-focused storage system - ([example](https://cloud.google.com/secret-manager)) -* stores a versioned history of configuration changes by change sets to bundles - of related configuration data -* relies on uniformity and consistency of the configuration format, including - type metadata, to enable pattern-based operations on the configuration data, - along the lines of duck typing -* separates schemas for the configuration data from the data, and relies on - schema information for strongly typed operations and to disambiguate data - structures and other variations within the model -* decouples abstractions of configuration from collections of configuration data -* represents abstractions of configuration generators as data with schemas, like - other configuration data -* finds, filters / queries / selects, and/or validates configuration data that - can be operated on by given code (functions) -* finds and/or filters / queries / selects code (functions) that can operate on - resource types contained within a body of configuration data -* *actuation* (reconciliation of configuration data with live state) is separate - from transformation of configuration data, and is driven by the declarative - data model -* transformations, particularly value propagation, are preferable to wholesale - configuration generation except when the expansion is dramatic (say, >10x) -* transformation input generation should usually be decoupled from propagation -* deployment context inputs should be taken from well defined “provider context” - objects -* identifiers and references should be declarative -* live state should be linked back to sources of truth (configuration) - -## KRM CaD - -Our implementation of the Configuration as Data approach ( -[kpt](https://kpt.dev), -[Config Sync](https://cloud.google.com/anthos-config-management/docs/config-sync-overview), -and [Package Orchestration](https://github.com/GoogleContainerTools/kpt/tree/main/porch)) -build on the foundation of -[Kubernetes Resource Model](https://github.com/kubernetes/design-proposals-archive/blob/main/architecture/resource-management.md) -(KRM). - -**Note**: Even though KRM is not a requirement of Config as Data (just like -Python or Go templates or Jinja are not specifically requirements for -[IaC](https://en.wikipedia.org/wiki/Infrastructure_as_code)), the choice of -another foundational config representation format would necessitate -implementing adapters for all types of infrastructure and applications -configured, including Kubernetes, CRDs, GCP resources and more. Likewise, choice -of another configuration format would require redesign of a number of the -configuration management mechanisms that have already been designed for KRM, -such as 3-way merge, structural merge patch, schema descriptions, resource -metadata, references, status conventions, etc. - -**KRM CaD** is therefore a specific approach to implementing *Configuration as -Data* which: -* uses [KRM](https://github.com/kubernetes/design-proposals-archive/blob/main/architecture/resource-management.md) - as the configuration serialization data model -* uses [Kptfile](https://kpt.dev/reference/schema/kptfile/) to store package - metadata -* uses [ResourceList](https://kpt.dev/reference/schema/resource-list/) as a - serialized package wire-format -* uses a function `ResourceList → ResultList` (`kpt` function) as the - foundational, composable unit of package-manipulation code (note that other - forms of code can manipulate packages as well, i.e. UIs, custom algorithms - not necessarily packaged and used as kpt functions) - -and provides the following basic functionality: - -* load a serialized package from a repository (as `ResourceList`) (examples of - repository may be one or more of: local HDD, Git repository, OCI, Cloud - Storage, etc.) -* save a serialized package (as `ResourceList`) to a package repository -* evaluate a function on a serialized package (`ResourceList`) -* [render](https://kpt.dev/book/04-using-functions/01-declarative-function-execution) - a package (evaluate functions declared within the package itself) -* create a new (empty) package -* fork (or clone) an existing package from one package repository (called - upstream) to another (called downstream) -* delete a package from a repository -* associate a version with the package; guarantee immutability of packages with - an assigned version -* incorporate changes from the new version of an upstream package into a new - version of a downstream package -* revert to a prior version of a package - -## Value - -The Config as Data approach enables some key value which is available in other -configuration management approaches to a lesser extent or is not available -at all. - -*CaD* approach enables: - -* simplified authoring of configuration using a variety of methods and sources -* WYSIWYG interaction with configuration using a simple data serialization - formation rather than a code-like format -* layering of interoperable interface surfaces (notably GUI) over declarative - configuration mechanisms rather than forcing choices between exclusive - alternatives (exclusively UI/CLI or IaC initially followed by exclusively - UI/CLI or exclusively IaC) -* the ability to apply UX techniques to simplify configuration authoring and - viewing -* compared to imperative tools (e.g., UI, CLI) that directly modify the live - state via APIs, CaD enables versioning, undo, audits of configuration history, - review/approval, pre-deployment preview, validation, safety checks, - constraint-based policy enforcement, and disaster recovery -* bulk changes to configuration data in their sources of truth -* injection of configuration to address horizontal concerns -* merging of multiple sources of truth -* state export to reusable blueprints without manual templatization -* cooperative editing of configuration by humans and automation, such as for - security remediation (which is usually implemented against live-state APIs) -* reusability of configuration transformation code across multiple bodies of - configuration data containing the same resource types, amortizing the effort - of writing, testing, documenting the code -* combination of independent configuration transformations -* implementation of config transformations using the languages of choice, - including both programming and scripting approaches -* reducing the frequency of changes to existing transformation code -* separation of roles between developer and non-developer configuration users -* defragmenting the configuration transformation ecosystem -* admission control and invariant enforcement on sources of truth -* maintaining variants of configuration blueprints without one-size-fits-all - full struct-constructor-style parameterization and without manually - constructing and maintaining patches -* drift detection and remediation for most of the desired state via continuous - reconciliation using apply and/or for specific attributes via targeted - mutation of the sources of truth - -## Related Articles - -For more information about Configuration as Data and Kubernetes Resource Model, -visit the following links: - -* [Rationale for kpt](https://kpt.dev/guides/rationale) -* [Understanding Configuration as Data](https://cloud.google.com/blog/products/containers-kubernetes/understanding-configuration-as-data-in-kubernetes) - blog post. -* [Kubernetes Resource Model](https://cloud.google.com/blog/topics/developers-practitioners/build-platform-krm-part-1-whats-platform) - blog post series diff --git a/docs/07-package-orchestration.md b/docs/07-package-orchestration.md deleted file mode 100644 index 3e7a4a73..00000000 --- a/docs/07-package-orchestration.md +++ /dev/null @@ -1,510 +0,0 @@ -# Package Orchestration - -* Author(s): Martin Maly, @martinmaly -* Approver: @mortent - -## Why - -Customers who want to take advantage of the benefits of [Configuration as Data -](./06-config-as-data.md) can do so today using a [kpt](https://kpt.dev) CLI and -kpt function ecosystem, including [functions catalog](https://catalog.kpt.dev/). -Package authoring is possible using a variety of editors with -[YAML](https://yaml.org/) support. That said, a delightful UI experience -of WYSIWYG package authoring which supports broader package lifecycle, including -package authoring with *guardrails*, approval workflow, package deployment, and -more, is not yet available. - -*Package Orchestration* service is part of the implementation of the -Configuration as Data approach, and enables building the delightful UI -experience supporting the configuration lifecycle. - -## Core Concepts - -This section briefly describes core concepts of package orchestration: - -***Package***: Package is a collection of related configuration files containing -configuration of [KRM][krm] **resources**. Specifically, configuration -packages are [kpt packages](https://kpt.dev/). - -***Repository***: Repositories store packages or [functions][]. -For example [git][] or [OCI](#oci). Functions may be associated with -repositories to enforce constraints or invariants on packages (guardrails). -([more details](#repositories)) - -Packages are sequentially ***versioned***; multiple versions of the same package -may exist in a repository. [more details](#package-versioning)) - -A package may have a link (URL) to an ***upstream package*** (a specific -version) from which it was cloned. ([more details](#package-relationships)) - -Package may be in one of several lifecycle stages: -* ***Draft*** - package is being created or edited. The package contents can be - modified but package is not ready to be used (i.e. deployed) -* ***Proposed*** - author of the package proposed that the package be published -* ***Published*** - the changes to the package have been approved and the - package is ready to be used. Published packages can be deployed or cloned - -***Function*** (specifically, [KRM functions][krm functions]) can be applied to -packages to mutate or validate resources within them. Functions can be applied -to a package to create specific package mutation while editing a package draft, -functions can be added to package's Kptfile [pipeline][], or associated with a -repository to be applied to all packages on changes. -([more details](#functions)) - -A repository can be designated as ***deployment repository***. *Published* -packages in a deployment repository are considered deployment-ready. -([more details](#deployment)) - - -[krm]: https://github.com/kubernetes/community/blob/master/contributors/design-proposals/architecture/resource-management.md -[functions]: https://kpt.dev/book/02-concepts/03-functions -[krm functions]: https://github.com/kubernetes-sigs/kustomize/blob/master/cmd/config/docs/api-conventions/functions-spec.md -[pipeline]: https://kpt.dev/book/04-using-functions/01-declarative-function-execution -[Config Sync]: https://cloud.google.com/anthos-config-management/docs/config-sync-overview -[kpt]: https://kpt.dev/ -[git]: https://git-scm.org/ -[optimistic-concurrency]: https://en.wikipedia.org/wiki/Optimistic_concurrency_control -[apiserver]: https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation/ -[representation]: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#differing-representations -[crds]: https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/ - -## Core Components of Configuration as Data Implementation - -The Core implementation of Configuration as Data, *CaD Core*, is a set of -components and APIs which collectively enable: - -* Registration of repositories (Git, OCI) containing kpt packages or functions, - and discovery of packages and functions -* Porcelain package lifecycle, including authoring, versioning, deletion, - creation and mutations of a package draft, process of proposing the package - draft, and publishing of the approved package. -* Package lifecycle operations such as: - * assisted or automated rollout of package upgrade when a new version - of the upstream package version becomes available - * rollback of a package to previous version -* Deployment of packages from deployment repositories and observability of their - deployment status. -* Permission model that allows role-based access control - -### High-Level Architecture - -At the high level, the Core CaD functionality comprises: - -* a generic (i.e. not task-specific) package orchestration service implementing - * package repository management - * package discovery, authoring and lifecycle management -* [kpt][] - a Git-native, schema-aware, extensible client-side tool for - managing KRM packages -* a GitOps-based deployment mechanism (for example [Config Sync][]), which - distributes and deploys configuration, and provides observability of the - status of deployed resources -* a task-specific UI supporting repository management, package discovery, - authoring, and lifecycle - -![CaD Core Architecture](./static/images/CaD%20Core%20Architecture.svg) - -## CaD Concepts Elaborated - -Concepts briefly introduced above are elaborated in more detail in this section. - -### Repositories - -[kpt][] and [Config Sync][] currently integrate with [git][] repositories, and -there is an existing design to add [OCI support](./02-oci-support.md) to kpt. -Initially, the Package Orchestration service will prioritize integration with -[git][], and support for additional repository types may be added in the future -as required. - -Requirements applicable to all repositories include: ability to store packages, -their versions, and sufficient metadata associated with package to capture: - -* package dependency relationships (upstream - downstream) -* package lifecycle state (draft, proposed, published) -* package purpose (base package) -* (optionally) even customer-defined attributes - -At repository registration, customers must be able to specify details needed to -store packages in appropriate locations in the repository. For example, -registration of a Git repository must accept a branch and a directory. - -Repositories may have associated guardrails - mutation and validation functions -that ensure and enforce requirements of all packages in the repository, -including gating promotion of a package to a *published* lifecycle stage. - -_Note_: A user role with sufficient permissions can register a package or -function repository, including repositories containing functions authored by -the customer, or other providers. Since the functions in the registered -repositories become discoverable, customers must be aware of the implications of -registering function repositories and trust the contents thereof. - -### Package Versioning - -Packages are sequentially versioned. The important requirements are: - -* ability to compare any 2 versions of a package to be either "newer than", - equal, or "older than" relationship -* ability to support automatic assignment of versions -* ability to support [optimistic concurrency][optimistic-concurrency] of package - changes via version numbers -* simple model which easily supports automation - -We plan to use a simple integer sequence to represent package versions. - -### Package Relationships - -Kpt packages support the concept of ***upstream***. When a package is cloned -from another, the new package (called ***downstream*** package) maintains an -upstream link to the specific version of the package from which it was cloned. -If a new version of the upstream package becomes available, the upstream link -can be used to [update](https://kpt.dev/book/03-packages/05-updating-a-package) -the downstream package. - -### Deployment - -The deployment mechanism is responsible for deploying configuration packages -from a repository and affecting the live state. Because the configuration -is stored in standard repositories (Git, and in the future OCI), the deployment -component is pluggable. By default, [Config Sync][] is the deployment mechanism -used by CaD Core implementation but others can be used as well. - -Here we highlight some key attributes of the deployment mechanism and its -integration within the CaD Core: - -* _Published_ packages in a deployment repository are considered ready to be - deployed -* Config Sync supports deploying individual packages and whole repositories. - For Git specifically that translates to a requirement to be able to specify - repository, branch/tag/ref, and directory when instructing Config Sync to - deploy a package. -* _Draft_ packages need to be identified in such a way that Config Sync can - easily avoid deploying them. -* Config Sync needs to be able to pin to specific versions of deployable - packages in order to orchestrate rollouts and rollbacks. This means it must - be possible to GET a specific version of a package. -* Config Sync needs to be able to discover when new versions are available for - deployment. - -### Functions - -Functions, specifically [KRM functions][krm functions], are used in the CaD core -to manipulate resources within packages. - -* Similar to packages, functions are stored in repositories. Some repositories - (such as OCI) are more suitable for storing functions than others (such as - Git). -* Function discovery will be aided by metadata associated with the function - by which the function can advertise which resources it acts on, whether the - function is idempotent or not, whether it is a mutator or validator, etc. -* Function repositories can be registered and subsequently, user can discover - functions from the registered repositories and use them as follows: - -Function can be: - -* applied imperatively to a package draft to perform specific mutation to the - package's resources or meta-resources (`Kptfile` etc.) -* registered in the package's `Kptfile` function pipeline as a *mutator* or - *validator* in order to be automatically run as part of package rendering -* registered at the repository level as *mutator* or *validator*. Such function - then applies to all packages in the repository and is evaluated whenever a - change to a package in the repository occurs. - -## Package Orchestration - Porch - -Having established the context of the CaD Core components and the overall -architecture, the remainder of the document will focus on **Porch** - Package -Orchestration service. - -To reiterate the role of Package Orchestration service among the CaD Core -components, it is: - -* [Repository Management](#repository-management) -* [Package Discovery](#package-discovery) -* [Package Authoring](#package-authoring) and Lifecycle - -In the following section we'll expand more on each of these areas. The term -_client_ used in these sections can be either a person interacting with the UI -such as a web application or a command-line tool, or an automated agent or -process. - -### Repository Management - -The repository management functionality of Package Orchestration service enables -the client to: - -* register, unregister, update registration of repositories, and discover - registered repositories. Git repository integration will be available first, - with OCI and possibly more delivered in the subsequent releases. -* manage repository-wide upstream/downstream relationships, i.e. designate - default upstream repository from which packages will be cloned. -* annotate repository with metadata such as whether repository contains - deployment ready packages or not; metadata can be application or customer - specific -* define and enforce package invariants (guardrails) at the repository level, by - registering mutator and/or validator functions with the repository; those - registered functions will be applied to packages in the repository to enforce - invariants - -### Package Discovery - -The package discovery functionality of Package Orchestration service enables -the client to: - -* browse packages in a repository -* discover configuration packages in registered repositories and sort/filter - based on the repository containing the package, package metadata, version, - package lifecycle stage (draft, proposed, published) -* retrieve resources and metadata of an individual package, including latest - version or any specific version or draft of a package, for the purpose of - introspection of a single package or for comparison of contents of multiple - versions of a package, or related packages -* enumerate _upstream_ packages available for creating (cloning) a _downstream_ - package -* identify downstream packages that need to be upgraded after a change is made - to an upstream package -* identify all deployment-ready packages in a deployment repository that are - ready to be synced to a deployment target by Config Sync -* identify new versions of packages in a deployment repository that can be - rolled out to a deployment target by Config Sync -* discover functions in registered repositories based on filtering criteria - including containing repository, applicability of a function to a specific - package or specific resource type(s), function metadata (mutator/validator), - idempotency (function is idempotent/not), etc. - -### Package Authoring - -The package authoring and lifecycle functionality of the package Orchestration -service enables the client to: - -* Create a package _draft_ via one of the following means: - * an empty draft 'from scratch' (equivalent to - [kpt pkg init](https://kpt.dev/reference/cli/pkg/init/)) - * clone of an upstream package (equivalent to - [kpt pkg get](https://kpt.dev/reference/cli/pkg/get/)) from either a - registered upstream repository or from another accessible, unregistered, - repository - * edit an existing package (similar to the CLI command(s) - [kpt fn source](https://kpt.dev/reference/cli/fn/source/) or - [kpt pkg pull](https://github.com/GoogleContainerTools/kpt/issues/2557)) - * roll back / restore a package to any of its previous versions - ([kpt pkg pull](https://github.com/GoogleContainerTools/kpt/issues/2557) - of a previous version) -* Apply changes to a package _draft_. In general, mutations include - adding/modifying/deleting any part of the package's contents. Some specific - examples include: - * add/change/delete package metadata (i.e. some properties in the `Kptfile`) - * add/change/delete resources in the package - * add function mutators/validators to the package's [pipeline][] - * invoke a function imperatively on the package draft to perform a desired - mutation - * add/change/delete sub-package - * retrieve the contents of the package for arbitrary client-side mutations - (equivalent to [kpt fn source](https://kpt.dev/reference/cli/fn/source/)) - * update/replace the package contents with new contents, for example results - of a client-side mutations by a UI (equivalent to - [kpt fn sink](https://kpt.dev/reference/cli/fn/sink/)) -* Rebase a package onto another upstream base package - ([detail](https://github.com/GoogleContainerTools/kpt/issues/2548)) or onto - a newer version of the same package (to aid with conflict resolution during - the process of publishing a draft package) -* Get feedback during package authoring, and assistance in recovery from: - * merge conflicts, invalid package changes, guardrail violations - * compliance of the drafted package with repository-wide invariants and - guardrails -* Propose for a _draft_ package be _published_. -* Apply an arbitrary decision criteria, and by a manual or automated action, - approve (or reject) proposal of a _draft_ package to be _published_. -* Perform bulk operations such as: - * Assisted/automated update (upgrade, rollback) of groups of packages matching - specific criteria (i.e. base package has new version or specific base - package version has a vulnerability and should be rolled back) - * Proposed change validation (pre-validating change that adds a validator - function to a base package or a repository) -* Delete an existing package. - -#### Authoring & Latency - -An important goal of the Package Orchestration service is to support building -of task-specific UIs. In order to deliver low latency user experience acceptable -to UI interactions, the innermost authoring loop (depicted below) will require: - -* high performance access to the package store (load/save package) w/ caching -* low latency execution of mutations and transformations on the package contents -* low latency [KRM function][krm functions] evaluation and package rendering - (evaluation of package's function pipelines) - -![Inner Loop](./static/images/Porch%20Inner%20Loop.svg) - -#### Authoring & Access Control - -A client can assign actors (persons, service accounts) to roles that determine -which operations they are allowed to perform in order to satisfy requirements -of the basic roles. For example, only permitted roles can: - -* manipulate repository registration, enforcement of repository-wide - invariants and guardrails -* create a draft of a package and propose the draft be published -* approve (or reject) the proposal to publish a draft package -* clone a package from a specific upstream repository -* perform bulk operations such as rollout upgrade of downstream packages, - including rollouts across multiple downstream repositories -* etc. - -### Porch Architecture - -The Package Orchestration service, **Porch** is designed to be hosted in a -[Kubernetes](https://kubernetes.io/) cluster. - -The overall architecture is shown below, and includes also existing components -(k8s apiserver and Config Sync). - -![](./static/images/Porch%20Architecture.svg) - -In addition to satisfying requirements highlighted above, the focus of the -architecture was to: - -* establish clear components and interfaces -* support a low-latency package authoring experience required by the UIs - -The Porch components are: - -#### Porch Server - -The Porch server is implemented as [Kubernetes extension API server][apiserver]. -The benefits of using Kubernetes extension API server are: - -* well-defined and familiar API style -* availability of generated clients -* integration with existing Kubernetes ecosystem and tools such as `kubectl` - CLI, [RBAC](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) -* avoids requirement to open another network port to access a separate endpoint - running inside k8s cluster (this is a distinct advantage over gRPC which we - considered as an alternative approach) - -Resources implemented by Porch include: - -* `PackageRevision` - represents the _metadata_ of the configuration package - revision stored in a _package_ repository. -* `PackageRevisionResources` - represents the _contents_ of the package revision -* `Function` - represents a [KRM function][krm functions] discovered in - a registered _function_ repository. - -Note that each configuration package revision is represented by a _pair_ of -resources which each present a different view (or [representation][] of the same -underlying package revision. - -Repository registration is supported by a `Repository` [custom resource][crds]. - -**Porch server** itself comprises several key components, including: - -* The *Porch aggregated apiserver* which implements the integration into the - main Kubernetes apiserver, and directly serves API requests for the - `PackageRevision`, `PackageRevisionResources` and `Function` resources. -* Package orchestration *engine* which implements the package lifecycle - operations, and package mutation workflows -* *CaD Library* which implements specific package manipulation algorithms such - as package rendering (evaluation of package's function *pipeline*), - initialization of a new package, etc. The CaD Library is shared with `kpt` - where it likewise provides the core package manipulation algorithms. -* *Package cache* which enables both local caching, as well as abstract - manipulation of packages and their contents irrespectively of the underlying - storage mechanism (Git, or OCI) -* *Repository adapters* for Git and OCI which implement the specific logic of - interacting with those types of package repositories. -* *Function runtime* which implements support for evaluating - [kpt functions][functions] and multi-tier cache of functions to support - low latency function evaluation - -#### Function Runner - -**Function runner** is a separate service responsible for evaluating -[kpt functions][functions]. Function runner exposes a [gRPC](https://grpc.io/) -endpoint which enables evaluating a kpt function on the provided configuration -package. - -The gRPC technology was chosen for the function runner service because the -[requirements](#grpc-api) that informed choice of KRM API for the Package -Orchestration service do not apply. The function runner is an internal -microservice, an implementation detail not exposed to external callers. This -makes gRPC perfectly suitable. - -The function runner also maintains cache of functions to support low latency -function evaluation. - -#### CaD Library - -The [kpt](https://kpt.dev/) CLI already implements foundational package -manipulation algorithms in order to provide the command line user experience, -including: - -* [kpt pkg init](https://kpt.dev/reference/cli/pkg/init/) - create an empty, - valid, KRM package -* [kpt pkg get](https://kpt.dev/reference/cli/pkg/get/) - create a downstream - package by cloning an upstream package; set up the upstream reference of the - downstream package -* [kpt pkg update](https://kpt.dev/reference/cli/pkg/update/) - update the - downstream package with changes from new version of upstream, 3-way merge -* [kpt fn eval](https://kpt.dev/reference/cli/fn/eval/) - evaluate a kpt - function on a package -* [kpt fn render](https://kpt.dev/reference/cli/fn/render/) - render the package - by executing the function pipeline of the package and its nested packages -* [kpt fn source](https://kpt.dev/reference/cli/fn/source/) and - [kpt fn sink](https://kpt.dev/reference/cli/fn/sink/) - read package from - local disk as a `ResourceList` and write package represented as - `ResourcesList` into local disk - -The same set of primitives form the foundational building blocks of the package -orchestration service. Further, the package orchestration service combines these -primitives into higher-level operations (for example, package orchestrator -renders packages automatically on changes, future versions will support bulk -operations such as upgrade of multiple packages, etc). - -The implementation of the package manipulation primitives in kpt was refactored -(with initial refactoring completed, and more to be performed as needed) in -order to: - -* create a reusable CaD library, usable by both kpt CLI and Package - Orchestration service -* create abstractions for dependencies which differ between CLI and Porch, - most notable are dependency on Docker for function evaluation, and dependency - on the local file system for package rendering. - -Over time, the CaD Library will provide the package manipulation primitives: - -* create a valid empty package (init) -* update package upstream pointers (get) -* perform 3-way merge (update) -* render - core package rendering algorithm using a pluggable function evaluator - to support: - * function evaluation via Docker (used by kpt CLI) - * function evaluation via an RPC to a service or appropriate function sandbox - * high-performance evaluation of trusted, built-in, functions without sandbox -* heal configuration (restore comments after lossy transformation) - -and both kpt CLI and Porch will consume the library. This approach will allow -leveraging the investment already made into the high quality package -manipulation primitives, and enable functional parity between KPT CLI and -Package Orchestration service. - -## User Guide - -Find the Porch User Guide in a dedicated [document](../../site/guides/porch-user-guide.md). - -## Open Issues/Questions - -### Deployment Rollouts & Orchestration - -__Not Yet Resolved__ - -Cross-cluster rollouts and orchestration of deployment activity. For example, -package deployed by Config Sync in cluster A, and only on success, the same -(or a different) package deployed by Config Sync in cluster B. - -## Alternatives Considered - -### gRPC API - -We considered the use of [gRPC]() for the Porch API. The primary advantages of -implementing Porch as an extension Kubernetes apiserver are: -* customers won't have to open another port to their Kubernetes cluster and can - reuse their existing infrastructure -* customers can likewise reuse existing, familiar, Kubernetes tooling ecosystem diff --git a/docs/08-package-variant.md b/docs/08-package-variant.md deleted file mode 100644 index 121ff45b..00000000 --- a/docs/08-package-variant.md +++ /dev/null @@ -1,1373 +0,0 @@ -# Package Variant Controller - -* Author(s): @johnbelamaric, @natasha41575 -* Approver: @mortent - -## Why - -When deploying workloads across large fleets of clusters, it is often necessary -to modify the workload configuration for a specific cluster. Additionally, those -workloads may evolve over time with security or other patches that require -updates. [Configuration as Data](06-config-as-data.md) in general and [Package -Orchestration](07-package-orchestration.md) in particular can assist in this. -However, they are still centered around manual, one-by-one hydration and -configuration of a workload. - -This proposal introduces concepts and a set of resources for automating the -creation and lifecycle management of package variants. These are designed to -address several different dimensions of scalability: -- Number of different workloads for a given cluster -- Number of clusters across which those workloads are deployed -- Different types or characteristics of those clusters -- Complexity of the organizations deploying those workloads -- Changes to those workloads over time - -## See Also -- [Package Orchestration](07-package-orchestration.md) -- [#3347](https://github.com/GoogleContainerTools/kpt/issues/3347) Bulk package - creation -- [#3243](https://github.com/GoogleContainerTools/kpt/issues/3243) Support bulk - package upgrades -- [#3488](https://github.com/GoogleContainerTools/kpt/issues/3488) Porch: - BaseRevision controller aka Fan Out controller - but more -- [Managing Package - Revisions](https://docs.google.com/document/d/1EzUUDxLm5jlEG9d47AQOxA2W6HmSWVjL1zqyIFkqV1I/edit?usp=sharing) -- [Porch UpstreamPolicy Resource - API](https://docs.google.com/document/d/1OxNon_1ri4YOqNtEQivBgeRzIPuX9sOyu-nYukjwN1Q/edit?usp=sharing&resourcekey=0-2nDYYH5Kw58IwCatA4uDQw) - -## Core Concepts - -For this solution, "workloads" are represented by packages. "Package" is a more -general concept, being an arbitrary bundle of resources, and therefore is -sufficient to solve the originally stated problem. - -The basic idea here is to introduce a PackageVariant resource that manages the -derivation of a variant of a package from the original source package, and to -manage the evolution of that variant over time. This effectively automates the -human-centered process for variant creation one might use with `kpt`: -1. Clone an upstream package locally -1. Make changes to the local package, setting values in resources and - executing KRM functions -1. Push the package to a new repository and tag it as a new version - -Similarly, PackageVariant can manage the process of updating a package when a -new version of the upstream package is published. In the human-centered -workflow, a user would use `kpt pkg update` to pull in changes to their -derivative package. When using a PackageVariant resource, the change would be -made to the upstream specification in the resource, and the controller would -propose a new Draft package reflecting the outcome of `kpt pkg update`. - -By automating this process, we open up the possibility of performing systematic -changes that tie back to our different dimensions of scalability. We can use -data about the specific variant we are creating to lookup additional context in -the Porch cluster, and copy that information into the variant. That context is a -well-structured resource, not simply key/value pairs. KRM functions within the -package can interpret the resource, modifying other resources in the package -accordingly. The context can come from multiple sources that vary differently -along those dimensions of scalability. For example, one piece of information may -vary by region, another by individual site, another by cloud provider, and yet -another based on whether we are deploying to development, staging, or production. -By utilizing resources in the Porch cluster as our input model, we can represent -this complexity in a manageable model that is reused across many packages, -rather than scattered in package-specific templates or key/value pairs without -any structure. KRM functions, also reused across packages but configured as -needed for the specific package, are used to interpret the resources within the -package. This decouples authoring of the packages, creation of the input model, -and deploy-time use of that input model within the packages, allowing those -activities to be performed by different teams or organizations. - -We refer to the mechanism described above as *configuration injection*. It -enables dynamic, context-aware creation of variants. Another way to think about -it is as a continuous reconciliation, much like other Kubernetes controllers. In -this case, the inputs are a parent package `P` and a context `C` (which may be a -collection of many independent resources), with the output being the derived -package `D`. When a new version of `C` is created by updates to in-cluster -resources, we get a new revision of `D`, customized based upon the updated -context. Similarly, the user (or an automation) can monitor for new versions of -`P`; when one arrives, the PackageVariant can be updated to point to that new -version, resulting in a newly proposed Draft of `D`, updated to reflect the -upstream changes. This will be explained in more detail below. - -This proposal also introduces a way to "fan-out", or create multiple -PackageVariant resources declaratively based upon a list or selector, with the -PackageVariantSet resource. This is combined with the injection mechanism to -enable generation of large sets of variants that are specialized to a particular -target repository, cluster, or other resource. - -## Basic Package Cloning - -The PackageVariant resource controls the creation and lifecycle of a variant -of a package. That is, it defines the original (upstream) package, the new -(downstream) package, and the changes (mutations) that need to be made to -transform the upstream into the downstream. It also allows the user to specify -policies around adoption, deletion, and update of package revisions that are -under the control of the package variant controller. - -The simple clone operation is shown in *Figure 1*. - -| ![Figure 1: Basic Package Cloning](./static/images/packagevariant-clone.png) | ![Legend](./static/images/packagevariant-legend.png) | -| :---: | :---: | -| *Figure 1: Basic Package Cloning* | *Legend* | - - -Note that *proposal* and *approval* are not handled by the package variant -controller. Those are left to humans or other controllers. The exception is the -proposal of deletion (there is no concept of a "Draft" deletion), which the -package variant control will do, depending upon the specified deletion policy. - -### PackageRevision Metadata - -The package variant controller utilizes Porch APIs. This means that it is not -just doing a `clone` operation, but in fact creating a Porch PackageRevision -resource. In particular, that resource can contain Kubernetes metadata that is -not part of the package as stored in the repository. - -Some of that metadata is necessary for the management of the PackageRevision -by the package variant controller - for example, the owner reference indicating -which PackageVariant created the PackageRevision. These are not under the user's -control. However, the PackageVariant resource does make the annotations and -labels of the PackageRevision available as values that may be controlled -during the creation of the PackageRevision. This can assist in additional -automation workflows. - -## Introducing Variance -Just cloning is not that interesting, so the PackageVariant resource also -allows you to control various ways of mutating the original package to create -the variant. - -### Package Context[^porch17] -Every kpt package that is fetched with `--for-deployment` will contain a -ConfigMap called `kptfile.kpt.dev`. Analogously, when Porch creates a package -in a deployment repository, it will create this ConfigMap, if it does not -already exist. Kpt (or Porch) will automatically add a key `name` to the -ConfigMap data, with the value of the package name. This ConfigMap can then -be used as input to functions in the Kpt function pipeline. - -This process holds true for package revisions created via the package variant -controller as well. Additionally, the author of the PackageVariant resource -can specify additional key-value pairs to insert into the package -context, as shown in *Figure 2*. - -| ![Figure 2: Package Context Mutation](./static/images/packagevariant-context.png) | -| :---: | -| *Figure 2: Package Context Mutation * | - -While this is convenient, it can be easily abused, leading to -over-parameterization. The preferred approach is configuration injection, as -described below, since it allows inputs to adhere to a well-defined, reusable -schema, rather than simple key/value pairs. - -### Kptfile Function Pipeline Editing[^porch18] -In the manual workflow, one of the ways we edit packages is by running KRM -functions imperatively. PackageVariant offers a similar capability, by -allowing the user to add functions to the beginning of the downstream package -`Kptfile` mutators pipeline. These functions will then execute before the -functions present in the upstream pipeline. It is not exactly the same as -running functions imperatively, because they will also be run in every -subsequent execution of the downstream package function pipeline. But it can -achieve the same goals. - -For example, consider an upstream package that includes a Namespace resource. -In many organizations, the deployer of the workload may not have the permissions -to provision cluster-scoped resources like namespaces. This means that they -would not be able to use this upstream package without removing the Namespace -resource (assuming that they only have access to a pipeline that deploys with -constrained permissions). By adding a function that removes Namespace resources, -and a call to `set-namespace`, they can take advantage of the upstream package. - -Similarly, the Kptfile pipeline editing feature provides an easy mechanism for -the deployer to create and set the namespace if their downstream package -application pipeline allows it, as seen in *Figure 3*.[^setns] - -| ![Figure 3: KRM Function Pipeline Editing](./static/images/packagevariant-function.png) | -| :---: | -| *Figure 3: Kptfile Function Pipeline Editing * | - -### Configuration Injection[^porch18] - -Adding values to the package context or functions to the pipeline works -for configuration that is under the control of the creator of the PackageVariant -resource. However, in more advanced use cases, we may need to specialize the -package based upon other contextual information. This particularly comes into -play when the user deploying the workload does not have direct control over the -context in which it is being deployed. For example, one part of the organization -may manage the infrastructure - that is, the cluster in which we are deploying -the workload - and another part the actual workload. We would like to be able to -pull in inputs specified by the infrastructure team automatically, based the -cluster to which we are deploying the workload, or perhaps the region in which -that cluster is deployed. - -To facilitate this, the package variant controller can "inject" configuration -directly into the package. This means it will use information specific to this -instance of the package to lookup a resource in the Porch cluster, and copy that -information into the package. Of course, the package has to be ready to receive -this information. So, there is a protocol for facilitating this dance: -- Packages may contain resources annotated with `kpt.dev/config-injection` -- Often, these will also be `config.kubernetes.io/local-config` resources, as - they are likely just used by local functions as input. But this is not - mandatory. -- The package variant controller will look for any resource in the Kubernetes - cluster matching the Group, Version, and Kind of the package resource, and - satisfying the *injection selector*. -- The package variant controller will copy the `spec` field from the matching - in-cluster resource to the in-package resource, or the `data` field in the - case of a ConfigMap. - -| ![Figure 4: Configuration Injection](./static/images/packagevariant-config-injection.png) | -| :---: | -| *Figure 4: Configuration Injection* | - - -Note that because we are injecting data *from the Kubernetes cluster*, we can -also monitor that data for changes. For each resource we inject, the package -variant controller will establish a Kubernetes "watch" on the resource (or -perhaps on the collection of such resources). A change to that resource will -result in a new Draft package with the updated configuration injected. - -There are a number of additional details that will be described in the detailed -design below, along with the specific API definition. - -## Lifecycle Management - -### Upstream Changes -The package variant controller allows you to specific a specific upstream -package revision to clone, or you can specify a floating tag[^notimplemented]. - -If you specify a specific upstream revision, then the downstream will not be -changed unless the PackageVariant resource itself is modified to point to a new -revision. That is, the user must edit the PackageVariant, and change the -upstream package reference. When that is done, the package variant controller -will update any existing Draft package under its ownership by doing the -equivalent of a `kpt pkg update` to update the downstream to be based upon -the new upstream revision. If a Draft does not exist, then the package variant -controller will create a new Draft based on the current published downstream, -and apply the `kpt pkg update`. This updated Draft must then be proposed and -approved like any other package change. - -If a floating tag is used, then explicit modification of the PackageVariant is -not needed. Rather, when the floating tag is moved to a new tagged revision of -the upstream package, the package revision controller will notice and -automatically propose and update to that revision. For example, the upstream -package author may designate three floating tags: stable, beta, and alpha. The -upstream package author can move these tags to specific revisions, and any -PackageVariant resource tracking them will propose updates to their downstream -packages. - -### Adoption and Deletion Policies -When a PackageVariant resource is created, it will have a particular -repository and package name as the downstream. The adoption policy controls -whether the package variant controller takes over an existing package with that -name, in that repository. - -Analogously, when a PackageVariant resource is deleted, a decision must be -made about whether or not to delete the downstream package. This is controlled -by the deletion policy. - -## Fan Out of Variant Generation[^pvsimpl] - -When used with a single package, the package variant controller mostly helps us -handle the time dimension - producing new versions of a package as the upstream -changes, or as injected resources are updated. It can also be useful for -automating common, systematic changes made when bringing an external package -into an organization, or an organizational package into a team repository. - -That is useful, but not extremely compelling by itself. More interesting is when -we use PackageVariant as a primitive for automations that act on other -dimensions of scale. That means writing controllers that emit PackageVariant -resources. For example, we can create a controller that instantiates a -PackageVariant for each developer in our organization, or we can create -a controller to manage PackageVariants across environments. The ability to not -only clone a package, but make systematic changes to that package enables -flexible automation. - -Workload controllers in Kubernetes are a useful analogy. In Kubernetes, we have -different workload controllers such as Deployment, StatefulSet, and DaemonSet. -Ultimately, all of these result in Pods; however, the decisions about what Pods -to create, how to schedule them across Nodes, how to configure those Pods, and -how to manage those Pods as changes happen are very different with each workload -controller. Similarly, we can build different controllers to handle different -ways in which we want to generate PackageRevisions. The PackageVariant -resource provides a convenient primitive for all of those controllers, allowing -a them to leverage a range of well-defined operations to mutate the packages as -needed. - -A common need is the ability to generate many variants of a package based on -a simple list of some entity. Some examples include generating package variants -to spin up development environments for each developer in an organization; -instantiating the same package, with slight configuration changes, across a -fleet of clusters; or instantiating some package per customer. - -The package variant set controller is designed to fill this common need. This -controller consumes PackageVariantSet resources, and outputs PackageVariant -resources. The PackageVariantSet defines: -- the upstream package -- targeting criteria -- a template for generating one PackageVariant per target - -Three types of targeting are supported: -- An explicit list of repositories and package names -- A label selector for Repository objects -- An arbitrary object selector - -Rules for generating a PackageVariant are associated with a list of targets -using a template. That template can have explicit values for various -PackageVariant fields, or it can use [Common Expression Language -(CEL)](https://github.com/google/cel-go) expressions to specify the field -values. - -*Figure 5* shows an example of creating PackageVariant resources based upon the -explicitly list of repositories. In this example, for the `cluster-01` and -`cluster-02` repositories, no template is defined the resulting PackageVariants; -it simply takes the defaults. However, for `cluster-03`, a template is defined -to change the downstream package name to `bar`. - -| ![Figure 5: PackageVariantSet with Repository List](./static/images/packagevariantset-target-list.png) | -| :---: | -| *Figure 5: PackageVariantSet with Repository List* | - -It is also possible to target the same package to a repository more than once, -using different names. This is useful, for example, if the package is used to -provision namespaces and you would like to provision many namespaces in the same -cluster. It is also useful if a repository is shared across multiple clusters. -In *Figure 6*, two PackageVariant resources for creating the `foo` package in -the repository `cluster-01` are generated, one for each listed package name. -Since no `packageNames` field is listed for `cluster-02`, only one instance is -created for that repository. - -| ![Figure 6: PackageVariantSet with Package List](./static/images/packagevariantset-target-list-with-packages.png) | -| :---: | -| *Figure 6: PackageVariantSet with Package List* | - -*Figure 7* shows an example that combines a repository label selector with -configuration injection that various based upon the target. The template for the -PackageVariant includes a CEL expression for the one of the injectors, so that -the injection varies systematically based upon attributes of the target. - -| ![Figure 7: PackageVariantSet with Repository Selector](./static/images/packagevariantset-target-repo-selector.png) | -| :---: | -| *Figure 7: PackageVariantSet with Repository Selector* | - -## Detailed Design - -### PackageVariant API - -The Go types below defines the `PackageVariantSpec`. - -```go -type PackageVariantSpec struct { - Upstream *Upstream `json:"upstream,omitempty"` - Downstream *Downstream `json:"downstream,omitempty"` - - AdoptionPolicy AdoptionPolicy `json:"adoptionPolicy,omitempty"` - DeletionPolicy DeletionPolicy `json:"deletionPolicy,omitempty"` - - Labels map[string]string `json:"labels,omitempty"` - Annotations map[string]string `json:"annotations,omitempty"` - - PackageContext *PackageContext `json:"packageContext,omitempty"` - Pipeline *kptfilev1.Pipeline `json:"pipeline,omitempty"` - Injectors []InjectionSelector `json:"injectors,omitempty"` -} - -type Upstream struct { - Repo string `json:"repo,omitempty"` - Package string `json:"package,omitempty"` - Revision string `json:"revision,omitempty"` -} - -type Downstream struct { - Repo string `json:"repo,omitempty"` - Package string `json:"package,omitempty"` -} - -type PackageContext struct { - Data map[string]string `json:"data,omitempty"` - RemoveKeys []string `json:"removeKeys,omitempty"` -} - -type InjectionSelector struct { - Group *string `json:"group,omitempty"` - Version *string `json:"version,omitempty"` - Kind *string `json:"kind,omitempty"` - Name string `json:"name"` -} - -``` - -#### Basic Spec Fields - -The `Upstream` and `Downstream` fields specify the source package and -destination repository and package name. The `Repo` fields refer to the names -Porch Repository resources in the same namespace as the PackageVariant resource. -The `Downstream` does not contain a revision, because the package variant -controller will only create Draft packages. The `Revision` of the eventual -PackageRevision resource will be determined by Porch at the time of approval. - -The `Labels` and `Annotations` fields list metadata to include on the created -PackageRevision. These values are set *only* at the time a Draft package is -created. They are ignored for subsequent operations, even if the PackageVariant -itself has been modified. This means users are free to change these values on -the PackageRevision; the package variant controller will not touch them again. - -`AdoptionPolicy` controls how the package variant controller behaves if it finds -an existing PackageRevision Draft matching the `Downstream`. If the -`AdoptionPolicy` is `adoptExisting`, then the package variant controller will -take ownership of the Draft, associating it with this PackageVariant. This means -that it will begin to reconcile the Draft, just as if it had created it in the -first place. An `AdoptionPolicy` of `adoptNone` (the default) will simply ignore -any matching Drafts that were not created by the controller. - -`DeletionPolicy` controls how the package variant controller behaves with -respect to PackageRevisions that it has created when the PackageVariant resource -itself is deleted. A value of `delete` (the default) will delete the -PackageRevision (potentially removing it from a running cluster, if the -downstream package has been deployed). A value of `orphan` will remove the owner -references and leave the PackageRevisions in place. - -#### Package Context Injection - -PackageVariant resource authors may specify key-value pairs in the -`spec.packageContext.data` field of the resource. These key-value pairs will be -automatically added to the `data` of the `kptfile.kpt.dev` ConfigMap, if it -exists. - -Specifying the key `name` is invalid and must fail validation of the -PackageVariant. This key is reserved for kpt or Porch to set to the package -name. Similarly, `package-path` is reserved and will result in an error. - -The `spec.packageContext.removeKeys` field can also be used to specify a list of -keys that the package variant controller should remove from the `data` field of -the `kptfile.kpt.dev` ConfigMap. - -When creating or updating a package, the package variant controller will ensure -that: -- The `kptfile.kpt.dev` ConfigMap exists, failing if not -- All of the key-value pairs in `spec.packageContext.data` exist in the `data` - field of the ConfigMap. -- None of the keys listed in `spec.packageContext.removeKeys` exist in the - ConfigMap. - -Note that if a user adds a key via PackageVariant, then changes the -PackageVariant to no longer add that key, it will NOT be removed automatically, -unless the user also lists the key in the `removeKeys` list. This avoids the -need to track which keys were added by PackageVariant. - -Similarly, if a user manually adds a key in the downstream that is also listed -in the `removeKeys` field, the package variant controller will remove that key -the next time it needs to update the downstream package. There will be no -attempt to coordinate "ownership" of these keys. - -If the controller is unable to modify the ConfigMap for some reason, this is -considered an error and should prevent generation of the Draft. This will result -in the condition `Ready` being set to `False`. - -#### Kptfile Function Pipeline Editing - -PackageVariant resource creators may specify a list of KRM functions to add to -the beginning of the Kptfile's pipeline. These functions are listed in the field -`spec.pipeline`, which is a -[Pipeline](https://github.com/GoogleContainerTools/kpt/blob/cf1f326486214f6b4469d8432287a2fa705b48f5/pkg/api/kptfile/v1/types.go#L236), -just as in the Kptfile. The user can therefore prepend both `validators` and -`mutators`. - -Functions added in this way are always added to the *beginning* of the Kptfile -pipeline. In order to enable management of the list on subsequent -reconciliations, functions added by the package variant controller will use the -`Name` field of the -[Function](https://github.com/GoogleContainerTools/kpt/blob/cf1f326486214f6b4469d8432287a2fa705b48f5/pkg/api/kptfile/v1/types.go#L283). -In the Kptfile, each function will be named as the dot-delimited concatenation -of `PackageVariant`, the name of the PackageVariant resource, the function name -as specified in the pipeline of the PackageVariant resource (if present), and -the positional location of the function in the array. - -For example, if the PackageVariant resource contains: - -```yaml -apiVersion: config.porch.kpt.dev/v1alpha1 -kind: PackageVariant -metadata: - namespace: default - name: my-pv -spec: - ... - pipeline: - mutators: - - image: gcr.io/kpt-fn/set-namespace:v0.1 - configMap: - namespace: my-ns - name: my-func - - image: gcr.io/kpt-fn/set-labels:v0.1 - configMap: - app: foo -``` - -Then the resulting Kptfile will have these two entries prepended to its -`mutators` list: - -```yaml - pipeline: - mutators: - - image: gcr.io/kpt-fn/set-namespace:v0.1 - configMap: - namespace: my-ns - name: PackageVariant.my-pv.my-func.0 - - image: gcr.io/kpt-fn/set-labels:v0.1 - configMap: - app: foo - name: PackageVariant.my-pv..1 -``` - -During subsequent reconciliations, this allows the controller to identify the -functions within its control, remove them all, and re-add them based on its -updated content. By including the PackageVariant name, we enable chains of -PackageVariants to add functions, so long as the user is careful about their -choice of resource names and avoids conflicts. - -If the controller is unable to modify the Pipeline for some reason, this is -considered an error and should prevent generation of the Draft. This will result -in the condition `Ready` being set to `False`. - -#### Configuration Injection Details - -As described [above](#configuration-injection), configuration injection is a -process whereby in-package resources are matched to in-cluster resources, and -the `spec` of the in-cluster resources is copied to the in-package resource. - -Configuration injection is controlled by a combination of in-package resources -with annotations, and *injectors* (also known as *injection selectors*) defined -on the PackageVariant resource. Package authors control the injection points -they allow in their packages, by flagging specific resources as *injection -points* with an annotation. Creators of the PackageVariant resource specify how -to map in-cluster resources to those injection points using the injection -selectors. Injection selectors are defined in the `spec.injectors` field of the -PackageVariant. This field is an ordered array of structs containing a GVK -(group, version, kind) tuple as separate fields, and name. Only the name is -required. To identify a match, all fields present must match the in-cluster -object, and all *GVK* fields present must match the in-package resource. In -general the name will not match the in-package resource; this is discussed in -more detail below. - -The annotations, along with the GVK of the annotated resource, allow a package -to "advertise" the injections it can accept and understand. These injection -points effectively form a configuration API for the package, and the injection -selectors provide a way for the PackageVariant author to specify the inputs -for those APIs from the possible values in the management cluster. If we define -those APIs carefully, they can be used across many packages; since they are -KRM resources, we can apply versioning and schema validation to them as well. -This creates a more maintainable, automatable set of APIs for package -customization than simple key/value pairs. - -As an example, we may define a GVK that contains service endpoints that many -applications use. In each application package, we would then include an instance -of that resource, say called "service-endpoints", and configure a function to -propagate the values from that resource to others within our package. As those -endpoints may vary by region, in our Porch cluster we can create an instance of -this GVK for each region: "useast1-service-endpoints", -"useast2-service-endpoints", "uswest1-service-endpoints", etc. When we -instantiate the PackageVariant for a cluster, we want to inject the resource -corresponding to the region in which the cluster exists. Thus, for each cluster -we will create a PackageVariant resource pointing to the upstream package, but -with injection selector name values that are specific to the region for that -cluster. - -It is important to realize that the name of the in-package resource and the in- -cluster resource need not match. In fact, it would be an unusual coincidence if -they did match. The names in the package are the same across PackageVariants -using that upstream, but we want to inject different resources for each one such -PackageVariant. We also do not want to change the name in the package, because -it likely has meaning within the package and will be used by functions in the -package. Also, different owners control the names of the in-package and in- -cluster resources. The names in the package are in the control of the package -author. The names in the cluster are in the control of whoever populates the -cluster (for example, some infrastructure team). The selector is the glue -between them, and is in control of the PackageVariant resource creator. - -The GVK on the other hand, has to be the same for the in-package resource and -the in-cluster resource, because it tells us the API schema for the resource. -Also, the namespace of the in-cluster object needs to be the same as the -PackageVariant resource, or we could leak resources from namespaces to which -our PackageVariant user does not have access. - -With that understanding, the injection process works as follows: - -1. The controller will examine all in-package resources, looking for those with - an annotation named `kpt.dev/config-injection`, with one of the following - values: `required` or `optional`. We will call these "injection points". It - is the responsibility of the package author to define these injection points, - and to specify which are required and which are optional. Optional injection - points are a way of specifying default values. -1. For each injection point, a condition will be created *in the - downstream PackageRevision*, with ConditionType set to the dot-delimited - concatenation of `config.injection`, with the in-package resource kind and - name, and the value set to `False`. Note that since the package author - controls the name of the resource, kind and name are sufficient to - disambiguate the injection point. We will call this ConditionType the - "injection point ConditionType". -1. For each required injection point, the injection point ConditionType will - be added to the PackageRevision `readinessGates` by the package variant - controller. Optional injection points' ConditionTypes must not be added to - the `readinessGates` by the package variant controller, but humans or other - actors may do so at a later date, and the package variant controller should - not remove them on subsequent reconciliations. Also, this relies upon - `readinessGates` gating publishing the package to a *deployment* repository, - but not gating publishing to a blueprint repository. -1. The injection processing will proceed as follows. For each injection point: - - The controller will identify all in-cluster objects in the same - namespace as the PackageVariant resource, with GVK matching the injection - point (the in-package resource). If the controller is unable to load this - objects (e.g., there are none and the CRD is not installed), the injection - point ConditionType will be set to `False`, with a message indicating that - the error, and processing proceeds to the next injection point. Note that - for `optional` injection this may be an acceptable outcome, so it does not - interfere with overall generation of the Draft. - - The controller will look through the list of injection selectors in - order and checking if any of the in-cluster objects match the selector. If - so, that in-cluster object is selected, and processing of the list of - injection selectors stops. Note that the namespace is set based upon the - PackageVariant resource, the GVK is set based upon the in-package resource, - and all selectors require name. Thus, at most one match is possible for any - given selector. Also note that *all fields present in the selector* must - match the in-cluster resource, and only the *GVK fields present in the - selector* must match the in-package resource. - - If no in-cluster object is selected, the injection point ConditionType will - be set to `False` with a message that no matching in-cluster resource was - found, and processing proceeds to the next injection point. - - If a matching in-cluster object is selected, then it is injected as - follows: - - For ConfigMap resources, the `data` field from the in-cluster resource is - copied to the `data` field of the in-package resource (the injection - point), overwriting it. - - For other resource types, the `spec` field from the in-cluster resource - is copied to the `spec` field of the in-package resource (the injection - point), overwriting it. - - An annotation with name `kpt.dev/injected-resource-name` and value set to - the name of the in-cluster resource is added (or overwritten) in the - in-package resource. - -If the the overall injection cannot be completed for some reason, or if any of -the below problems exist in the upstream package, it is considered an error and -should prevent generation of the Draft: - - There is a resource annotated as an injection point but having an invalid - annotation value (i.e., other than `required` or `optional`). - - There are ambiguous condition types due to conflicting GVK and name - values. These must be disambiguated in the upstream package, if so. - -This will result in the condition `Ready` being set to `False`. - -Note that whether or not all `required` injection points are fulfilled does not -affect the *PackageVariant* conditions, only the *PackageRevision* conditions. - -**A Further Note on Selectors** - -Note that by allowing the use of GVK, not just name, in the selector, more -precision in selection is enabled. This is a way to constrain the injections -that will be done. That is, if the package has 10 different objects with -`config-injection` annotation, the PackageVariant could say it only wants to -replace certain GVKs, allowing better control. - -Consider, for example, if the cluster contains these resources: - -- GVK1 foo -- GVK1 bar -- GVK2 foo -- GVK2 bar - -If we could only define injection selectors based upon name, it would be -impossible to ever inject one GVK with `foo` and another with `bar`. Instead, -by using GVK, we can accomplish this with a list of selectors like: - - - GVK1 foo - - GVK2 bar - -That said, often name will be sufficiently unique when combined with the -in-package resource GVK, and so making the selector GVK optional is more -convenient. This allows a single injector to apply to multiple injection points -with different GVKs. - -#### Order of Mutations - -During creation, the first thing the controller does is clone the upstream -package to create the downstream package. - -For update, first note that changes to the downstream PackageRevision can be -triggered for several different reasons: - -1. The PackageVariant resource is updated, which could change any of the options - for introducing variance, or could also change the upstream package revision - referenced. -1. A new revision of the upstream package has been selected due to a floating - tag change, or due to a force retagging of the upstream. -1. An injected in-cluster object is updated. - -The downstream PackageRevision may have been updated by humans or other -automation actors since creation, so we cannot simply recreate the downstream -PackageRevision from scratch when one of these changes happens. Instead, the -controller must maintain the later edits by doing the equivalent of a `kpt pkg -update`, in the case of changes to the upstream for any reason. Any other -changes require reapplication of the PackageVariant functionality. With that -understanding, we can see that the controller will perform mutations on the -downstream package in this order, for both creation and update: - -1. Create (via Clone) or Update (via `kpt pkg update` equivalent) - - This is done by the Porch server, not by the package variant controller - directly. - - This means that Porch will run the Kptfile pipeline after clone or - update. -1. Package variant controller applies configured mutations - - Package Context Injections - - Kptfile KRM Function Pipeline Additions/Changes - - Config Injection -1. Package variant controller saves the PackageRevision and - PackageRevisionResources. - - Porch server executes the Kptfile pipeline - -The package variant controller mutations edit resources (including the Kptfile), -based on the contents of the PackageVariant and the injected in-cluster -resources, but cannot affect one another. The results of those mutations -throughout the rest of the package is materialized by the execution of the -Kptfile pipeline during the save operation. - -#### PackageVariant Status - -PackageVariant sets the following status conditions: - - `Stalled` is set to True if there has been a failure that most likely - requires user intervention. - - `Ready` is set to True if the last reconciliation successfully produced an - up-to-date Draft. - -The PackageVariant resource will also contain a `DownstreamTargets` field, -containing a list of downstream `Draft` and `Proposed` PackageRevisions owned by -this PackageVariant resource, or the latest `Published` PackageRevision if there -are none in `Draft` or `Proposed` state. Typically, there is only a single -Draft, but use of the `adopt` value for `AdoptionPolicy` could result in -multiple Drafts being owned by the same PackageVariant. - -### PackageVariantSet API[^pvsimpl] - -The Go types below defines the `PackageVariantSetSpec`. - -```go -// PackageVariantSetSpec defines the desired state of PackageVariantSet -type PackageVariantSetSpec struct { - Upstream *pkgvarapi.Upstream `json:"upstream,omitempty"` - Targets []Target `json:"targets,omitempty"` -} - -type Target struct { - // Exactly one of Repositories, RepositorySeletor, and ObjectSelector must be - // populated - // option 1: an explicit repositories and package names - Repositories []RepositoryTarget `json:"repositories,omitempty"` - - // option 2: a label selector against a set of repositories - RepositorySelector *metav1.LabelSelector `json:"repositorySelector,omitempty"` - - // option 3: a selector against a set of arbitrary objects - ObjectSelector *ObjectSelector `json:"objectSelector,omitempty"` - - // Template specifies how to generate a PackageVariant from a target - Template *PackageVariantTemplate `json:"template,omitempty"` -} -``` - -At the highest level, a PackageVariantSet is just an upstream, and a list of -targets. For each target, there is a set of criteria for generating a list, and -a set of rules (a template) for creating a PackageVariant from each list entry. - -Since `template` is optional, lets start with describing the different types of -targets, and how the criteria in each is used to generate a list that seeds the -PackageVariant resources. - -The `Target` structure must include exactly one of three different ways of -generating the list. The first is a simple list of repositories and package -names for each of those repositories[^repo-pkg-expr]. The package name list is -needed for uses cases in which you want to repeatedly instantiate the same -package in a single repository. For example, if a repository represents the -contents of a cluster, you may want to instantiate a namespace package once for -each namespace, with a name matching the namespace. - -This example shows using the `repositories` field: - -```yaml -apiVersion: config.porch.kpt.dev/v1alpha2 -kind: PackageVariantSet -metadata: - namespace: default - name: example -spec: - upstream: - repo: example-repo - package: foo - revision: v1 - targets: - - repositories: - - name: cluster-01 - - name: cluster-02 - - name: cluster-03 - packageNames: - - foo-a - - foo-b - - foo-c - - name: cluster-04 - packageNames: - - foo-a - - foo-b -``` - -In this case, PackageVariant resources are created for each of these pairs of -downstream repositories and packages names: - -| Repository | Package Name | -| ---------- | ------------ | -| cluster-01 | foo | -| cluster-02 | foo | -| cluster-03 | foo-a | -| cluster-03 | foo-b | -| cluster-03 | foo-c | -| cluster-04 | foo-a | -| cluster-04 | foo-b | - -All of those PackageVariants have the same upstream. - -The second criteria targeting is via a label selector against Porch Repository -objects, along with a list of package names. Those packages will be instantiated -in each matching repository. Just like in the first example, not listing a -package name defaults to one package, with the same name as the upstream -package. Suppose, for example, we have these four repositories defined in our -Porch cluster: - -| Repository | Labels | -| ---------- | ------------------------------------- | -| cluster-01 | region=useast1, env=prod, org=hr | -| cluster-02 | region=uswest1, env=prod, org=finance | -| cluster-03 | region=useast2, env=prod, org=hr | -| cluster-04 | region=uswest1, env=prod, org=hr | - -If we create a PackageVariantSet with the following `spec`: - -```yaml -spec: - upstream: - repo: example-repo - package: foo - revision: v1 - targets: - - repositorySelector: - matchLabels: - env: prod - org: hr - - repositorySelector: - matchLabels: - region: uswest1 - packageNames: - - foo-a - - foo-b - - foo-c -``` - -then PackageVariant resources will be created with these repository and package -names: - -| Repository | Package Name | -| ---------- | ------------ | -| cluster-01 | foo | -| cluster-03 | foo | -| cluster-04 | foo | -| cluster-02 | foo-a | -| cluster-02 | foo-b | -| cluster-02 | foo-c | -| cluster-04 | foo-a | -| cluster-04 | foo-b | -| cluster-04 | foo-c | - -Finally, the third possibility allows the use of *arbitrary* resources in the -Porch cluster as targeting criteria. The `objectSelector` looks like this: - -```yaml -spec: - upstream: - repo: example-repo - package: foo - revision: v1 - targets: - - objectSelector: - apiVersion: krm-platform.bigco.com/v1 - kind: Team - matchLabels: - org: hr - role: dev -``` - -It works exactly like the repository selector - in fact the repository selector -is equivalent to the object selector with the `apiVersion` and `kind` values set -to point to Porch Repository resources. That is, the repository name comes from -the object name, and the package names come from the listed package names. In -the description of the template, we will see how to derive different repository -names from the objects. - -#### PackageVariant Template - -As previously discussed, the list entries generated by the target criteria -result in PackageVariant entries. If no template is specified, then -PackageVariant default are used, along with the downstream repository name and -package name as described in the previous section. The template allows the user -to have control over all of the values in the resulting PackageVariant. The -template API is shown below. - -```go -type PackageVariantTemplate struct { - // Downstream allows overriding the default downstream package and repository name - // +optional - Downstream *DownstreamTemplate `json:"downstream,omitempty"` - - // AdoptionPolicy allows overriding the PackageVariant adoption policy - // +optional - AdoptionPolicy *pkgvarapi.AdoptionPolicy `json:"adoptionPolicy,omitempty"` - - // DeletionPolicy allows overriding the PackageVariant deletion policy - // +optional - DeletionPolicy *pkgvarapi.DeletionPolicy `json:"deletionPolicy,omitempty"` - - // Labels allows specifying the spec.Labels field of the generated PackageVariant - // +optional - Labels map[string]string `json:"labels,omitempty"` - - // LabelsExprs allows specifying the spec.Labels field of the generated PackageVariant - // using CEL to dynamically create the keys and values. Entries in this field take precedent over - // those with the same keys that are present in Labels. - // +optional - LabelExprs []MapExpr `json:"labelExprs,omitempty"` - - // Annotations allows specifying the spec.Annotations field of the generated PackageVariant - // +optional - Annotations map[string]string `json:"annotations,omitempty"` - - // AnnotationsExprs allows specifying the spec.Annotations field of the generated PackageVariant - // using CEL to dynamically create the keys and values. Entries in this field take precedent over - // those with the same keys that are present in Annotations. - // +optional - AnnotationExprs []MapExpr `json:"annotationExprs,omitempty"` - - // PackageContext allows specifying the spec.PackageContext field of the generated PackageVariant - // +optional - PackageContext *PackageContextTemplate `json:"packageContext,omitempty"` - - // Pipeline allows specifying the spec.Pipeline field of the generated PackageVariant - // +optional - Pipeline *PipelineTemplate `json:"pipeline,omitempty"` - - // Injectors allows specifying the spec.Injectors field of the generated PackageVariant - // +optional - Injectors []InjectionSelectorTemplate `json:"injectors,omitempty"` -} - -// DownstreamTemplate is used to calculate the downstream field of the resulting -// package variants. Only one of Repo and RepoExpr may be specified; -// similarly only one of Package and PackageExpr may be specified. -type DownstreamTemplate struct { - Repo *string `json:"repo,omitempty"` - Package *string `json:"package,omitempty"` - RepoExpr *string `json:"repoExpr,omitempty"` - PackageExpr *string `json:"packageExpr,omitempty"` -} - -// PackageContextTemplate is used to calculate the packageContext field of the -// resulting package variants. The plain fields and Exprs fields will be -// merged, with the Exprs fields taking precedence. -type PackageContextTemplate struct { - Data map[string]string `json:"data,omitempty"` - RemoveKeys []string `json:"removeKeys,omitempty"` - DataExprs []MapExpr `json:"dataExprs,omitempty"` - RemoveKeyExprs []string `json:"removeKeyExprs,omitempty"` -} - -// InjectionSelectorTemplate is used to calculate the injectors field of the -// resulting package variants. Exactly one of the Name and NameExpr fields must -// be specified. The other fields are optional. -type InjectionSelectorTemplate struct { - Group *string `json:"group,omitempty"` - Version *string `json:"version,omitempty"` - Kind *string `json:"kind,omitempty"` - Name *string `json:"name,omitempty"` - - NameExpr *string `json:"nameExpr,omitempty"` -} - -// MapExpr is used for various fields to calculate map entries. Only one of -// Key and KeyExpr may be specified; similarly only on of Value and ValueExpr -// may be specified. -type MapExpr struct { - Key *string `json:"key,omitempty"` - Value *string `json:"value,omitempty"` - KeyExpr *string `json:"keyExpr,omitempty"` - ValueExpr *string `json:"valueExpr,omitempty"` -} - -// PipelineTemplate is used to calculate the pipeline field of the resulting -// package variants. -type PipelineTemplate struct { - // Validators is used to caculate the pipeline.validators field of the - // resulting package variants. - // +optional - Validators []FunctionTemplate `json:"validators,omitempty"` - - // Mutators is used to caculate the pipeline.mutators field of the - // resulting package variants. - // +optional - Mutators []FunctionTemplate `json:"mutators,omitempty"` -} - -// FunctionTemplate is used in generating KRM function pipeline entries; that -// is, it is used to generate Kptfile Function objects. -type FunctionTemplate struct { - kptfilev1.Function `json:",inline"` - - // ConfigMapExprs allows use of CEL to dynamically create the keys and values in the - // function config ConfigMap. Entries in this field take precedent over those with - // the same keys that are present in ConfigMap. - // +optional - ConfigMapExprs []MapExpr `json:"configMapExprs,omitempty"` -} -``` - -This is a pretty complicated structure. To make it more understandable, the -first thing to notice is that many fields have a plain version, and an `Expr` -version. The plain version is used when the value is static across all the -PackageVariants; the `Expr` version is used when the value needs to vary across -PackageVariants. - -Let's consider a simple example. Suppose we have a package for provisioning -namespaces called "base-ns". We want to instantiate this several times in the -`cluster-01` repository. We could do this with this PackageVariantSet: - -```yaml -apiVersion: config.porch.kpt.dev/v1alpha2 -kind: PackageVariantSet -metadata: - namespace: default - name: example -spec: - upstream: - repo: platform-catalog - package: base-ns - revision: v1 - targets: - - repositories: - - name: cluster-01 - packageNames: - - ns-1 - - ns-2 - - ns-3 -``` - -That will produce three PackageVariant resources with the same upstream, all -with the same downstream repo, and each with a different downstream package -name. If we also want to set some labels identically across the packages, we can -do that with the `template.labels` field: - -```yaml -apiVersion: config.porch.kpt.dev/v1alpha2 -kind: PackageVariantSet -metadata: - namespace: default - name: example -spec: - upstream: - repo: platform-catalog - package: base-ns - revision: v1 - targets: - - repositories: - - name: cluster-01 - packageNames: - - ns-1 - - ns-2 - - ns-3 - template: - labels: - package-type: namespace - org: hr -``` - -The resulting PackageVariant resources will include `labels` in their `spec`, -and will be identical other than their names and the `downstream.package`: - -```yaml -apiVersion: config.porch.kpt.dev/v1alpha1 -kind: PackageVariant -metadata: - namespace: default - name: example-aaaa -spec: - upstream: - repo: platform-catalog - package: base-ns - revision: v1 - downstream: - repo: cluster-01 - package: ns-1 - labels: - package-type: namespace - org: hr ---- -apiVersion: config.porch.kpt.dev/v1alpha1 -kind: PackageVariant -metadata: - namespace: default - name: example-aaab -spec: - upstream: - repo: platform-catalog - package: base-ns - revision: v1 - downstream: - repo: cluster-01 - package: ns-2 - labels: - package-type: namespace - org: hr ---- - -apiVersion: config.porch.kpt.dev/v1alpha1 -kind: PackageVariant -metadata: - namespace: default - name: example-aaac -spec: - upstream: - repo: platform-catalog - package: base-ns - revision: v1 - downstream: - repo: cluster-01 - package: ns-3 - labels: - package-type: namespace - org: hr -``` - -When using other targeting means, the use of the `Expr` fields becomes more -likely, because we have more possible sources for different field values. The -`Expr` values are all [Common Expression Language (CEL)](https://github.com/google/cel-go) -expressions, rather than static values. This allows the user to construct values -based upon various fields of the targets. Consider again the -`repositorySelector` example, where we have these repositories in the cluster. - -| Repository | Labels | -| ---------- | ------------------------------------- | -| cluster-01 | region=useast1, env=prod, org=hr | -| cluster-02 | region=uswest1, env=prod, org=finance | -| cluster-03 | region=useast2, env=prod, org=hr | -| cluster-04 | region=uswest1, env=prod, org=hr | - -If we create a PackageVariantSet with the following `spec`, we can use the -`Expr` fields to add labels to the PackageVariantSpecs (and thus to the -resulting PackageRevisions later) that vary based on cluster. We can also use -this to vary the `injectors` defined for each PackageVariant, resulting in each -PackageRevision having different resources injected. This `spec`: - -```yaml -spec: - upstream: - repo: example-repo - package: foo - revision: v1 - targets: - - repositorySelector: - matchLabels: - env: prod - org: hr - template: - labelExprs: - key: org - valueExpr: "repository.labels['org']" - injectorExprs: - - nameExpr: "repository.labels['region'] + '-endpoints'" -``` - -will result in three PackageVariant resources, one for each Repository with the -labels env=prod and org=hr. The `labels` and `injectors` fields of the -PackageVariantSpec will be different for each of these PackageVariants, as -determined by the use of the `Expr` fields in the template, as shown here: - -```yaml -apiVersion: config.porch.kpt.dev/v1alpha1 -kind: PackageVariant -metadata: - namespace: default - name: example-aaaa -spec: - upstream: - repo: example-repo - package: foo - revision: v1 - downstream: - repo: cluster-01 - package: foo - labels: - org: hr - injectors: - name: useast1-endpoints ---- -apiVersion: config.porch.kpt.dev/v1alpha1 -kind: PackageVariant -metadata: - namespace: default - name: example-aaab -spec: - upstream: - repo: example-repo - package: foo - revision: v1 - downstream: - repo: cluster-03 - package: foo - labels: - org: hr - injectors: - name: useast2-endpoints ---- -apiVersion: config.porch.kpt.dev/v1alpha1 -kind: PackageVariant -metadata: - namespace: default - name: example-aaac -spec: - upstream: - repo: example-repo - package: foo - revision: v1 - downstream: - repo: cluster-04 - package: foo - labels: - org: hr - injectors: - name: uswest1-endpoints -``` - -Since the injectors are different for each PackageVariant, the resulting -PackageRevisions will each have different resources injected. - -When CEL expressions are evaluated, they have an environment associated with -them. That is, there are certain objects that are accessible within the CEL -expression. For CEL expressions used in the PackageVariantSet `template` field, -the following variables are available: - -| CEL Variable | Variable Contents | -| -------------- | ------------------------------------------------------------ | -| repoDefault | The default repository name based on the targeting criteria. | -| packageDefault | The default package name based on the targeting criteria. | -| upstream | The upstream PackageRevision. | -| repository | The downstream Repository. | -| target | The target object (details vary; see below). | - -There is one expression that is an exception to the table above. Since the -`repository` value corresponds to the Repository of the downstream, we must -first evaluate the `downstream.repoExpr` expression to *find* that -repository. Thus, for that expression only, `repository` is not a valid -variable. - -There is one more variable available across all CEL expressions: the `target` -variable. This variable has a meaning that varies depending on the type of -target, as follows: - -| Target Type | `target` Variable Contents | -| ------------------- | -------------------------- | -| Repo/Package List | A struct with two fields: `repo` and `package`, the same as the `repoDefault` and `packageDefault` values. | -| Repository Selector | The Repository selected by the selector. Although not recommended, this could be different than the `repository` value, which can be altered with `downstream.repo` or `downstream.repoExpr`. | -| Object Selector | The Object selected by the selector. | - -For the various resource variables - `upstream`, `repository`, and `target` - -arbitrary access to all fields of the object could lead to security concerns. -Therefore, only a subset of the data is available for use in CEL expressions. -Specifically, the following fields: `name`, `namespace`, `labels`, and -`annotations`. - -Given the slight quirk with the `repoExpr`, it may be helpful to state the -processing flow for the template evaluation: - -1. The upstream PackageRevision is loaded. It must be in the same namespace as - the PackageVariantSet[^multi-ns-reg]. -1. The targets are determined. -1. For each target: - 1. The CEL environment is prepared with `repoDefault`, `packageDefault`, - `upstream`, and `target` variables. - 1. The downstream repository is determined and loaded, as follows: - - If present, `downstream.repoExpr` is evaluated using the CEL - environment, and the result used as the downstream repository name. - - Otherwise, if `downstream.repo` is set, that is used as the downstream - repository name. - - If neither is present, the default repository name based on the target is - used (i.e., the same value as the `repoDefault` variable). - - The resulting downstream repository name is used to load the corresponding - Repository object in the same namespace as the PackageVariantSet. - 1. The downstream Repository is added to the CEL environment. - 1. All other CEL expressions are evaluated. -1. Note that if any of the resources (e.g., the upstream PackageRevision, or the - downstream Repository) are not found our otherwise fail to load, processing - stops and a failure condition is raised. Similarly, if a CEL expression - cannot be properly evaluated due to syntax or other reasons, processing stops - and a failure condition is raised. - -#### Other Considerations -It would appear convenient to automatically inject the PackageVariantSet -targeting resource. However, it is better to require the package advertise -the ways it accepts injections (i.e., the GVKs it understands), and only inject -those. This keeps the separation of concerns cleaner; the package does not -build in an awareness of the context in which it expects to be deployed. For -example, a package should not accept a Porch Repository resource just because -that happens to be the targeting mechanism. That would make the package unusable -in other contexts. - -#### PackageVariantSet Status - -The PackageVariantSet status uses these conditions: - - `Stalled` is set to True if there has been a failure that most likely - requires user intervention. - - `Ready` is set to True if the last reconciliation successfully reconciled - all targeted PackageVariant resources. - -## Future Considerations -- As an alternative to the floating tag proposal, we may instead want to have - a separate tag tracking controller that can update PV and PVS resources to - tweak their upstream as the tag moves. -- Installing a collection of packages across a set of clusters, or performing - the same mutations to each package in a collection, is only supported by - creating multiple PackageVariant / PackageVariantSet resources. Options to - consider for these use cases: - - `upstreams` listing multiple packages. - - Label selector against PackageRevisions. This does not seem that useful, as - PackageRevisions are highly re-usable and would likely be composed in many - different ways. - - A PackageRevisionSet resource that simply contained a list of Upstream - structures and could be used as an Upstream. This is functionally equivalent - to the `upstreams` option, but that list is reusable across resources. - - Listing multiple PackageRevisionSets in the upstream would be nice as well. - - Any or all of these could be implemented in PackageVariant, - PackageVariantSet, or both. - -## Footnotes -[^porch17]: Implemented in Porch v0.0.17. -[^porch18]: Coming in Porch v0.0.18. -[^notimplemented]: Proposed here but not yet implemented as of Porch v0.0.18. -[^setns]: As of this writing, the `set-namespace` function does not have a - `create` option. This should be added to avoid the user needing to also use - the `upsert-resource` function. Such common operation should be simple for - users. -[^pvsimpl]: This document describes PackageVariantSet `v1alpha2`, which will be - available starting with Porch v0.0.18. In Porch v0.0.16 and 17, the `v1alpha1` - implementation is available, but it is a somewhat different API, without - support for CEL or any injection. It is focused only on fan out targeting, - and uses a [slightly different targeting - API](https://github.com/GoogleContainerTools/kpt/blob/main/porch/controllers/packagevariantsets/api/v1alpha1/packagevariantset_types.go). -[^repo-pkg-expr]: This is not exactly correct. As we will see later in the - `template` discussion, this the repository and package names listed actually - are just defaults for the template; they can be further manipulated in the - template to reference different downstream repositories and package names. - The same is true for the repositories selected via the `repositorySelector` - option. However, this can be ignored for now. -[^multi-ns-reg]: Note that the same upstream repository can be registered in - multiple namespaces without a problem. This simplifies access controls, - avoiding the need for cross-namespace relationships between Repositories and - other Porch resources. diff --git a/docs/09-function-runner-pod-templates.md b/docs/09-function-runner-pod-templates.md deleted file mode 100644 index bc944e14..00000000 --- a/docs/09-function-runner-pod-templates.md +++ /dev/null @@ -1,88 +0,0 @@ -# Function runner pod templating - -## Why - -`porch-fn-runner` implements a simplistic function-as-a-service for executing kpt functions, running the needed kpt functions wrapped in a grpc server. The function is starting up a number of function evaluator pods for each of the kpt functions. As with any operator that manages pods, it's good to provide some templating and parametrization capabilities of the pods that will be managed by the function runner. - -## Contract for writing pod templates - -The following contract needs to be fulfilled by any function evaluator pod template: - -1. There is a container named "function". -2. The entrypoint of the "function" container will start the wrapper grpc server. -3. The image of the "function" container can be set to the kpt function's image without impacting starting the entrypoint. -4. The arguments of the "function" container can be appended with the entries from the Dockerfile ENTRYPOINT of the kpt function image. - -## Enabling pod templating on function runner - -A Configmap with the pod template should be created in the namespace where the porch-fn-runner pod is running. -The configmap's name should be included as `--function-pod-template` in the command line arguments in the pod spec of the function runner. - -```yaml -... -spec: - serviceAccountName: porch-fn-runner - containers: - - name: function-runner - image: gcr.io/example-google-project-id/porch-function-runner:latest - imagePullPolicy: IfNotPresent - command: - - /server - - --config=/config.yaml - - --functions=/functions - - --pod-namespace=porch-fn-system - - --function-pod-template=kpt-function-eval-pod-template - env: - - name: WRAPPER_SERVER_IMAGE - value: gcr.io/example-google-project-id/porch-wrapper-server:latest - ports: - - containerPort: 9445 - # Add grpc readiness probe to ensure the cache is ready - readinessProbe: - exec: - command: - - /grpc-health-probe - - -addr - - localhost:9445 -... -``` - -## Example pod template - -The below pod template Configmap matches the default behavior: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: kpt-function-eval-pod-template -data: - template: | - apiVersion: v1 - kind: Pod - annotations: - cluster-autoscaler.kubernetes.io/safe-to-evict: true - spec: - initContainers: - - name: copy-wrapper-server - image: gcr.io/example-google-project-id/porch-wrapper-server:latest - command: - - cp - - -a - - /wrapper-server/. - - /wrapper-server-tools - volumeMounts: - - name: wrapper-server-tools - mountPath: /wrapper-server-tools - containers: - - name: function - image: image-replaced-by-kpt-func-image - command: - - /wrapper-server-tools/wrapper-server - volumeMounts: - - name: wrapper-server-tools - mountPath: /wrapper-server-tools - volumes: - - name: wrapper-server-tools - emptyDir: {} -``` \ No newline at end of file diff --git a/docs/README.md b/docs/README.md index 7c04825e..fd5100ea 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,4 +1,3 @@ # Docs -These are rough docs, brought over from the [kpt](https://github.com/kptdev/kpt) -repository when Porch moved here. They need some work. +The documentation was moved to the [Nephio Docs repo](https://github.com/nephio-project/docs/tree/main/content/en/docs/porch) and rendered in the [Nephio documentation page](https://docs.nephio.org/docs/porch/). \ No newline at end of file diff --git a/docs/adding-external-git-ca-bundle.md b/docs/adding-external-git-ca-bundle.md deleted file mode 100644 index cba9e0fe..00000000 --- a/docs/adding-external-git-ca-bundle.md +++ /dev/null @@ -1,32 +0,0 @@ -# Adding an external Git CaBundle - -To enable the porch server to communicate with a custom git deployment over HTTPS, we must: -1. Provide a additional args flag `use-git-cabundle=true` to the porch-server deployment. -2. Provide an additional kubernetes secret containing the relevant certificate chain in the form of a cabundle. - -The secret itself must meet the following criteria: - -- exist in the same `namespace` as the Repository CR (Custom Resource) that requires it -- be named specifically `-ca-bundle` -- have a Data key named `ca.crt` containing the relevant ca certificate (chain) - -For example, a Git Repository is hosted over HTTPS at the following URL: - -`https://my-gitlab.com/joe.bloggs/blueprints.git` - -Before creating the new Repository in the **gitlab** namespace, we must create a secret that fulfils the criteria above. - -`kubectl create secret generic gitlab-ca-bundle --namespace=gitlab --from-file=ca.crt` - -Which would produce the following: - -``` -apiVersion: v1 -kind: Secret -metadata: - name: gitlab-ca-bundle - namespace: gitlab -type: Opaque -data: - ca.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNuakNDQWdHZ0F3SUJBZ0lRTEdmUytUK3YyRDZDczh1MVBlUUlKREFLQmdncWhrak9QUVFEQkRBZE1Sc3cKR1FZRFZRUURFeEpqWlhKMExXMWhibUZuWlhJdWJHOWpZV3d3SGhjTk1qUXdOVE14TVRFeU5qTXlXaGNOTWpRdwpPREk1TVRFeU5qTXlXakFWTVJNd0VRWURWUVFGRXdveE1qTTBOVFkzT0Rrd01JSUJJakFOQmdrcWhraUc5dzBCCkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXhCUUtWMEVzQ1JOOGxuV3lQR1ZWNXJwam5QZkI2emszK0N4cEp2NVMKUWhpMG1KbDI0elV1WWZjRzNxdFUva1NuREdjK3NQRUY0RmlOcUlsSTByWHBQSXBPazhKbjEvZU1VT3RkZUUyNgpSWEZBWktjeDVvdUJyZVNja3hsN2RPVkJnOE1EM1h5RU1PQU5nM0hJZ1J4ZWx2U2p1dy8vMURhSlRnK0lBS0dUCkgrOVlRVFcrZDIwSk5wQlR3NkdnQlRsYmdqL2FMRWEwOXVYSVBjK0JUSkpXRThIeDhkVjFNbEtHRFlDU29qZFgKbG9TN1FIa0dsSVk3M0NPZVVGWEVnTlFVVmZaZHdreXNsT3F4WmdXUTNZTFZHcEFyRitjOVdyUGpQQU5NQWtORQpPdHRvaG8zTlRxQ3FST3JEa0RMYWdsU1BKSUd1K25TcU5veVVxSUlWWkV5R1dRSURBUUFCbzJBd1hqQU9CZ05WCkhROEJBZjhFQkFNQ0JhQXdEQVlEVlIwVEFRSC9CQUl3QURBZkJnTlZIU01FR0RBV2dCUitFZTVDTnVJSkcwZjkKV3J3VzdqYUZFeVdzb1RBZEJnTlZIUkVFRmpBVWdoSm5hWFJzWVdJdVpYaGhiWEJzWlM1amIyMHdDZ1lJS29aSQp6ajBFQXdRRGdZb0FNSUdHQWtGLzRyNUM4bnkwdGVIMVJlRzdDdXJHYk02SzMzdTFDZ29GTkthajIva2ovYzlhCnZwODY0eFJKM2ZVSXZGMEtzL1dNUHNad2w2bjMxUWtXT2VpM01aYWtBUUpCREw0Kyt4UUxkMS9uVWdqOW1zN2MKUUx3NXVEMGxqU0xrUS9mOTJGYy91WHc4QWVDck5XcVRqcDEycDJ6MkUzOXRyWWc1a2UvY2VTaWFPUm16eUJuTwpTUTg9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0= -``` \ No newline at end of file diff --git a/docs/development.md b/docs/development.md deleted file mode 100644 index f3117e13..00000000 --- a/docs/development.md +++ /dev/null @@ -1,107 +0,0 @@ -# Development - -## Changing Porch API - -If you change the API resources, in `api/porch/.../*.go`, update the generated code by running: - -```sh -make generate -``` - -## Components - -Porch comprises of several software components: - -* [api](../api): Definition of the KRM API supported by the Porch extension apiserver -* [porchctl](../cmd/porchctl): CLI command tool for administration of Porch `Repository` and `PackageRevision` custom resources. -* [apiserver](../pkg/apiserver/): The Porch apiserver implementation, REST handlers, Porch `main` function -* [engine](../pkg/engine/): Core logic of Package Orchestration - operations on package contents -* [func](../func): KRM function evaluator microservice; exposes gRPC API -* [repository](../pkg/repository/): Repository integration package -* [git](../pkg/git/): Integration with Git repository. -* [oci](../pkg/oci/): Integration with OCI repository. -* [cache](../pkg/cache/): Package caching. -* [controllers](../controllers): `Repository` CRD. No controller; - Porch apiserver watches these resources for changes as repositories are (un-)registered. -* [test](../test): Test Git Server for Porch e2e testing, and - [e2e](../test/e2e/) tests. - -## Running Porch - -See dedicated documentation on running Porch: - -* [locally](running-locally.md) -* [on GKE](../../site/guides/porch-installation.md) - -## Build the Container Images - -Build Docker images of Porch components: - -```sh -# Build Images -make build-images - -# Push Images to Docker Registry -make push-images - -# Supported make variables: -# IMAGE_TAG - image tag, i.e. 'latest' (defaults to 'latest') -# GCP_PROJECT_ID - GCP project hosting gcr.io repository (will translate to gcr.io/${GCP_PROJECT_ID}) -# IMAGE_REPO - overwrites the default image repository - -# Example: -IMAGE_TAG=$(git rev-parse --short HEAD) make push-images -``` - -## Running Locally - -Follow [running-locally.md](./running-locally.md) to run Porch locally. - -## Debugging - -To debug Porch, run Porch locally [running-locally.md](./running-locally.md), exit porch server running in the shell, -and launch Porch under the debugger. VSCode debug session is pre-configured in [launch.json](../.vscode/launch.json). - -Update the launch arguments to your needs. - -## Code Pointers - -Some useful code pointers: - -* Porch REST API handlers in [registry/porch](../pkg/registry/porch/), for example - [packagerevision.go](../pkg/registry/porch/packagerevision.go) -* Background task handling cache updates in [background.go](../pkg/registry/porch/background.go) -* Git repository integration in [pkg/git](../pkg/git) -* OCI repository integration in [pkg/oci](../pkg/oci) -* CaD Engine in [engine](../pkg/engine) -* e2e tests in [e2e](../test/e2e/). See below more on testing. - -## Running Tests - -All tests can be run using `make test`. Individual tests can be run using `go test`. -End-to-End tests assume that Porch instance is running and `KUBECONFIG` is configured -with the instance. The tests will automatically detect whether they are running against -Porch running on local machien or k8s cluster and will start Git server appropriately, -then run test suite against the Porch instance. - -## Makefile Targets - -* `make generate`: generate code based on Porch API definitions (runs k8s code generators) -* `make tidy`: tidies all Porch modules -* `make fmt`: formats golang sources -* `make build-images`: builds Porch Docker images -* `make push-images`: builds and pushes Porch Docker images -* `make deployment-config`: customizes configuration which installs Porch - in k8s cluster with correct image names, annotations, service accounts. - The deployment-ready configuration is copied into `./.build/deploy` -* `make deploy`: deploys Porch in the k8s cluster configured with current kubectl context -* `make push-and-deploy`: builds, pushes Porch Docker images, creates deployment configuration, and deploys Porch -* `make` or `make all`: builds and runs Porch [locally](./running-locally.md) -* `make test`: runs tests - -## VSCode - -[VSCode](https://code.visualstudio.com/) works really well for editing and debugging. -Because Porch is comprises of multiple go modules, there is a pre-configured -multi-folder workspace in [porch.code-workspace](../porch.code-workspace). -Open it in VSCode (File / Open Workspace from File) to use Workspace Folders. diff --git a/docs/porch-roadmap.md b/docs/porch-roadmap.md deleted file mode 100644 index 27811274..00000000 --- a/docs/porch-roadmap.md +++ /dev/null @@ -1,157 +0,0 @@ -# Porch Roadmap - -Last updated: February 9th, 2023 - -This document outlines next steps for Porch in several areas. This is a living -document outlining future direction and work in different Porch subsystems. - -## API Changes - -* Expression kpt function type 'signature', including: - * types of resources the function acts on - * schema of the function config - * types of resources the function _produces_ (if the function introduces new - resources into the configuration package) -* Add `Package` resource to encapsulate all `PackageRevision`s of the same - package, link to the latest `PackageRevision`. Possibly the `Package` resource - can allow mutation of the package or its contents, and automatically create - new (_Draft_) `PackageRevision` resources on mutations. -* Implement support for API-level filtering (field and label selectors) for all - `list` operations. -* Make sure that all errors translate to the appropriate API-level HTTP status - with clear, actionable messages. -* Cross-namespace cloning to make it possible to better leverage Kubernetes RBAC - for controlling access to repositories. -* Move long-running operations to asynchronous operations by controllers rather than - synchronous operations by the aggregated apiserver. This means exposing results - in the status object of resources rather than return errors. -* Support non-KRM content as part of `ResourceList` to allow lossless package - transformations, or compensate for lack of this support in general by enabling - in Porch partial package revision `pull` and `push`. - -## Repository Management - -* Support for specifying repository-wide, default _upstream_ repository which - would become the default upstream repository for cloned packages -* Repository-wide guardrails - functions registered with the repository that - then are evaluated on packages in that repository whenever those packages - change. -* Support updating repository registration, for example when `Repository` - resource is modified to point to a different repository, or even a different - type of a repository (Git --> OCI). -* Support read only repositories. Porch will allow package discovery in a read - only repository but attempt to create/modify package in read only repository - will result in an error. Consider supporting via RBAC so different principals - can have different level of access to the same repository. -* Implement repository cache eviction policy -* Support `ObjectMeta.GenerateName` for `PackageRevision` creation. Currently - package names are computed as -. Ideally Porch would accept - name prefix (constrained for example to the last segment of the package name) - as `GenerateName` value, for example `istions` and Porch would append the SHA. - This will require creating an inverse mapping from package name to its owning - repository. Currently the inverse mapping is encoded in the package name, - whose format is `-`. -* Error-resilient repository ingestion (some erroneous packages in the - repository should not prevent repository from successfully loading). -* Make the background repository routine a controller to leverage functionality - in the common controller libraries, such as maintaining reliable `Watch` - connection (`background.go`). -* Enable OCI repositories with heterogeneous contents (containing both - `Package` and `Function` resources)? -* Improve synchronization of repository actions to avoid simultaneous repository - fetches and repository access that requires synchronization. - -### Git - -* Support authentication for cloning packages from unregistered repositories. -* Porch will need to store more information associated with a package revision, - for example: - * information about the package's error status (to populate the `status` - section of the PackageRevision API resource)) - * rationale for rejection proposal to publish a package - - We will need to utilize Git repository or some auxiliary storage (git is - preferred because it also propagates information across Porch instances) - and we can consider: - * storing the information in a HEAD draft commit. When draft is updated, - Porch would drop this HEAD commit, stack more mutation commits and then - add a new HEAD commit with additional meta information - * using separate 'meta' branches - * Git notes (though these are attached to object ) -* Implement appropriate caching when cloning packages from unregistered - repositories (currently, those repositories are fetched and immediately - deleted)) - -## OCI - -* Complete the OCI support (current implementation is partial, missing package - lifecycle support, cloning from OCI repository is not supported, etc.) -* Support for authentication methods as required by integration with specific - OCI repository providers. Currently Porch authenticates as the workload - identity GCP service account which works well with Google Container Registry - and Artifact Registry; different methods will likely be needed for other - providers. - -## Engine - -* Create a unified representation of a package and its contents in the system. - Porch Engine currently stores package contents as `map[string]string` (file - name --> file contents, see `PackageResources` type) and kpt intrinsic - algorithms work with `kyaml filesys.FileSys` interface, necessitating - translation. Ideal representation would help minimize the need to not only - translate the representation at the macro level but also reduce need for - repeated parsing and serialization of YAML. -* Support package contents that are not text -* Revisit package update mutation to avoid using local file system and integrate - better with CaD library (`updatePackageMutation.Apply`). -* Migrate the PackageRevision resource to a CRD rather than using the - aggregated APIServer. - -## Package Lifecycle - -* Ensure that all operations can be performed only on package revision in the - appropriate lifecycle state (example: only _Published_ packages can be cloned, - deployed, etc.) -* Support detection of new version of upstream package and downstream package - update -* Support sub-packages -* Handling of merge conflicts, assistance with manual conflict resolution -* Bulk package operations (bulk upgrade from updated upstream package) -* Permission model to enable admins more fine-grained control over repository - access than what it supported by underlying Git or other providers - -## CLI Integration - -* Support for registering repository-wide guardrails - mutators or validators. -* Support for updating repository registration (currently only `register`, - `unregister`, and `get` are implemented) -* On repository unregistration, the CLI can check all other registered - repositories and suggest to the user to keep or delete the secret containing - credentials depending on whether other repository registrations use it or - the last one is being deleted; today, a `--keep-auth-secret` flag is used. -* Registration of _function_ repositories (only _package_ repositories are - currently supported in the CLI). -* Function discovery via in registered function repositories. -* Consider revising the structure of the `kpt alpha` command groups. `kubectl` - organizes the groups by action, for example `kpt get ` whereas - `kpt` by resource: `kpt alpha rpkg get`. Consider `kpt alpha get rpkg` or - `kpt alpha get repo` for consistency with `kubectl` experience. -* Implement richer support for referencing to packages by URLs with proper - parsing, reduce number of command line flags required. For example, support: - `https://github.com/org/repo.git/packge/patch@reference`; Make the parsing - code reusable with the rest of kpt CLI. - -## Testing - -* Enable the e2e tests to run against a specified Git repository -* Accept Git test image as an argument to avoid requiring the Porch server - image and Git test server image to share the same tag - (see `InferGitServerImage` function and `suite.go` file) -* Set up infrastructure for better testing of the controllers. - -## Deployment and integration with syncers -* Support bulk management of variants of packages based on deployment targets. -* Rollout engine for progressive rollout of packages into clusters. - - - diff --git a/docs/porchctl-cli-guide.md b/docs/porchctl-cli-guide.md deleted file mode 100644 index e5cbd450..00000000 --- a/docs/porchctl-cli-guide.md +++ /dev/null @@ -1,70 +0,0 @@ -## Using the porchctl cli - - -When Porch was ported to Nephio, the `kpt alpha rpkg` commands in kpt were moved into a new command called `porchctl`. - -To use it locally, [download](https://github.com/nephio-project/porch/releases), unpack and add it to your PATH. - -_Optional: Generate the autocompletion script for the specified shell to add to your profile._ - -``` -porchctl completion bash -``` - -Check that porchctl is working: - -``` -porchctl --help - -porchctl interacts with a Kubernetes API server with the Porch -server installed as an aggregated API server. It allows you to -manage Porch repository registrations and the packages within -those repositories. - -Usage: - porchctl [flags] - porchctl [command] - -Available Commands: - completion Generate the autocompletion script for the specified shell - help Help about any command - repo Manage package repositories. - rpkg Manage packages. - version Print the version number of porchctl - -Flags: - -h, --help help for porchctl - --log-flush-frequency duration Maximum number of seconds between log flushes (default 5s) - --truncate-output Enable the truncation for output (default true) - -v, --v Level number for the log level verbosity - -Use "porchctl [command] --help" for more information about a command. - -``` - -The `porchtcl` command is an administration command for acting on Porch `Repository` (repo) and `PackageRevision` (rpkg) CRs. - -The commands for administering repositories are: - -| Command | Description | -| --------------------- | ------------------------------ | -| `porchctl repo get` | List registered repositories. | -| `porchctl repo reg` | Register a package repository. | -| `porchctl repo unreg` | Unregister a repository. | - -The commands for administering package revisions are: - -| Command | Description | -| ------------------------------ | --------------------------------------------------------------------------------------- | -| `porchctl rpkg approve` | Approve a proposal to publish a package revision. | -| `porchctl rpkg clone` | Create a clone of an existing package revision. | -| `porchctl rpkg copy` | Create a new package revision from an existing one. | -| `porchctl rpkg del` | Delete a package revision. | -| `porchctl rpkg get` | List package revisions in registered repositories. | -| `porchctl rpkg init` | Initializes a new package in a repository. | -| `porchctl rpkg propose` | Propose that a package revision should be published. | -| `porchctl rpkg propose-delete` | Propose deletion of a published package revision. | -| `porchctl rpkg pull` | Pull the content of the package revision. | -| `porchctl rpkg push` | Push resources to a package revision. | -| `porchctl rpkg reject` | Reject a proposal to publish or delete a package revision. | -| `porchctl rpkg update` | Update a downstream package revision to a more recent revision of its upstream package. | diff --git a/docs/running-locally.md b/docs/running-locally.md deleted file mode 100644 index c0aff388..00000000 --- a/docs/running-locally.md +++ /dev/null @@ -1,115 +0,0 @@ -# Running Porch Locally - -## Prerequisites - -To run Porch locally, you will need: - -* Linux machine (technically it is possible to run Porch locally on a Mac but - due to differences in Docker between Linux and Mac, the Porch scripts are - confirmed to work on Linux) -* [go 1.21](https://go.dev/dl/) or newer -* [docker](https://docs.docker.com/get-docker/) -* [git](https://git-scm.com/) -* [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/) -* `make` - -## Getting Started - -Clone this repository into `${GOPATH}/src/github.com/GoogleContainerTools/kpt`. - -```sh -git clone https://github.com/GoogleContainerTools/kpt.git "${GOPATH}/src/github.com/GoogleContainerTools/kpt" -``` - -Download dependencies: - -```sh -make tidy -``` - -## Running Porch - -Porch consists of: -* k8s extension apiserver [porch](../pkg/apiserver/) -* kpt function evaluator [func](../func/) -* k8s [controllers](../controllers) - -In addition, to run Porch locally, we need to run the main k8s apiserver and its backing storage, etcd. - -To build and run Porch locally in one command, run: - -```sh -# Go into the porch directory: -cd "${GOPATH}/src/github.com/GoogleContainerTools/kpt/porch" - -# Start Porch in one command: -make -``` - -This will: - -* create Docker network named `porch` -* build and start `etcd` Docker container -* build and start main k8s apiserver Docker container -* build and start the kpt function evaluator microservice [func](../porch/func) Docker container -* build Porch binary and run it locally -* configure Porch as the extension apiserver - -**Note:** this command does not build and start the Porch k8s controllers. Those -are not required for basic package orchestration but are required for deploying packages. - -You can also run the commands individually which can be useful when developing, -in particular building and running Porch extension apiserver. - -```sh -# Create Porch network -make network - -# Build and start etcd container -make start-etcd - -# Build and start main apiserver container -make start-kube-apiserver - -# Build and start kpt function evaluator microservice Docker container -make start-function-runner - -# Build and start Porch on your local machine. -make run-local -``` - -Porch will run directly on your local machine and API requests will be forwarded to it from the -main apiserver. Configure `kubectl` context to interact with the main k8s apiserver running as -Docker container: - -```sh -export KUBECONFIG=${PWD}/deployments/local/kubeconfig - -# Confirm Porch is running -kubectl api-resources | grep porch - -repositories config.porch.kpt.dev/v1alpha1 true Repository -functions porch.kpt.dev/v1alpha1 true Function -packagerevisionresources porch.kpt.dev/v1alpha1 true PackageRevisionResources -packagerevisions porch.kpt.dev/v1alpha1 true PackageRevision -``` - -## Restarting Porch - -If you make code changes, an expedient way to rebuild and restart porch is: - -* Stop Porch running in the shell session (Ctrl+C) -* Run `make run-local` again to rebuild and restart Porch - -## Stopping Porch - -To stop Porch and all associated Docker containers, including the Docker network, run: - -```sh -make stop -``` - -## Troubleshooting - -If you run into issues that look like `git: authentication required`, make sure you have SSH -keys set up on your local machine. diff --git a/docs/running-porch-in-kind-cluster.md b/docs/running-porch-in-kind-cluster.md deleted file mode 100644 index 385841cd..00000000 --- a/docs/running-porch-in-kind-cluster.md +++ /dev/null @@ -1,265 +0,0 @@ -# Build and deploy custom porch images on a kind cluster - -This section covers the process to build and deploy the porch images to a given kind cluster. - -## Prerequisites -The following software should be installed prior to running: -1. [git](https://git-scm.com/) -2. [Docker](https://www.docker.com/get-started/) -Docker image load bug on v25.0.0 Use v24.0.7 -3. [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl) -4. [The go programming language](https://go.dev/doc/install) -5. [kind](https://kind.sigs.k8s.io/docs/user/quick-start#installation) -6. [kpt-cli](https://kpt.dev/installation/kpt-cli) - -## Create a default kind cluster - -If one is not already available, create a kind cluster. - -``` -kind create cluster -n dev -``` - -Optionally, save the config for the new cluster and set it as the default config in the current shell: - -``` -kind get kubeconfig --name=dev > ~/.kube/kind-dev-config -export KUBECONFIG=~/.kube/kind-dev-config -``` - -## Clone Porch and deploy with custom images -Clone the [porch project](https://github.com/nephio-project/porch.git) from Github onto your environment using whatever cloning process for development your organization recommends. -Here, we assume Porch is cloned into a directory called `porch`. - -We will now use the make target `run-in-kind` to build the images and re deploy the porch deployments to use them. - -Here, we pass the following vars to the make target: - -| VAR | DEFAULT | EG | -|---|---|---| -| IMAGE_TAG | $(git_tag)-dirty | test | -| KUBECONFIG | $(CURDIR)/deployments/local/kubeconfig | ~/.kube/config | -| KIND_CONTEXT_NAME | kind | dev | - -``` -cd porch - -make run-in-kind IMAGE_TAG='test' KUBECONFIG='/home/ubuntu/.kube/config' KIND_CONTEXT_NAME='dev' -``` -This will build the porch images locally with the given tag, load them in to the kind docker ctr, update the [porch kpt pkg](https://github.com/nephio-project/catalog/tree/main/nephio/core/porch) to use those images and deploy the pkg to the cluster. - -> **_NOTE:_** The docker build can take some time to complete on first run. Future refinements to the make targets will reduce build and or deploy times. To skip the building of the porch images, we can pass an optional flag SKIP_IMG_BUILD=true to the above make target. - -Check that the new images have been deployed: - -``` -kubectl get deployments -n porch-system -o wide -``` - -Sample output: -``` -NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR -function-runner 2/2 2 2 81m function-runner porch-kind/porch-function-runner:test app=function-runner -porch-controllers 1/1 1 1 81m porch-controllers porch-kind/porch-controllers:test k8s-app=porch-controllers -porch-server 1/1 1 1 81m porch-server porch-kind/porch-server:test app=porch-server -``` - - - -## Deploy a minimal, in memory gitea - -To facilitate testing towards a git repo, we can deploy a minimal, in memory [gitea](https://docs.gitea.com/) installation. - -Here, we pass the following vars to the make target: - -| VAR | DEFAULT | EG | -|---|---|---| -| KUBECONFIG | $(CURDIR)/deployments/local/kubeconfig | ~/.kube/config | - -``` -make deploy-gitea-dev-pkg KUBECONFIG='~/.kube/config' -``` - -Check that gitea have been deployed: - -``` -kubectl get all -n gitea -``` - -Sample output: -``` -NAME READY STATUS RESTARTS AGE -pod/gitea-5746c4b4fc-sqgs6 1/1 Running 0 3m4s - -NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE -service/gitea-http ClusterIP 10.96.104.116 3000/TCP 3m4s -service/gitea-ssh ClusterIP 10.96.168.195 22/TCP 3m4s - -NAME READY UP-TO-DATE AVAILABLE AGE -deployment.apps/gitea 1/1 1 1 3m4s - -NAME DESIRED CURRENT READY AGE -replicaset.apps/gitea-5746c4b4fc 1 1 1 3m4s - -``` - -Now, we can expose the svc by using port forwarding. -In another terminal, run the following: - -``` -kubectl --namespace gitea port-forward svc/gitea-http 3000:3000 -``` - -The gitea UI can now be reached in a local web browser over: - -``` -http://localhost:3000/ -``` - -Admin login: - -``` -user : nephio -password : secret -`````` - -## Setup a test repo on gitea - -To create a new test repo, we can use curl towards the forwarded backend svc port 3000: - -``` -curl -k -H "content-type: application/json" "http://nephio:secret@localhost:3000/api/v1/user/repos" --data '{"name":"testrepo"}' -``` - -To initialize the test repo with a "main" branch, we can clone it locally and push a default setup to it. - -``` -git clone http://localhost:3000/nephio/testrepo.git ~/Downloads/testrepo - -cd ~/Downloads/testrepo - - -touch README.md -git init -git checkout -b main -git add README.md -git commit -m "first commit" -git remote add origin http://localhost:3000/nephio/testrepo.git -git push -u origin main - -user : nephio -pass : secret - -``` - -## Connect porch to the newly create repo - -We can now connect porch to the test repo using the Porch Repository CR (Custom Resource). - -Create a test namespace: - -``` -kubectl create namespace porch-test -``` - -Create a secret for the Gitea credentials in the porch-test namespace: - -``` -kubectl create secret generic gitea-porch-secret \ - --namespace=porch-test \ - --type=kubernetes.io/basic-auth \ - --from-literal=username=nephio \ - --from-literal=password=secret -``` - -Now, we define the test Repository CR in Porch: - -``` -cat < \ No newline at end of file diff --git a/docs/static/images/CaD Overview.svg b/docs/static/images/CaD Overview.svg deleted file mode 100644 index 7ced71bc..00000000 --- a/docs/static/images/CaD Overview.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/static/images/Porch Architecture.svg b/docs/static/images/Porch Architecture.svg deleted file mode 100644 index 926bff1a..00000000 --- a/docs/static/images/Porch Architecture.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/static/images/Porch Inner Loop.svg b/docs/static/images/Porch Inner Loop.svg deleted file mode 100644 index 829db8f1..00000000 --- a/docs/static/images/Porch Inner Loop.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/static/images/packagevariant-clone.png b/docs/static/images/packagevariant-clone.png deleted file mode 100644 index 4f60fd9f376a4049c82274d60979ba2163cfa7ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28004 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 diff --git a/docs/static/images/packagevariant-config-injection.png b/docs/static/images/packagevariant-config-injection.png deleted file mode 100644 index 14fe0a35dba33e16609f0a47da3861dc32f8426d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144272 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 diff --git a/docs/static/images/packagevariant-context.png b/docs/static/images/packagevariant-context.png deleted file mode 100644 index 6fd7e0d5c9f1426caa5a2fb701077c7d9ec1d6ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 75460 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 Tpji6-k1F3%Qz(#o82G;cgP&j> diff --git a/docs/static/images/packagevariant-function.png b/docs/static/images/packagevariant-function.png deleted file mode 100644 index d50cc7c7113a4ab25c10ee18d8de4b0bc3ed1f67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 124315 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 CIml}O diff --git a/docs/static/images/packagevariant-legend.png b/docs/static/images/packagevariant-legend.png deleted file mode 100644 index 83f3729ab92a0b32efb42d71069077218c7bdcc9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24320 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 ail$|GlUby|-3yo%z;^`U2(LPbPW}@QJm=^D diff --git a/docs/static/images/packagevariantset-target-list.png b/docs/static/images/packagevariantset-target-list.png deleted file mode 100644 index 3c3931fe2de2e2848c66221ad30e68448c3f9758..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64351 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%0DG!MB@2;5 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%0A4ih)S_(XPc(iTTus; zA$giLT97N%nPK4_qTcbU%w4^y8Qe1s$5C-`-2-zJCeioI=*K|UrV(_1EsOq2KM@(B!3qiAU+E% z1&AFAzF3GGNKwWs@^ufyF0Cl_&s%|L%bfwx%kn>{c`G}>8cZAjJG4*CdyT*Y(E5f! zfu@LzET9BLhQ;l)T2kxKrFLKCtm8=-YP7B2sfB%yl z7IE!nkrdk~Le#tZJl3YCV|Y`{iZEQC-9qS3@Wm{Og0O>hKP9ajVWS?#A}zcUD=!>j zD4fcGvKl-b(E;s)5EfyHY7F&7fLDTRJX}N&DU}_^a47mdvzHLsl60s+d8U@qlE+8(cZi``DX_e;*SP|Mi$4=G6ZtXP;z6j9qsC z27gHYEQ4g&(wp`tx!z8tL*DmDx6xL*@KipJ?7JH8-_umIbM!uiF@8fXM1E>~ZN^Q_AiOHFmOLt-zUX0ci zI<6ld3y9ICo?csb)a>p)+TCUwS3eS}*(}~EXGLgSTV5NqtdY5`67&E0R%*so|LrtO?*+BSFj-V{H?Aet|6Dh>p47Q6J{I)aFyfRDas@2d6~N-x=@;LLJ)W33 zUs@n$iv+NP?&_~kZi7GPa0w~QZ|mXN>5T8D1SeM3dAL|-1(3o#2Sc|os8%1N@nw-0 z|A>PYE$6tA+YI^vY}fHQ|8Y^gHWderyq`}a>U<7Skr{|IrzU-e$=U%WGC?4bbR4dB zFyxe|*#iCLbO3iw3-pb6QZp0KaJ)a^l;M^GG5}rOPy#Z~!Tz^6Ghnc$gWd_d$A6VBY~P5N$meJ+aFZ2IicfGzcCvPn?9YSH}7iz z6{%Za&s`knO3=C&QsstL?W0D7cd_%|{pfJ-0 z?EeGeYt>Q8tP=6bFD@lK*+Bhftu{@7z(Ea_!+RcAToer~uEcoiUYn&8bLt=g1XRseqM(wUZnL2 zMPE%%&U(+`HNn*>t1Ba)KQjiNx@{Bm~RTQW> z4djGt3CU8z2*F4FC>dG*NHL*Ut03;Kaed{!Wlq+q$Im3t0|PcA;9wy(2wL0D^e9f& zf)37mwZ(d6Ip;B;@XtIxo~K0RANXeRAgO*XnrjF+AXf&3D<(BN^`31^HR#6EW_rD# zWOt{7`S0m`CMk8AX=;2vURl(%0k-DQvbfxFd%BPr5^vqMO<)c>mql@XIuPscKNCwj zO^}&Y*Qefb)8e(yvre#{KJhf4ZeIWeDgNUmK1KaWHrXr4Fzh*Vza=0j*E{v@O%k7t z6>73=O4QEBiCr3(A)($W-AZP+vqo$sTm0+*7NE;b-O(7N2LNH-mol{^p}+ZB_L=eM zBj9CT2&*1yVMC@Oa3C3SK~8Gf}1zR4$$B$S0m^ge<(QeI?c?TPOk((xj`!G~(9lwwQ`pQ?fAviGMY#C=0oBubTx4 z)k2a**i|fiw`QOp$Se(rr8@+o4#Fe_fgZ+Wp&~5WVm$Wug2~g!uY2FPKEpeA$-v)9>^x`g7DdU4x;woFNN?Jrqul;@$aMYnn!0 z)9u>XIt}c%NhzOs8XO@nNZ+aoIZEeuiSV&s(BqU4n5;ifn4YdbQ#IBe;c3k9Gwb8{ zKW@WaVkjg75*fu#e-fTtkm>W7F5=t@Zz6(Qsagd-^!lQY7A0hwr*C6pe5RqZeBzHNjy!oJVk{h9yx5(#{{vywBqxeQb)S!V0TGxHcc^Fg4+ukSYnZ^%zo4(It0%?gYW8bYF#uP+T zSd*L~dyKuN@*AB`j|c@BMBRU65s*OMOZZ^Ux3VmDic3me5oVA;&<5aCT7IipO56$2 z(dz;V`^_41`T_l1c--QRrw+e=eM)0=^HZp7wd?KckH*OQpP%P7Msahff?ivq0KrEc zp-#jkpY~8YIuFXV05OXW_q(azc{bq^_50xdyY$bL@)iWZR&BLbv=q%hPQq!##d&$w zS1Fic%K%x$Y#D!XHeJ90YYM!plN0Rm6s#)U19@sp*LX(ea5BVyh#_t(IWr!x_B| zU}yC-4dzh5PWeX!oqxAvjSP@kI-6QIb-;z(@aecZqS7p0)gklf*p(hqx}61Po3~-e2Uq{T}o>#?r_k?BSUTU$3Jc zCR_vX!Js!t@qBt4fe1w>-__%63@W=e?PDa^+*I}WvC5#l=^+qdWYpmFe&_3r8-p+} zA|mf0T%rf~_wbR=uqI<1G1MdtY7*eFIn_D@M224D14VK|#=kxYo}?poYhCtEicxQ0 z?qOY4egjwxM8Q%M1UAiO+Cb9J?g6_~2r5xiu(SCr?{Gj?$hV#-kx>xVRw>LZ`tDiiUt%`wE3SV2f|rv& zwL0>7q_d4;%jrr$6VOym`>GfC1Bqte5$;KY3bBxEDYjdq=6DBDkCqNjXKBSTUoVe8 zE8xzvx`p^+AK|h}W=`^A#^M+xuEhPFjD{_bOwADw^`dPE-h?L`d!|m~k7q5>02P{* zIXbW1?FOutjO_tF+qz=jZUGQh$=-Ck&=V)Tl);btK<|Xxw zjfMjjZchzQkllvxtm*?*=FOw8DHjGf*q&Gq-yPP$iQ#b2#kitxmtxQz?Jr;60lZvN zAy4Ksh2Pd%TEx~HK@S8t-?Ey6V9{+`I88>#m8(SnDD>zfn+ zSzSB_x%A!^sxfPI{|9ViF(cnlr!1%aA)JVXw)vOX-*C7#z_CIGsA0?s+|ziFE^x3I zweUXJy2Y%(ibmZqEuFvFZ1z~3P+ThH${W&-3CD)-`p2&T%($XzH@O=-2%SqE_9mtd@A;KVl4xQGcO}un-kyBF42KcDU$fo zHAXIL5nW!^^4W)Gv5wVJALyxk2|^jwsVhjr`GRyK^aJ*$yk@+uUUdqzu|-$_dwEk? zlKY*6rm=>ZjY<|p*I9$~Bi_=Y!fSbV3us#(oH^W|zdc&cZI0sQ_%3X7hwjWKjAp!} z>U`1YLB9?hHOA(CJh6rbDc4?~5=R7;SfXZu30%fm;LL{VRk&n5&!rsW^CM;}UjftKfAR+E<@glnKA3r^54J zA5&}CC|VT8T<|YLT2oUfAvSRGQHNl>*X*;LvK?Ko*gOmXK~R=#?wSIp@*Rv?_F0D< zYYOJlRvRjY6GjH#oy|7)O*!m;2w}D+f?dX2`u+$mlVBR-I2Zecj*hO2|9UM+ zPMdB+@eLNXOm0-mXMY=1J(;+xwl$#t4cH1S2i@%vN1^eUJh3+}<9}z+) z$$IpkFFMvbMkpEJLdJ=f~X<-&-?pRc(~F?nN( zhD37Tz~Y9=&OU(*ng6*SH8@N0Q&(|vfxv)ghtJRmAoB%im+tqpY4U`K15z=TEn0O5 zn>lSXhSGpP;6I@$JT|fQ!$y3P7h^#}Q8QE*Lf=W($4ed;PPboa9dB|3aE0hh^Dw^^ zVs}tkltG=MBK;OO>%Md8*0tHs6qF>kky040=2A9UXNCq^3cq2vf#2S+?)V|el1GKz z2+#UMqz7bvnOnl3$*=Cg(lQir_4F*Fma13l!qx(i?+q<#ksY8+tmipe1B{SKqDp1Lb#|Dc!x`B8gw&4`c!hn2%$E-FY=;w%}lhMARrlDm;T7+_=1)T!31wlP?Q=!Ky&uTuM!EXNTDu9+K5CeiPgm!zw0d*+(@-~j;ET| zwr}==!JMe2%)38iUCsLVwN00s#pL11%Y!64ikgtdM6~QbkP_Am0PnRiDXBf)H?JQB zq-o~ovpPtdq#+(x#|s&x)ua>8UwX!Hyzd5kj-s=SO@x|Au593oE?P zfJ@Te>xkiXeIead&f-f`_=xo%g@spryJ0lum2Y@-oh8PHD(HgV+_|X&O`g1H$L9Lsk3aO#akYoMAJZvGJVWLB(0S+ zKvB^Bf>E3<&sa|K<1+au3-gcUa#p`*BQJmRhPNe(e)(eZHMlK920m83rH%@RJOHGC zq0m-FuW?Eh_*nTy(0(l_euYbZ2*lY1_@bOuX3fQ=O)~E*Gcf^+1%mAxD0X+tQ-jUF z>)4t^xavkf=RYQ75T{wdxRtuU%O*;9C0>^F~8zfER=n-0E7ya~I>%G?lIH3}hKf@QL2t_M* zfNsIAB~m=(a*f?jCExZh@>exOt34YQtAqH-rMu)T>uasK86w+_W}#g9HRdqI=!{I-a$kzzpflx=(>w=wv-4;8Tjt79^z2JH+7jJ0XV0ewHP4d`_V#_J z_pI+wEo7?98q3YISUkdjPPM>=ELaOFe~L^bl(`!GZQ9iUj_NwB`a@CqyZ&XJ-1eJU z*v@g0#>5XbSpkZ7|3Llk3+Tntm@U0{|L_OQyz$Gu7wqcrW}He$L>F%Me?JSL`fS1f z9IC*=-tn8>Tk;WELfYo>l zP&G(OoZ&QLQ9|=ken1gm%}&)+{-3MAdQtw54H)V-7V z05Dz+0zWw5aNX^IvpwBLl5k04PXua&A*fxOSLg}?Sa8}wz#LIG-fnR(>SP`d6 z9k=_Z8BGFE;cka%Pfap~U1ZTGofmqGF|rbdHI6!2{`;wkor9bmC{!z`5SUup4+P$$ z+m1KvO34su6wez!_^0WkKf!I1VH82+DJVs)fVwV0o)tJt3r|65ay8Ft(Pz9I==T6jLyzs{Dt^-bO|3qQb~sD3iC5gx zZ~PA{4p(9(>X-?{8j~`L>or`ourx;qIZg_HB?rAFhRbBZV*Ai|SJ(#N^ROlpxb0xx zi+yU%@9Uw>d+(E-p&_eBAQ8n{VY-M_BpxG$cPFu{dTYqqbr0qR-vvUW z50CGz%)pxN<3LwZ3T4YbJM;Gbd%Zotrxpl9nSDX;xL7cjwJ7fag!y|s0;hO5KFp9t*ZT(AenZ}=son5Bibg12< zks?cV@2x?l(*kJ99EP4dE+H5p>qCD|bD7zFB&$6U@nJD55^lLyznO#k;t#d{o|iJG zd^EZxx6`ykXpHiXYxkG6fp)puZ|I($B5ZN{=~Mr_&yofDpVT*(NA)vXb_93J;#Y5a zCJGpCR4`n7632;#xHeS~w(3Z0OCb0eCM*Dgd}~tXPHWwNF9S6+r>^1 zQ+CGT0xp_mAp9-_f{7B_0Y@PiZvGs&>WbUy>OX9S`kg6P&Ua6jbO<;j@}XO)6?OdjA5ptVtD&aDlx;^Cq=tW# zrWoNLNje8J>r(VWIN7xitE~Tn+};u%A73qIvB!stINyWg)55^fk3UXWf;8!Fe0$&K zT1rkMSKrJm%Zc4a047Y?4n%Nt9dn};GyTWJ@UcITotL%p&ct8#$$(E3QCzV@S2bRDU~~iyY3Bu+ z;3z*y?Z1>jEcjCw$shDq^zWI>nK%sSPkg2qp|?M1k23jIZmr|mbBoSn*LPwjUdO1X zxq8*8zNqCvD*lKh+Bl$Cgv&L3%CUUKpyCdzxze{_2u!^Lrq@Q`%NXq{WR9_s6*4}d zm!VjcNf9^T=?g8};g5YSsEDtWoG3P~tM+3C<6)ybq3kN@R7l*@Epc6F!KD-qK8L3kEHPt?27nWU&AJg8ze!LWx8PO!4>yvZ*y_3 ztS`D`wkw@6I#>vN4$9>|`))qrt-&;%ht8@#Kwf_DPB$kY-E%uWIy^B0c|j*4yo`!W z{5@Bj=YGg;h$pU4kJb28BcIig=C z#H08XP?fVO)*C3fbFzP25Hdr%Q~C#s|zA|k&7`qyn_BlTJRvPTmhRcudJmkHN5+Cz1WJYIWFKI7f6%7~z$U)7u3 zt=asczn8TAK`w-H&xhipO@x$OxJXA2IAN znu}OcPyDXJ7f8#K|DmvcA`50At*2U?23Hm%ii@pR716w%kczzgV14zr1WMZ zfe*&6udsI)lY_^Zv=i`U`|rIosRBBxdbx^^jUteGqJe%cZsyp+7if{83gJ2vz=7pY z!n{6`$V4FKqVQ(QTsv()JmyZ|tSSk@`6p0;_uyi;*zJ;>&-3f$_z7(szl|i38TFpk zaYxe~3qJ<}abFX)n>&(Ska*>Mbe4}OGnOo zWS9Q7tm>_sawu4C$Qn9&WCI{{?FO+CXb1c1R@l;yy1u>ll(P85>byKm_QOl|IV58E z&Cc{5OA_`0#^gBkvO{_;T}Nt+?@t}hT$f(fF)swU#Jk%8c>;D=`wMHLg=33`(zwF? za^gtCmP$eXi5bu%i>pKjgZKv@)OK{R@#~o$$=cjF$WL82@AZpYkT%FQ=l)F(6>B1o z!XdPu+E9JjoZ%q%4RPT)8|`5hi1gnw@@;lv#1UN zf>sHHJ3PX1B~SV;E7F_l(i(3ZJ|?l5(?_kgpgewMh4kLjF`QurknZ)>BWv3er-raF z-rYzmlzeuVBRB>y!{b<%4Ca%B962 znPXSGJNwkxBPu_2dq`j|LEp|X;l!ET(DjIZa=^AYkTNa7n8a_8!?xt;WHs*PItBnfY|%8i26CL3 zB6R4npR-k=LsvZ+AtHt+;zR#TA|z6Tot;+mHLWV__JeKLV=KRHOkK`bE5WcE|9}Z& zUeA~FpZaFRbi8uinH3T|Pq(%VH=VaePjF6s{~IKrEI2v()Nw(hK?05NZ1zHz!2WOI zVxDA*=2WHEh&MqR1J%Wcsvq!|p`fvRz+je}+f;BGu|e3(BP6BD_6?3WxqKMpX0NuV za-^Xsc|0xvcmB$oFyNdLhKjDXA|CvF+*r!}6k3wVEYv02?J*J7IB>A!qKT1d2yi^ONtxcc34aeql zhxNNCO2@Q&6HTZZ_A-mPjIN+E{chi^TmMj$af!g02KbE)Cw3`F*fwbK(JeL0P4xR7 zA?k(gsP1@hKI!GD#gqfi6~8P(I-f)Mie>~e=RsqK;1!-*yAYKO8fg!_)N2);h!0p> zn?q1juQws!nFiusq|eCdg4?>|S4(p~cpy$Id4b{&ABnUvhnIUjG1L-eJIi-@y5AofdNBr53;q;f_zM>*~VrAXi2ie+!{TLm`!ffEeQ?U6u(AGRp!WH%tsB z4SyQ9pHLgU;+*w`e&*=Fq{G_;;tGZRGyX7F4?=8!d&!$gMKrS?Z(Pl5L;+;z#Lf%nEu%^>WU0Pr?U5J5BP%HQ9j{$+Q8p{C)|t1 zIaJep`PlApW2?+pGrJTK^JFQ! ze$^GSU4}YZ1XSo*gr)wjWIq#5-%fAaxM$LKvM!^P32Ps!dH+6|PU)t0*J{fXQiZOD zI}gQTN$);kd@0BY@fS>!oAq{LjrS{$_7=-c?bik;f=zN!gwaugjgrGNpW&qnr6u7f z;K2uzZkBK48>84iUu5ANdH2jeP>0;2X!?}qYnV_dE-3-&Aga`Q7dtlY0baj~#Ce*w z(fY`a4|KDp{H!8T9Fc<-&2_v)l@vkAX_CW>xrtOj5kb)N*A6#SBs^*}^c~7E4mTq` zOf=yA46w$ zbr+fP!omOA_VTr>Gu{I6DE@V6W|Q%WOhelD>XvlBWhI@D0q1pbKOVsd-$c9tsRkLk zC^nb!F7+)8vHpbwPUuEH;OI~MwCPs%z}3)O&FyFlgy&;>Mz{OIyV}M)UAn$C2hVO+ zldv5bMhslbgCJ7RIkuBaT12)bE9E}JT|?EDa|!0^MhcKQ>3<~zyBO?y3FNl;99hcK zHfy{QeuiO+)0}6D`QpX{73qzHrTz}8=iEvlqQ02$-egty=RjunH_o$iC)cbcs+*IH zw@5!OY!5wceE*W7K0$QnnT$sIL3SEdb2Wbzc*?ujScYIf0Aktme>T|utieRvcbC7*AHbRkM=EFxXc{C z5*3Pe*K2TMZiYXRXIl=uzDr2H9QL^i6+D0qW$z}er&uNR4;sz=?Tk|2-~_eVH;(S$ zs>gN8oOyiaEmFi(+{fjxeB6EsNm$DyFtTHWdu}?o) zANcvv*tJNt48IYP1nTJl$##KLCGSO58tLcUB$0fD*^wY;l6o0wB0s{3x;`i3b}%L! zJ!k9n9`}1dExbF;ezJb2Bj?cV=Pa4pEYsgK>Kw^OuNA)5<+N&iG~tOB7~??M7I{TW zXKp}_m&B`J()L9<2HfeM$5P#Ak%|vKqFc!QJ-=viw+eF*q~5cy%at@CS@r_$5MghF zSQ#@_N?8Ik&CC9}oJ)K;zWZYbje%B>)0*+~;rHq9<8B#(n1=`d-0$xoRu+eXxQf9+#}#zUmvwGTlA+y$vF0=M z2@N}eOTl4cYA92&7vmjQzO@QpH6tFJr%U-KI+_;lo&P(nJ>Y&7aM;4DMy8AAbs@^? zQwy{b8{fFha<4uf=?u%|IF~`Srmp`t)SQ%-w6k67g-Ja!D5ecQlD=Uhkr(fw>_2@*$=`df##?E7aKty5ADuG=9nW9xg+oNmpO&(o(|9PpRHgCi z$xpNQpDQIv{DlF3MhN-+;8RVlTkpR7oo`~&{@cUprI z3P>X~)evf?230AQKZ~+T?Sci>cq#DyRYE24VLQq(>Zf4XFj8P z8@lr#VDRpDqm0DaLKQ47+I{G6ZO}7tq0d_4RiasJEuV!((8*Ij{W*IV5nA#?-37hcXGHb>e3*Y@}4m&`4MV1eY$(6M{m65en~ z29@q`+Qy?ffT?<6Dogsto#+8!4dg0%Y`3-R>}lJ7eYg|j>er(0Kf%&?2XB_h$waUW z96p0_<<`8CrARnSzOWRjadxv4dox>8`Au1x&JEnHu8-Wq+%Yy2M6{5n>}I?BSxkqX z<=;&oZCAk9Zhc7Qy1%ugZe(W(uvQ<0NASk4186lA{dema6aW^ACw{e(uwRIBs&PV+Q@d ziCaM3Ykt_h4k}`!6cU6Vi_Uw!duqwTO=5_li`Xzht=0#mX+(r#B#{$%0YC>gUH=cq zyJPx(cU~YTV|qcp16~(JvP-~AkR8u!0}>e z^kLbZfYylNn$4@_Um|z7geEYHNr2KZ#*GK(%3AKhqPE@uNk*pH*w7{r*>3 zGKj$$8Ln}sS|2jref8uCFlXs*m>QEB&x07N(sO}??1ZK*8+0~zjxXa6{9TpNGxw*5 z=drk$RnwZOzrH6oQ+6Yd%JT;b*vb{mdL*z9QN0k7z`}+(z%@`k0eSTTK;|dor8RR#jy!HWS$Cv}HUJjtYc9i5+(ottk%6cTLbYaIa z49`oiI?S=@S`X91LB`OZVD=Hls+)!1HyJrp2|RPT*S6i^mEXb?^X}ib028~5h?(@* z>lOnMwLsw9&15&0?x$9^i4>1nebkddtmnKgZLh>ye5EzB*+=O5fsYkxPU}w5 z--I1z&HzErvgWoN?r+2K#b9F27_DwJSK@TIl1ud6QoFVW@f?U~VqSai*U-ir{?p1TtVC$hFvJP}mhT_kFn< ztoMpcWL$yZUlaz#)r6sl-;sBEKfu-Tv9Yf*e71Dc)rT)NjGr&G?#+vFhws#w20r(v zz8)~6VM7cL-e10(7cG!kM?&IOO>;j*)V^?iKC`h=zOT?wLL=!xl}kQA@hJ<#pFRkr zmMD#vScIMTdeUF`zQ*>lPGLbLlh|Y&6@*N=j9k^rVE^@ zcm-I%Ba=BbNaDhWXBu(&mKe08!8}d%8m3f0pvjXIxc!o=m{*QB86=1y;BF3-Q)5?2B;9rgXGV1S?t&e-Jh$`Z397v1Ph-nz zrDkojy~i`RIGl9ejHow<{2Tg$e@~AOoLqlCO|(QO!YH99=FG)YAO!A}4Hbibp3PiO zD95-G19Ks)Irl;6y2pg%q?U$E7YZMw^Q@{*cne7j{crmI=8K<{edt%>!mJ34&Xcf( zo|^}o~6hyZrPPeD~sMi-`X)+DXLVe&+0aZN9Yzv*P-v$5iNzA5Fv z(9b^m!{n=HWazVuZ!|LoEmGgV0m|oJHi@|Th zAGaGsho-5+$@+agFMl?YG+4jN<#G25tGTXpFvNK5LB$#`(EDgJ?=gn~szUFg$YCh8 z+fsS|f|c61gOo)Wj-!+O0^b<<#n#7Qi^jA69r_{(?|^J@J-D+c<4PlK#3XHqP{Ecq zbcH~;Bq%c#u}NH(`7rd@=UciN|=Tm(HE%9F|O8&@B1<$Q@uvEd{3}OW4AUf!fR~;(QEiLo60p;}2M_a}_Klne5 zydq>EcWeNHDjyiIMej9n_hqK&sJV`(Cr+ig$)E`&s80NhlvpOYm<@m9NyoGHp?X=I z|NcNnQdbBrV89%sgfGZX*F-o@ejllH-UKKM`2-@#RS>NHr|JXeOqLh%&J~D(IWcw- z=Fgx`?nG#o>EmrC2v*17HB`b;iRZ?ztdy&dUrB!-ClNV10IPwt3WUdv zf>-`zyWl2gtfTQP3l$48?}K5fWyJZHzXHMI;L*?aIT`^wrO3mAo!Of*T>%#C zX8+>)f|%C|oO--6ogZYb=vmwE8#y&1w^~J%FI1Wgr437oOQ+)kKB*R)H8qKZn7bKq z6u+N+Ie2!0P$SuTe}j(ZVnIik+zJExwuUc5U0U>|S+3kPM0216Cf;nNglF>5v^xZoqyD14f!cRT%8hkI8EH*kM--?o9JD_)b;pz0{&W8-q+p}3OPFc`H>qw9)l2p%>I-&+>6N4iYN|-R zYl}*uG}Xiteg0O@$BCknpu?+T4_uDw+IGLDwKh)q-p_4>uh1shDYlGmh1Tu9r}b=m z&e(XL(zAhAo81w9YHnAs!@+(M?!Oa$SCzr{wwNwuH?@0^NH=bLod0_dO&n=Fw*P$5 zAciC4R+e7Bp|f*u$m&nr2dj1yL3;Aw0>y`MIa5dHjBs}KUL2Ue^oZqBi-J$-k(cTYVC|AWYj)0xYxKZPe_$n z#TTRD#=17_UA8HqEUsesOX$VcL6g4r5ZeJp#NIG2F46b#N|adcbj|Si{*%m)9z0?W zH$r~DIv2?ti@t#zM>(`gFxO5K1=gDgKIG)c=3*Wk4gQ$INx1wT7f`I05$izAMSBvq zxGSXQ4e2&zQV+!^f~>EDPGE)!qkfes1jDBn`6z(o^GXDxXuBl)bB9i!e%NSrfR3St zL;!Q7vbQN3m*#(pn5X6T+8A3|o;$_ld6paSs81b)F=tTJErzA36=lyiDC25V6f}dZMy+Lg%g{p&#PP$1M1rfKQ>>83M|G+B! z^3TFAjilZJU2XX@dlevDMq+Lems4Ip45D-Xy6MpG$L=k2A5O$#FVs#Abf$imCSqV+QYZ6X~!F znl5&%L_#a|x-Hiw{wY()jC!GtVoxMr4Be*bH!(m}N54$;B%o-dnN8Zv&hXj{qKoBT z_x`CSe}k6Pq3z2nELmH8n{2cGn4X{br2`sT=9X$q1t^6beBqVI0?&=zXiv8<|3DHoKeC zFHNnuGR|UxQ5n52o)sszgbDGkjgm>DgTrP1>q=_IHn@lxg*V&qj@RJi9<|cT2dDNt zx>7NnPHF6ff6?emXks+Yt{|^YG(8G$b4MIdGYAvKOjurJAcNqAhQyISi;|7}!#H{} zDpDDahZnDiGL$BJZ)2&l*v+AECW9Wnvc+())c&sBRR;4l^$hPGZ5Vu)zQ zs@8fC5(Cw4;K9%OKm-X?4o81x5q7=VGdzEL?2gvxBivWgsjA&|d@puSo!X9!tqo(+ zYlP?kS&p^O++^1)cp@~Mz)I_=$l{SBQ92{WfxWZcsja=?p+51oT7hehGwIIO&aY>M zPOr0P+(X<9WA|vo#@ut$ysN^QjfOU#KRm$gTD_^d9RKcgl=#}k{-wzbyZ(DmV%7iu2PAsgex>5I=A|L;3b$>YAV z)7B^Tv2f92u#e+4KF;}2tn*vjs7uPmk3x_r?P=bu+h zPHhQ0jZo7-4%Y0ppQO>lNo7%XCswswbMV1GJ$5Bj(4svqzKDg^D50)YOsvkYPG&jn{v3CURc7Ch^zo0``sLFa#ppXM z1Z;k3yEI1UJ9W?Y)rfmUqI!Pb3uHS*6N7uYI&AB=!nfUpas9@E$nX~(B@*-Ej(B?3m%I%w18>#_!8;!lKJ+wd(k;$8AeA>J){Rp}E{w-Z68=>8iu$ zbS*1vm=I#^N>1(MUu%c=zpb6|lu9k65y^>faDg(9E*ioNtrESpifEOfaR#&A*^w=~ ztyC4RhoMZDNiOxyabu{D0_mR5-jyk1SAB-$JGwz*q?h(h__b-lCPN|(m@p^G@FPd%l}aESH*eupA{!i86CCI_vCpZX$yKJn(tN+U1XcBu+6VW zVm#izaxD2ruIY>>ZOCAC(e!(s(AmXuB|2~|tZ`y~&dV;Jd%xn-bub1gld%z=2#==E5cXa6? zbhV#B6eEYRjC`lveNW;|@b4n|E_%Ok{U3g_3@m=HLdDUi^A#!JQvF481>CM#_a=C~ zw2vk2POnAg*Zq#=x6<^No7`aIFomFR<< z^^5-Kg*&V~HKWG8(b@4~pA=kgGs|5>O($-of3FODm*x=~28e7KpZU>o;>2eWMC=V5d=WaA&XN`g>m^rbE502cU_n+LU%VNCoQ@uaSkWL3inEtuDx!J2GuTV;E-0810|CA?? z`hV}2rx|tl2WS7>_r{An6NgKVO7jeqN8enl&UTuqnvocVhod;tey!tU^;~n^`S`iS zMIE2Gcb{7B)fA5NPFO6hF^g^a*=8Q$cMydcsd2+q|KZyCj=Yh%WoGGTN@do=+mK!) z;JIk%J{_a@rqgTvg}SplxhLD}QK+1YPgwQ)uOW}*&l;WlzZ-%8bqr_42gP9NnaDz| zd%l@I_lI*>*xxi=;y28XeQgN)YNLaWDUndXmSMHQa(g^Kf`yiO*mzoMWX;g&s53vT z>DPw`#U*Lu?^??3`nOnLIl9by=WmohtPjo;5EV!&ZBGCCvY5}fFo4hVu4aFJL(^lz z3^)#r2^yT$RPLZBw%tT+mAx*sOW!M$-F?2C#~J1HzWZ?^$sO2A`nInHMMZdC7du`O zv%ZD9sQt#q=@?D?_%Ln0V+67;mRXp^WQH7$XcLXkMo2TagwwAqu=KNujeT4t>wo3Z zp+r!%TBUChv1c&YjZS>(_dfa0GNl{!pJggQ9boW`uZ?P6wpl2HpFXn8Ec9{PwUgpB zD!83Ty+x1D+|LG&le^TFmX7nayeB(GEX7eac9rXuEwMC3CfMDZy)6G@xUZg5lQT-1KU|A9u^2 zToZ-%$tk>_Z0c4~&vg<+_(Xw-UUlX7#Et_I4O8R!ozFGd4}D-Zv9m$C=kkDFi?Z>M zmM+e!9@mE25}Ci0dyRide!V%SY;BWru5u``%E@QdBj`!MVv^FsNk{={qD z7qiQgWC)eUiv;IfT`B(fLvKS_UgmCigte6VJTENZgMmbY`EM4nm4TtGs4tHgX^pT_ z@u=3H?PDSW-ci-ViWw_b{9A~CRxJOrnC(7XTHDYoW zS@flAkG*3@$SlHFpxJ1%moIsdQm!PQsZzD&Vyo}2G{m5W62cc7ng6Uc_rJmhy0#GJ zEPsO}h{ytt&7-dBV!JN8U#_>r^D(ENk-EB;#cTLJ#r0L~RSqdG)|PM4uN5FV0(~vQTTAv{UI?s`g|R0R+|m_IafA)Zd5D_NvvbN+kFD8L`f(#N|Rcm3FIn0)@@lX(l} zZVe=4h{D*uJT*HQ#PG@sWU|?7*xUa)bp&*cpy>!Ap0xBTDU(Rd1nExpVeM&+aN!e4 z4j0G|hV7Xzw@e$z(BHI~NSgk@g;o2sDQqgNv-LYQyY)q6IF+fKbE|`Dl3HEusqByQ zz+8}OoIf+{gz=oeUTI8gL}JPjr@TUS;`KVAA@@e>N{AtPp|_AR!e_n8uR`l}dxebO zOsKzki|Xycn#aa4Ri0AF;v2euCTW*tpD z8$JX|Xc@$nbis3$9M*krXEMCk+VVzrq>mPjkDWk`>byPbZhZHXC~`VlZUh8X@co;? zGu};mNvjc(6kL}-48`8ro4BF|N@obbi5rK6f#3qe0UlAf%Y%l_U#@9-m~#KK zx73%hvcr-Y2zr(OPHQNTS^Y2PVLnmQF; z$*7acAE%ojl#*Dc)%mC@MjB}5tBhv)sF{L0v;M&f`{$7rkE5Zzj}NzJ5RQTn13Bt$bSe1#XUp?8Q;0<7mpKFFtB3=0ei;jfXaaLitHSoezgNs6OhByV9Bd`ha ztc40qG)2q6@zsXC%|b_DC{}AWgrV3xinV0w1=k0X%P{UOav?5MXm|7rFY`PrRcaAZ zdKxL6b1^3}(~Eo&dp!j$%H?qnmq*&MO}x4>F@zdGyEc!stuy`|?Glwb-1uI2H(yH= zOt|R#)Xk-COG9}SFiaCM3TZ#1vtLrP#WRh4HskkU*l12&JfF@R3W~k$x?}$StU5&P z4#(R$g9R`}EZ`H7a**eYZfpyw=9qdFE>3F%Ay34WA0s8F z->9YLWNcC`dOJl~|0tmG=S{QnY0lejX%mBt^w{xE>m7q4I|x3ADkMzi+w0^vSb$_N zM?8%tv0O1VJyy5BT%8kXg+QJi(i$ag ze^;0IV(8j;?^1W+X+$T@VaWRDO%%({7s;LVm)$|fM2JrcgC zCQdayx}r3_OYt{!B$m?b|KT@ID?2IMlRg!ci5uB*02UkExgH z4kVSGE6(xR-@0V}7(5EX#v{_MfJ1#6(O;cxnyI~L4>V@MiK*|!GUR)p&QkHhHs0Xf z@W!>(6pbB>eY8ytPuzbpP?S~RI>0iOV!bDS@g*e?c^R%D1^qe7Pzz`-bs^VP0U5nU zLsVhxC+Wj+Q;?D%5`1Ta_X-Wf@*6nAtir|2)nP>Sj{F}ok4#j-=TX#oV!fp@^lky4 zbMp;Qbfs^!tPg)MmYxq2oAQ8HQDyFRYzQ)?Xw!jOIN$dAmUc>I(8A73wDF5$Oi-B z;-VVovxQ##d+*I9I?ID8nt64ap6vV;B_YhNwRCgt5jV5_dGdWAo)vrmHZ`Umta5!P zv5=QN0zp*MNxt46QrP8!L#eY{=wl&Y$djYjh;sSF7?k6eNU=t^^=vM9--Hz~h74C9 z{Vc?+wdYWn8hG-{pPD_DonpQmv@QYA>f9uIfJ_(DQNR!6ZP#VsMU8^J$ z^g=;Ws~<^Qh1$qU={LX$)aRX<*Y|1d_7`!v_W!}`V0 zNyb4sc7bW%+++TAVyslsS#&J$K5asaZ3EOO+{Vuf^5muwU<*XpDp9L3GV@MSufNR@ zM)|N|@dRa0#ZNgZNiJ+E%lb&ndeFANITVkN9s+kUGN?;>WqD;X(<*bM? z3y|r1AR)K3j*H{|LM`ec`8v+<{qvBCAgs$=e~S zjH?Blbsp!bQ}FtuoTFG30Vq8%R8MVr$uIM!Trj)vNVtM|J@<;sPAnrdQ1#Ifq2aM3 zKy3wR&LrL|cpyY`ZEtI75m?n^^xRD(0q!~JegJ*$f$J!uLGBHp>YDm_!R*afh}Z+L z;9_Me4p@out;Jb6tWEI(yk@zt9_bmLRR zj;B6k6upmilwNH-yQUvRN2~dhkj@~wgy{0sJmQl^#3P^Th(ZZ|ubnd@+ryF>aTM?x z@taCy0&hXT?itP|Bk|+;H90mJ`n8r|RJ0w1u61Lqiz|DosJ(!Z%)yUcHm2K)G*6YN z-?xOGF7p6(bcUYlVxy3s0jid*DyTmo3l~64xpa6P@P?_ID0cZvzxhPhYFCebtsYSu zd26tSD#mpc*Bax62wKwiW5`QWQZ9BG5Vb{<@}M8=EA8SF$=RDIA$AXv;zgcnm+RW zYAj7Yk2i>65~v-VPG_Q~PloWQq1Z@7$aTO()NEH{(V1j|e%#dyj><|LUCS7s(e&KY${ZX5K2?Kti_>X!or z<}=6wWL!?~ueEu80%t}gLOwV~G;+vMuEG;FAxIHEbn z>h)WQ#uV#0d(|-S$GGyWajkE#s{DUN`zsyogXk7;4@kQ^o~dV9Mqgwg%Cg$aT$9pmFFzMjE+=b#Dh)BCS4oqAdSu> zmV`DY#ClEV5a&6cl!z-aZ6FeIG4_~=&tb{3f?gJzvy55qdUQps$5@(sLW2Gm{n1f* zycZ{i&5iByJf-d~H~TFT!40*pa|9H$?Y%`-Qrovs^`|bK<8m^;h+%v5OXMAwe5CcG zfO!nCXHmE=Ea&Y^QRHJvNWfBJbY|rdy+3&vFqa&Rwm6e~EG_L9OpgER&OFtB2w6?o zDG>&d%@w{_wIAQGxNCKV>7h@c`(Fpp0su>=n`>x|TC-&A$Vb~0lkIp}VWJ;#V*-XRKQ zi63Fk2Zj;AMk*zAK6qeW=$a?{?t7{WU?$+=N^LR^n#_++&vy8B=WdArDdrNXrSu%j8JN*YI!CvK)BY~3U<9z}KVRGQZ zAMA_``Beb5Ll6D9z}SKm>UcQMpwezveZB!P48X#5R=Zt+%OR|`hw6o_3H#G~sr|2w z#^=`Dum1yjQ-D*+*qHJ0<6a_P%%S2Zvz~oCc>}%v2=S6rmB!S##t%_c%U=Z5ZFvP{ zyNB+HIK%)o`%QNWtuqVR)%6!?m;`@hc+4g}<1BlNB#7xTgiQp-o%4U$uWR5?u<~Thu z|Cv%q%)^$gAiALm(NL}EUgr;oK()_17s#5cA_=ojWYcHe92Q|cVqkOY31+&i*Nikx zDos5n+XG~7cJZad%_%98dRaD;ql3j@`2rJ4`sy)hWxd13g5S^O?9NM*2T=>T6`R={ zqzZ^q$`{Czm|Q7apG&e9`GBNDU71ME(RXoP=?r0IkW=c1$W!gTId8uLgD5XcgOL}W zrms0=jV`u3M1|AU2iCf}b8s&?>k}(g(5!d+#B?Ss?pS|8;xM?>ua#+Th5@Ld=wC^5 zw?E~~4xS!Y%s9JwCwnC=_QKR|Ge^%$D%>Q z*^~-!VJk__+3OxB_Xc4*L^RYK@kAehxtVFwkFkq|vO%|%j{(t)<50z{VQnrj7PzTW zxbNj#RkDD9Y9aB;z)y9X-p+V_?XLJMn(eMjP9A!u*?`I(i6tNjm|(MW5ICe0D+}GI z1HMx^6^4wo)hzB*8;)qB>ECCHng`*reNj&WKl;m@hnv5~c&idte@1WOjQ;__(8g%S zlES%X#zfnFtjAoQ8grF82K!MVTgd%PLP)ME9+LhiQ}&)sJ1DW*&hJhn9$yB?wvU1Z z^?`|#EsjrrOj6t_fXQC3bokzTy)P7u;(C#I>X2C{H)GLjQ_U&dN-1oX-!PMJzpWU7 zLE_KuZy!G1UYHhZ+g$x4%VuN>(Ym^KkM&ur2!K)0qA(I9rrI-cw4lm+-|F(x7~RO6 zIyxk36EeEAxxkV+64g!U{G&pXDk`kqIr}tXdwe~VY3jXJv6+Ra*}wy_v8su6Y4=Os zzHgXB{6hHvl@gmjH4!A$C7xaGWj%X)-n?PKu%{gI6ARSZ8UNx26M!2O_D{ZuQB4w* zkyRkcX8#?Sc1?7|LGE@%bkCzs*42j{ZSUr9{);-q-w?XSKluN|>kH;DU0V8Rdw~6t zRHY>ULR&v=VsGmL+l+HAf(}7VKw=yAK*(b<6*{~`;uWvn_=}p~YIa689+5|{=hhuX zZun`Ho_`h{@JXd7`}rHxfXm7cJ_zAy&hnifPMv1?2>@>O`P{Pb!eUW)UayVE{g*M< z>2k_A3Fg1(j3=!21EKsJmkmZvt%17LpD)Ul;edcI^sQP@HF%;O!d-SHh5b=gHz|?@ z86pV7{zc*wCeNc2TUb1r`wBEA#A?mIo|>GIsh}{uj@~yI&aLZJ%ee6c(y*^D=;UKn zdR{e+#3-^{GQDM*s&8Mbk1-H0TjV&@k=#p?M|rIEC_72k)qpwhf*k6csgzW=jfc8R zdX1_0gvBpIPI;zp=JI*KRNoFgH^pmn8B}QQ>i>DU&sH^J=K`5sPV+USi7A+W{QD9V zNyiEQO7Jo$<@qwRJv1Z1wR?kwTQBPKODx%h1PZf*B^cvN$RQ34!ldWQ)wUixExJ_&^Aiqeiebx+rf4;<{H2F$|612eguLd!l=X_R+)&pIaOnx zfY{8tNq6|p8l9%pP5n1y`#6UbpCpO2W!-?hBRS$CS${&2t73FPD_Lr)`8z6b5*8O%T0 z{(2bICNw4ayQpDwa(8iNr#x}?wo+fT%r>u25-xV|p)F>6_%Cb>kIw)1?=Wr4o-a_n z7EN$oMsE1$guf11fZUS#V%2xOwB*>SX*>}^&OQ=c#OWqEbg;~;MRyuOa_RTe#@)+t zY?D7X1Dl%gLv`RwnXoS_>art|?XC+Bj?Y7}0t%f}>LArv)kwjaT|KYlR3R7dzbJBlPqqJo>fU0+mwNF*3 z0A~L!0USaXzd~^guuIINpP&6TcgI1uw+qQS7TeD?vlVVR7b70-FFiZUi@zFtGq*Tc zYIWE5N2>a{(g`fJnMV3J7))q&1EpBhb~ZF1x(S`eXWf*H;(q|#A{H+ z6++D1U)NWkItc~Carl#c)GSBc6-ZjagY??%Tc2=FfK`$;tktCg*lII|(LI`ThFJpO zP1uFRn#v$DU?2U6X@~*WV2%%&z93rxIY#<-6O|wG|BnFaKj~p*^@G_|`$pVwg`>IF z7Wg+RAmQ&KssGKVSI7d)8o1!y=ALBP1@2|r|u?_~>!PA$FrQ0oM^La8-? zTxG|G0+iJ9-k?%znY|!n5axTMPf*Zi9Ra)*GtTOb^DiJZ z5}FXh86WQ@7RUj>HVW~3>~(&-Gj#dd6Eo0fB}lpb9-v95@;IM&3_x?X_zZwQ3wXiX zG($m*bTG_eea+0B(lX08&EdC6dyocH z@vg9{J>6~Sv6ECwoObuYdfFAeGNrM{?H<7{0)Pa6n!d0H;t%b;%{DP{VuL_2(&674 zCFlR4;SvR6-Qj;BV9YQ9KuzbBJZV1+P|$(&sJ3AlF(MwHJV#eRldAxps&wuWYq^)N zb&GrzueGKRM%|;1yaWCxJT56@a;fF!Z!kgdLBhMlVnHdS2hHSkiE71@oG;@%UjtR3 z5Wpy{NE~)G2%@qt-+Ma^kx8>41FtxD>JZR_cxQa{37|uK8x)S*a}WpAIqLFVtq{hh zE+?5sI$CA=eAI_edj3@A!7Z@&7{W{l1DGMu7`nZ<`iJS*4Zv-?-RC*vu#%8C5{M;&lO-1vqmNxbb$jsB%fcslt1E9WR z<|wMVr6cr*f6*?z>=?E?IHVxa5E85mZI$%% zNRi%5=-?->IYaKzt^TK=E{(kwWDq!a>qGZJ{|DpoYxZL!@t5zle@PPJ6pONo-iO(& zRU>C5yu(?gjT$AEpIPk>m`BmdL~S8IAp1LQ;gSu@pY%;LNu!(Tj2=a8)7n-_L49fz z`Lf=8Z9Zz>YUJ|M5eR*9vdwVM=qD4XV0(Xu)T8+VqK+mI07N$AOq_Pkc#))h=VV4D zkMn2A5pdOLO0>ErAA_->3ZQ?(AE}E5VCGxPaMIXl5L#NPoMY(+d9|0R_f{wT#q7b>tbCap(&I>SNg{_ME?74_Fn?Rgc!2yr%rQmnL=D0*x^dGWU zu&X!MvQ0L2Er8J`&Ze#pb~HtwrMxBS7vJ(or-8bG{!}H@7R_T4M8AP^1brYN(-kB< zuxc~t-;iAEtY7bzMwlxY$VAs)y!FSO9&yA*U2EsdUXSbKmkl%y#s$>Z0<9@l3ljr!(od7)=a+;kERgy?Y7_~WyEP#F zd#tAVD?(0w5#Z`ck0$5O$i-{a%nx{%Ab#;fymis?2;&&nh{U3N4Q$X)7W@NA6e*c7 zb~m=5UCjo}j;G(a#Dkxn+R1mOH14ux67b(&VU1~z_ zoRPKmxAtE9?C(3*xz4}CZy+;szH`oZJmY?zVQKp~45HPdlf#9XSA3uwQ7T$csyzEl zyZ7Pr6Px|Xft&KAi!JqPg4&_+oNB1qD*|j&%7yDuEI^?Ey^=HCuE@Joeka zzJa@mFCxWV!9Ej>3+$$n*gZPpT#Kx~P>t-B+^yZ`4U}&{)L*IsGg5iTi8nN__Rx`v^XTe_dPx=7H%>uGjVy;6!1YDyVsIQj9X zJ>bKIOp5@bn(QUtYp+%rWl{)}MRN10lxdyV*6CF6N3&w~p#}CdwF7HV3__Y?FhN^M~wPKb)(VF~Na7fpe0qFA8L~RK{cUMN#}ljhA|As6$=o$T+5gT{vc`cG#qB zHJY~+=r2=N{^Y>gf&BSwmpv+epC0L;?LfPRrsLso^u>_RUPD{wW4v4nmZ7W7*b%mS zOk#HJ5Y=zT`ugm3LG?9HdjCygEIu9NkWwMpm^hHSjj8q=Sz{AA&*(70Y=g$9>A_wU z)0@05m@RYvweKYP9UHalG+v2eVW?KYhZG5@3iKwEo?m#-)5qKP3K2dHMM zkTEuUo#d+{Ir^IeqqbN4c4^om8eK$B?f%?z-f$e8@o4dCUjJrY=DOB>?>=y>1~PSt zQ-46s3T!7U&V)=VC=M;BeHz>!F*e}r>$vAPAG13Dtx#>UeqQL`8W`c7zyIb5@n6lv zbO3Lz%#`su<{s7zC^Rq1z-XVh6fj z_%-%pPq{(7bW;f|yXRP?2*U0|#8pe*h4V7-^g%fwRtcZF)-kISLRf-1Uh`FhHla)B>4G`QQ;&B)pcB%ols145*5}# z%jeKxVn}Q<34u)z)GG6w_RytQIMHq~9pl{Dc*|5Rwbqn1zW?D)AEVXi`Kfq@PrLR+NBbP|j({KQgW%jMabTbZL_z{oM1s2z|+P{^~tw zL7{uS6%Yj`j3aah{=x&ut;k(x+&+&@LSY6kBlKpU;do1ilU@?KOF9nGpC$M>26Q_X zsBb8AZ6SztES8Ns-I)O@UH~)R--yW=Dvq`)eI=YezrAttaZev`?G^h!pdp|{jvs$( z*_XSTlGxDlbS)zy^X%OjR+)Mma{9@2voN81Mrg+_Y)*=tf0^0GyS|T#aOnHL0>gGk z-fubef$+2VJnw!~!PIJA1^0fk zJyg;-6*c91llrD-Xw4DK+)vss9s`f0Ip|ceHKleeY<1Ml%M9ScsnMV0ps`Q*&R2xl z%OeEwM)XnbA&!M4XYrAbaI%i0kHqbe#fNNla)@J&JrGwDJ$%HP+5Bn;o!5C>ZHUFg zQfX$*nQD)@-o>c1?QsOQ?LKqKiAkPw!2(6AD!6O#5Un{$R>;~+AD%24Bch0a7#yaR z%dE6iVInQs=&n?86t#fG<@uW&rrZfcyf@CxV?0_~i!D^HgQ-Hgi^2&%y**%t5An6T zyQ&`kbTmu?>p~axZ0=(_iXvPI7Gl^Cw||##$I+Dz`Jxdtp-3S$@v4*~=-yV?XQjrA z(QzN$gW3RFvKyjAw~7W)Y&-#5(QXv6OL(Kk_w@ooKiRE52B9$kYk~FbMr$R(oG+Up zAg6=c+9_2pVTK^PqrAPlvSQzOiL{}Rl*Zc;ch@urzN9R=+NTD1x+~CxB>gI^UK#aT zbs^rVSvfi;?*>@Bp`!h^l<`C-A7A5)%%?OIvF&jHyuZ`^+!OL3iY#2#bRD2a^I_Sw zL>oZzd`ypWd|e_zRWfR%wC5N7bG$4h8*o<*;cr?fBPk zUnNwE&{NOsF;Nm}ULo9f>XIArO34wA1hlZmuT#!BCYWbjSS?&b3txe;bU!vD(7bZA zyoWdMAusF+R7AzPJ)_&swNy#rajR?B*H2t>tq#b@=k%96z80eiHZi8x6yy=QwMD!I z%msydSZ0J8Yo3qD&j|dQHaw0JHnwuN-`QKfvEN(u z9^a0NMy~7@73`n)TTXS9U!rkp^KLaO|7_%Xyeaw_WBd4Ms_W}Gj^_$DYCBsnlCo3g zOV8{dmQn5eWHT(xbnigmQqtAa*)jYFCx1sr9;$P$GfBTO?C2O6|CzQbIJ6as@{EK;MmB6KVd}%FiPzv%1ol01lm)i z^@`Pm9v?Lz@1Vj`;5@+y`#ybvgb$S-G>IFct=|*{9SX}eOV+y`nE09Y9|kSEV{{k- z?!deE2rLzy%yls zR2|9;s4IHEZ03e_XlL={yyL$Pd&I7nTwK$DbEXOmU&{)yVVF`t%|}cmOTJVp8A?n| z$s>GN@YQ^+J!Y}6@uGd$qG6ro^1Y0JvCDlcAMz&Cak4h+34ePwf{q8V*0(NOzo3#R zON`5R=XI#x>ws$fI;t2)cy;9RKT*zLoj_y$4D_3M7@9Hqtfc+?oqi+bM~w}J8>Qq4 z6W8aOekrrzj`1}gU8qnUR34{SK{N1C`LE7CxMvtgDQo$zA+dp2?RwN?iW+S|$Nt!ezYi&hQcZc(> zbGI4)X-_*wO|%rbo?m)bg0okNj2ah?bDf;c88l3oe>DyQwJVbXB^yaCg)Mf(r4?ux zs!nQox;JZLk+&uO&1Cm?Q-Yb2u(v6XndJEUgd{X5okD-#g#Wv}E~p(u*C%O@NIi~} zwfeEwBMxU;|IO<6e>PVj4>%P3N>k*0J&meLc7byjIM6alXB-Gf;zZ+I$J2>`BSkc? zhmuNVvr-ppSB`brO>UzJ6BFNy(d+jM5oFO8^49|CN-ykJKyBu?{Ig9ljjp!OHF8vt_;?9;tporHj0 z(2L>+D}77kmK*skULG7odkfotM zBAa>u>SD_pai&SEF09yNw&wu^_3M@aWr+!QiB45bTo^2A@dNQo@a;-d|7T~c6QTa+ z27Jde(}C*)_96>J!!3x(F>Ef?tH=4f9pKLs-ewk_cj^rfqgGSgFalOl8Zyqe7CM-# ze?__xwuw8WRC?RWWUpB^J+yr9l|HxHP+G^n!}lSie4BDQuK4t$yTCs7YRSizDyBz* zQh0e!DP3{9Roe&#&_QT@g3V&$%Jo9av^*9>M=J!H4?|Ln-IXc=4%;m;iQ4ar`oBvUqW|<6^1M-eUiI{x{>^tT0`G z#CLw$nMl+#Y!{2NdCJe z0omOrxByxAH-51Mo3{M;>@-c9DX_H%_f9#0s`cmZ51DL}RMiy4z^a}!kKP-LfWK+7 z>4C;>k*k|FA$^P1k^^cd#-|XJ5OwXI*{dsTUW4~a%HT8%aeDL^kS5}Y_=_NK5y>+- z$5dgytUwZl2kQ^>Sg9XOB)S~1agZ-ZVR{17_;aFED9i(xaA)C8yK?hB7y9RK zW%nWF$O80mLE-S?rQwQ_ISA%(y~5ciyETz0m=6u{(^6rk2O#)2{pfjTW?ZicZYGq2>@8g`j8#Y$u5XfmeEOPJ zK^9;4#%SOY`-QtRF$&ubR4KQ_WC7PrRfLH-5RuG(!>JuW=u*^G^o~)XrNuU%(M*JJ zx<7oBoD-*7T@8=1kUdb=JG2$~P#>Q_$lJf))w9v;@ZEsaVQOWz_sEu;! zRp3n11LzabxAU&$2{jDm7TZ)k^Qs3v%DCB^(tEXO1-C~mJa!E_Ay0~vtOCkfrTelu zh?;$g9)*AlQ##3B@AZSI_+^F8Y48v}N7X{k&tv=0jpQot4xF#pU0Y79b0+UcSWqD$ zkebl^&SbS}uyQ>2_2T$~qSi1JDwjQ6ppi}To;5E$i7YOKIy4qyRf>o2nXf!BDlp$~ zzbzdwuWhikKi2%!Y#18smnXL--wF;6fi;@`iD;Sg6z`cZ|AP5xafeaC(_yr+ie1Ap z=;XPsy|?}hmZkes9x}19Yd0$0&5VwhIBy&FCV8}LqVYpIPM+$Mgj%uDrmdY1%rZ7s z6@KbQ#|JY4v+jCvJr(u3cc4^|F}OFa`fu3=uW>DQNfuKDrDKmUte>k0t{_WA(!b>* zr#z3DabNgxEe2XCO31}e@@jHwD{ zoLob^swXcv))PTknK zY1w{poQC*xjMd=iLzRXFAPEuO8o%eQWhKQYn4?fOvy-*vd=A-+mKW<2F*c)-A=4q} zzuDA(v9crX|OhhF!YrVH-nrDcY$fY;xf0Z5N4od zHU~;j%RQ_8FG!5pmJj2iS28Nwb4`Am)%dLuoAE+2J717P%5=uF+0%~;Pfdb@!(}?% zKYb8N-!~Q6PI|`GBUB`B`oYeg_*DDFz4?RvlDvE;v@#=d%<-db4Y|y#*#FX4+BXJr zR&u1CeqHHP_mFuoyqxBG{6)-DkBZV^wx8p*hKuy^A6{!$>fc6p=(w$=aBT19ps&i<`&-q!T) zlQUv&nTNlOzZ7o1KAhUHOE{_PxBYp>l6*)KU5H_+RP6nIj_2phQ1$*Y$~edMnwQ7Y z$%*|)W>N8tGO(&QZNwgrFu6^# zY5}67JA1=w^dklDqcsE9SQvE;PEc?{8rQe3MRHv;>a_=6D0_dAmrk=fDz?gFfA?Mo z{TwU*Bq{?<$4j==*AyKX-S(GxCEF$d)G~g`24crolZNr%N1?%5wHj<4LEmmQMQIXGM#{4#>8GrTgusbf2`$SMukTcH?jyeK{BP82Yo(Pq{ zb!hDHmYL)i`W)OGP9M!CeLwZn2IDa|@iE#U21w&W9kI4j08r%vp+y`^z}40A3ydAx zXfuV;u|cJiCDvjH*Htuhv0azSMG@%+lxq7}esqp@=E-9cL*KyACETIg-wPx6GL?c2 zn-OyBkYO%~-y$@$tpsnXRVo|=Fj%78OE;inBq0;FV>^6)BHUwQuhWgPZ+Y}6qa_U+ z1_abbBm89j+p>c zQ)a~kd7>W#?-tB~0kNAr_yF=7xwJ+)5UtCSiD{kqbiKmd|=iRBgltL(!Qz7W)NmQiU-U<(| zm=7JL1iN7(_mlv3v&n;AsI(yT$b;j2mo6S375!>2i@&^r{X)ekq%re^3znF*8S78{ zXG-;&mEZukvjxy0SrYX8aBT2B*X+9>4Sbkv4nJVgrBC7{F>(R?U+`T@)#!JUYKw!= zlTQg$$g&AAVN_01$Ur|Nq}aD)P~fuAub@MWqxP4)fbvC<)ux`+La8a^+dGIKK=ck` z;?pb*rIhN)BaDT;<$axF=9Ml8vC?<1bntr7?m1Yp{bMo7^{X1q{Fq#3;$z1wbQ^>u zK}Ls=T{xe8T9<4NXApHdCu@Ih@x@vTK%>B5GSumnxhrH#zC;mVlR7REgpak3VWGAO ziee!Oa=&yDK*cx>Ox3&j;f}G>d%qR=@yK(DiW&`Noj~=U5 ztgk_DMqdinAMe}AQUi?mWPm>eh198pj2@vF65%=>AYW$Q?&PMV#Rm7k(raRiY1%;j zu>1Ieh#i2%=w=s1Oi;+$7H@~%-!!e(LW1)CvGdJOSUo0MJ8hKJzyu+}MTM@=S8F8q zx1Ldi#<}6ECJq1C*tlKhj8q=h&#XzO(XSuQ3ZJ3f@}iW$Y`yME=C~q>5qmxap zMH~uJ*Vo;$Lr5bIuO_FS%F3l0Io0}c%6ottN1d*L?%FJKC|v?@o0UJ%dUZ)qIusX~ zfZ)d<(%anKLVstS`ZNIXMReA-EJnsUlBhK_7!7I?3A>5Vvc-y}0xJ zPQhs4G(Szw4;Flg3~isW+YExQ-aKr4t_OeXjh-+T(H(LTw^>l?c6O zvVA&LbpUX20;x?B!O%!_VDX`u6u@4p6RN+Y*w8DhyQr!1ZdoNg;+j?!xMe#n#MZAwV5 z>GuN$&ym63-R0?raiq0R|~jdiEDvsNu2y$paqS8n>+()%`G<)6pK2*)TNc- zb5Ge|rlZc!Q;^9FNOBG zqM$RK_03;okM+^S>5~S*_T6+Ppo}D~b(fR8BW{(Dl@}UJFP?1|b>s3AASuSEoRr)7 z1O4{TCM6MYXH`x;4a}fKqhD>wMKPanU0Pl{Ys<%1`;OWG<|%{}54E>g&1(kh0f-9q@q@4bvZn48_8)Ffhr{!)&lZy!uA8b zD^K;)Q)#@(5IR~d#GrvZJFdnzVR*(@gc!KE8Y2;X$JG29 zVmJl;Fa$0gacX2JNKZU_jtr(z$}xL&@Ac(P8~KB>0>Eh)acHc>x{s}$G_&VwGx82S zAA#qlFmF5ff3F#GACs7vqm)PaB~*mIFKTH`M%rYbk-&#=`m&zI9o~A-|1Qj_h+3y# zaR_{}V`X3DOYRL`FHjHMKdvsl zBOk2zEx@gQ*ly%xy_WJF)O{1@)WVKPtkM&@>F$R1~KT$ao z)479bci{f1*ABAMxs$)5uFJMeg)gf^u0$4j4qD0h!##cQ_slnzW|DI|El_f(=hF4D zHX@Wdj|`e*eqoPNiV{mM*KgX{pR}^ozg1MVITqQ?-PcX_R!fz$eT^~ZG<^_){$kSH z1I~9gkyf7lV0^mm`a_oW7LyHT?8%qoN{_{?s!#(WYMKdVWGn}$`ZiXCkDqgBoPhi= zXkfcj3eOZrdN~DhF|}s2;`X6DuXTJWrhJ)V>&0CwNbu542=sHiF^ni+4ygE zKxZfTFtqXQ|CCWVnXnN$c!58TV>B}!9ord7ct=oJS3^IX7_qkJS&XhCnsm)U&e5f* z*at|(aFzU*64*vvl{T|SnIVk~p}Q^$eXqFa8(HLW7SWH*gSX)YMR{ia($|<9^H(OR zy#!874Rp_a(Bu7sUH=Y<2ZXK}Du zztHw8oWkI~|2#Dn^~%wg^47X5(_!qD6=T61JAHAYo*u{M)`i_nRZ!1L_tSl}mHuAt z4``qc6Qn3x&OSlU6?vise%jIZo{Zj6M%Cbkn~pJhd;O)d+F08G78?@%cjzbTXfWo- zX4X|-Ei60bd67n%r6z|~x_?UVQS~@2Tz z)_8Ts$%NDVC$hBqj028(P#BWZsTTp@3jblp$F{^9#xVwZ_!C1*eSmdjO-XFO(UHVa5G&APK)^Qctz;Zr0lk&x)){fL;wwKk zrvbse9uNpn-`G|WNO&{s5TOxf9;|??UWH87VSiv{yO-pau>9l>Xay3nv3dX-o?J=^ z7YKSbYFgZcs2-(a>L_7To=KbJmI-C!ui?2H6tpLc-FEyW{xCh z2RH))T|nZrF8g0nr7!rpjoO+2xNN4PZ3LXtYE6Ib3h&C7iweMuzSb?If5dh)f|Pbp z;ogxgfh~H~DtNC};aM(FrW)MVCWZl!H4^3qmqx53?5UehyL#MM`L_9KQVt0HF}86S zz>x5M3)cbzKy8P9pkDG8zHJMf?M#*ztTCuES#k444-%$*};S8X)%#|lg@{rKGSz0k@E z-Fw5n=`(`!6PI%YAjw+W@{sZ{M6b?)2V(en&p2}@px(xx91M_EuzDQWK1yI8i(8m3 zR}psJm5d}@fE)u40AgLic;^WkvQ{1IMTbrvs-uqI-#$t8?J-a<18`VyO#vBHb|3ak z!*6oaXJb&y8YB!}NX8COyr~%Zbra;Lvil*&m`Tj>5O_mhR3RK7qk-40zJF65%+7CY zVk9c&rHtR-y8Mjd$0q(Nh>w+W&>)#i1*Td3$0$tA>pBmYXGqNSQ=GZry&s<*G;p{@ zRZJvkGdw&(mo-;V(GDN4UEl>&=_^Ve$~&!c)9=+l=yeBJ*vSx@Prkpn6EcLD^c#)c zh+u-;5>9mqIw|ktZrETdnN(P{{Z)6ZqkXaraw6W7`W4w#nu$Wo z`5zRb<{&fticH1>!WAjCS?@)9d!s+5QBJVk(j{Tm&>Bcjjnrs#YdnuWfi8d^9b+`o ztZCPK^peW$|7L|?A*$nR<5dZ!y2#q&a%Uh!wIRIjQm-53%TlKbF4pSnSVE?@SnAsL(U?3wnP;gNa-}I5gU{Zq-NPCV?9O;GfnpphNYd%NW^`tbGVW%L#R*opgod}ny1I$0XRg`?DIy)i5W4XOBnVEX8|hp*|^ zk5Zj~u?M3aU_aeM&%(;x5U$c1*=`0=_d_DNsRPR1_d4~xLWDsL4OTV zVWQ5gC|>&Wu-6aA+=ywiu|uKzkN}>r4bPy6FTpGfV`jiw+bw)fcbkd*Osf)IN>O)$ z>=U%i8n?m?NL|vNyv8rs*)>QA84IOhOMoq;q?iRAN`p0J%FqCR)Ic@kJ)oj3XM@pS zkwJrSvBaHfh!Chj3Xft~dOUc zWUSjwY|;hO<)>18>K~!KTf|BPrsKXOd929a|M0AJ)M`{wW$M4VT6J;NFf#aRGr?6K zW+B?A(;Ec4PzsKSq3!ewK@;S{SnIF_MjSxwOx@tmvgvf~c45^c_#@+q>#Pefe^jHr zAra$dlswb(Cb5&7pHIsY7s)<_(4$3pZtA=~zIMlUP98dR$VqnnXf#e?clkJ{Y`9Ae zC}9|(^JBbxP2SUKENc{yvVu6ZYC`*fnGYd^_`Li13z&sp?*=GCTvdjj0U2Lt5jpy^ z1KSJjZ?AMFrFl(y_!k}IEj6nMFR;H}rSRcHK7ZlIARXAo8lazZs(NjNQt_J)$_Q}_ zDC^CMp+sF-P1Tbz9&LVf!YId6Dyn>s!+dR`WMe<&SbnXBm4!_~eAtyjVNDd}M_6FU z<^cs4`V!W0Q)lL}LZs|{|6XdXfR{&frp69vo;@P9V55&F{e8F6P0zm!SxtH(D{ff* zFfR&TPKC8X!f8{U+cR5~)aY9%kV|eM3}cnJ*R#s3C4cNykEx*a5$86ejmecmt+=Pq z!02oaYJX%#?h#H}zcBrLr@+1=oiD)Lz3cK=R>FO`JFdTX8YlOKxF8l{A20+=^f5lI z^$*#rfx}lUTZDn1Ih>a2&*MtKlhlO@-NQf`1qC!ueUTbk`xMcSk1W*3H4dRXo)IjW zV1++QA69g(n#O>tkRc$i@h7z+4Ao$%;RD5LuCQ9%TABTJ-Aa(~F^^vfb7M-%Y+SNv zO5(})LaEwq-xDE{a|iLr0_D5kYh>pH1u(A>udgbze z%qsY$5kNaSNCtTpS-c=DGFmcn zlz?QMbJf;uZKKeSmR@yS;1os%0NS>!8D-&wxp`mRVV zi=f=jOe@WQE_~}dL28@Ny}3H{;0mPL#2sSm;9rOgB+l^V#uYbdqm>A^qW14=!;z!E z{d~d{Dzi1-?kN?x{o6U)6Z<=(@uT}o9cw_Pg!~>@`R&h)0mu{<;6xe@L{Jbz$VfIh za07kT1}`8!m_umdOwFdfG;13*xK`C<>Lp}s8atGg&E>gOo=xPk#=(%jIL?TRz1vXG z6+fSPj;XzgNbG-%DS)$e^ORc$28Vd1gfqmc*T-^aNRdxMTlq5P=59DexHu*9`8PXw z!c5U4BV>#XMB$lRB!<;65yhODI!qLxIolLVI7}ryR;7^{=@M$Nw1hf$tB&#p#qvO0 zDytry6}rnJ+JpuBVzX_}LH@<@Ih+jo`ulNas_2btXr~*vns9r8q|w16<4d_VZeEuN->C6p z{Yr!U`;RA9z8qJ#J{ZuNT7o>9KUlLrn4^nDKozEj7ZCxMC>Oc~6=$HI=k@nZj8lXUkJu%CCB2k)NCnt36>K@lIt`P_(! zsOiuSDMzZUxL{TJ>zRvpn7S1+2!eGS>6}xlE%fmYb4guKIb*=WfuY#K-<`N?opKi& zLqOxVjF#vZt@<*EXN`XquitLqufHUp<+6XaiG63}6z`tL&HK3BOZonmRL=B0{W_W@ z!M$ti^2xZJ(7P$`I`~#5!$j@mwoX81_`jS(eK?0lY9Iq$Dh<8DgC#NSauV_Cp+gs} z2ZJ=2E!Ur5+IeV*C#?_1rh*qw_D)GP)HF!;6_u*X;CLf-(9ss; z$T2aKjYV84V8S_2UgjMl?>b5sUvy7tVxPehVL^$v_NP+eV|&m)bqOlU@sR}k^P9)n z|M6dF$ZLO7v3<;ODpW@8*fFXFp42)zqzKKB6|SWQ=(qaHKlAtg`cxWGB@=vVmkBrejj+x`s-{Q>w{2rtOamhsdEsyq}2lr6f_AwJv z0N6MUovVRqOQBJ(F{j^hWQ<@-@$+1o-m^a@bItW!e8Q*(&{FH36nu05z>afgVn9pe-j_3 z$vH-07s(>=)JM#|!irfL9wC#r+f#p$%#>?772ujIgSpjZZ7I^~Yw&lUSF0Vm_({2_WXUks<#PL^Wql0i9LzpCHMzeDySGUa+_3@s|3S3ZD9olH@);`|k+~WQhz#s^9)##HmH@bB) z6y(bS0BkbPQ1H*j`fV*Qk~+gHBpU7Uj{Uq!C{4uFSIB2VEx*&)qxr}3+zs^ISSr7I zvf;NOX~hJk3-3*A^#vG%8*d^r3Ct&hYhq0rZzeXK$*<#!x781ICZA2wWPAKLqjqJN zcKVmUd|JhhLf<=@(W@Q)>3w-4WgQ+FZuiME$`vf8We@GW5fc2Ca9gvz(gm-4<6goO zVaFnn5k7b?Pc+S7&)tM7^twVxbW)}7#)Z-9KnWWd)glrNEiO{k^Srn#;o5n}iBE0M zz>Rqxrl@fYA3##zWCyWcJLcnQp$4GsxYAOXk&de<@B*F#%&qJ;6ycNG9Jxdog8g<1 z((ooP9u$C5@pMXiKaI`I-2BW&dNI4Y>TQXw1C%A%Z-)+T8|i4h5{!<6SsjlXf_}UQ zfcrdriUe))1#ndV6;lWxy> zwuV_GEU%=l2uCNaOm|4b-I7u&9!oumT@P@?rpmb89!o_XKQApUUA_S?#OGjJypqb# z_c5jC_xJ3ShYoe--7%CBb0qnpy>Fd~9f2W9ui!H}RLeyz>y01TDn5;phl!{+OiW%^ z>9wcJn{kOYPtSjMg%H1GImZ{a8A(wGn&Xp@acOtHZ4;)gR0kde$motw0`|r@EpQ{k z4dMlty+NgEgIgxgP1W{7BD>`EBX9awQEv2H*fG_X?g{w)o-j)-1e|tkwT(@x@LGC0zOghKyO?rYXZ`Nh`hwYabkhSa zIv*I`HnW?5NAsINTcYQgJo^jxhc5oOI^`9e#H|?c_}T@)MV;4|Mitqs;TEe)NAgMe zYAz(72|je_&!s8#j+kIe_w=rA3a$H!iQa`A9XI~b&(TTe#Fu+tq{(?*03g!=LJ_6Q z6$%3^!QTI45E$5IIP$7zv7!4OR$xnRqD|HNiioppv;5Tb zbP5 **_NOTE:_** As your Dev environment, you can run the code on a remote VM and use the [VSCode Remote SSH](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh) plugin to connect to it. -TODO: re-check WSL2 + Docker Desktop setup - -## Extra steps for MacOS users - -The script the `make deployment-config` target to generate the deployment files for porch. The scripts called by this make target use recent `bash` additions and expect the gnu version of the `sed` command. MacOS comes with `bash` 3.x.x by default and with a version of `sed` that is incompatible with gnu `sed`. TODO: check if sed is indeed still used. - -1. Install `bash` 4.x.x or better of `bash` using homebrew, see [this this post for details](https://apple.stackexchange.com/questions/193411/update-bash-to-version-4-0-on-osx) -2. Install `gsed` using homebrew, see [this post for details](https://stackoverflow.com/questions/4247068/sed-command-with-i-option-failing-on-mac-but-works-on-linux) -3. `sudo ln -s /opt/homebrew/bin/gsed /opt/homebrew/bin/sed` create a soft link for `sed` from `gsed` -4. Ensure that `/opt/homebrew/bin` is earlier in your path than `/bin` and `/usr/bin` - -> **_NOTE:_** The changes above **permanently** change the `bash` version and `sed` for **all** applications and may cause side effects. You may wish to revert the changes (particularly the `sed-->gsed` soft link) when you complete your work on Porch. - -## Setup the environment automatically - -The [`./scripts/setup-dev-env.sh` setup script](../../../scripts/setup-dev-env.sh) automatically builds a porch development environment. -Please note that this is only one of many possible ways of building a working porch development environment so feel free to customize it to suit your needs. -The setup script will perform the following steps: - -1. Install a kind cluster. - The name of the cluster is read from the PORCH_TEST_CLUSTER environment variable, otherwise it defaults to `porch-test`. - The configuration of the cluster is taken from [here](../../../deployments/local/kind_porch_test_cluster.yaml). - -1. Install the MetalLB load balancer into the cluster, in order to allow `LoadBalancer` typed Services to work properly. - -1. Install the Gitea git server into the cluster. - This can be used to test porch during development, but it is not used in automated end-to-end tests. - Gitea is exposed to the host via port 3000. The GUI is accessible via , or (username: nephio, password: secret). - - > **_NOTE:_** If you are using WSL2 (Windows Subsystem for Linux), then Gitea is also accessible from the Windows host via the URL. - -1. Generate the PKI resources (key pairs and certificates) required for end-to-end tests. - -1. Build the porch CLI binary. - The result will be generated as `.build/porchctl`. - -That's it! If you want to run the steps manually, please use the code of the script as a detailed description. - -The setup script is idempotent in the sense that you can rerun it without cleaning up first. This also means that if the script is interrupted for any reason, and you run it again it should effectively continue the process where it left off. - -## Extra manual steps - -Copy the `.build/porchctl` binary (that was built by the setup script) to somewhere in your $PATH, or add the `.build` directory to your PATH. - -## Build and deploy porch - -You can build all of porch, and also deploy it into your newly created kind cluster with this command. - -```bash -make run-in-kind -``` - -See more advanced variants of this command in the [detailed description of the development process](dev-process.md). - -## Check that everything works as expected - -At this point you are basically ready to start developing porch, but before you start it is worth checking that everything works as expected. - -### Check that the apiservice is ready - -```bash -kubectl get apiservice v1alpha1.porch.kpt.dev -``` - -Sample output: - -```bash -NAME SERVICE AVAILABLE AGE -v1alpha1.porch.kpt.dev porch-system/api True 18m -``` - -### Check the porch api-resources - -```bash -kubectl api-resources | grep porch -``` - -Sample output: - -```bash -packagerevs config.porch.kpt.dev/v1alpha1 true PackageRev -packagevariants config.porch.kpt.dev/v1alpha1 true PackageVariant -packagevariantsets config.porch.kpt.dev/v1alpha2 true PackageVariantSet -repositories config.porch.kpt.dev/v1alpha1 true Repository -functions porch.kpt.dev/v1alpha1 true Function -packagerevisionresources porch.kpt.dev/v1alpha1 true PackageRevisionResources -packagerevisions porch.kpt.dev/v1alpha1 true PackageRevision -packages porch.kpt.dev/v1alpha1 true PorchPackage -``` - -# Create Repositories using your local Porch server - -To connect Porch to Gitea, follow [step 7 in the Starting with Porch](https://github.com/nephio-project/porch/tree/main/docs/tutorials/starting-with-porch#Connect-the-Gitea-repositories-to-Porch) tutorial to create the repositories in Porch. - -You will notice logging messages in VSCode when you run the command `kubectl apply -f porch-repositories.yaml` command. - -You can check that your locally running Porch server has created the repositories by running the `porchctl` command: - -```bash -porchctl repo get -A -``` - -Sample output: - -```bash -NAME TYPE CONTENT DEPLOYMENT READY ADDRESS -external-blueprints git Package false True https://github.com/nephio-project/free5gc-packages.git -management git Package false True http://172.18.255.200:3000/nephio/management.git -``` - -You can also check the repositories using kubectl. - -```bash -kubectl get repositories -n porch-demo -``` - -Sample output: - -```bash -NAME TYPE CONTENT DEPLOYMENT READY ADDRESS -external-blueprints git Package false True https://github.com/nephio-project/free5gc-packages.git -management git Package false True http://172.18.255.200:3000/nephio/management.git -``` - -You now have a locally running Porch (api)server. Happy developing! - -# Restart from scratch - -Sometimes the development cluster gets cluttered and you may experience weird behavior from porch. -In this case you might want to restart with a clean slate, by deleting the development cluster with the following command: - -```bash -kind delete cluster --name porch-test -``` - -and running the [setup script](../../../scripts/setup-dev-env.sh) again: - -```bash -./scripts/setup-dev-env.sh -``` - -# Getting started with actual development - -You can find a detailed description of the actual development process [here](dev-process.md). - diff --git a/docs/tutorials/porch-development-environment/dev-process.md b/docs/tutorials/porch-development-environment/dev-process.md deleted file mode 100644 index ae26b112..00000000 --- a/docs/tutorials/porch-development-environment/dev-process.md +++ /dev/null @@ -1,211 +0,0 @@ -# Overview of a possible development process - -After you ran the setup script as explained in the [first part of the tutorial](README.md) you are ready to start the actual development of porch. That process involves (among others) a combination of the tasks explained below. - - * [Build and deploy all of porch](#build-and-deploy-all-of-porch) - * [Troubleshoot the porch API server](#troubleshoot-the-porch-api-server) - + [Configure VSCode to run the Porch (api)server](#configure-vscode-to-run-the-porch--api-server) - + [Check to ensure that the API server is serving requests:](#check-to-ensure-that-the-api-server-is-serving-requests-) - * [Troubleshoot the porch controllers](#troubleshoot-the-porch-controllers) - * [Run the unit tests](#run-the-unit-tests) - * [Run the end-to-end tests](#run-the-end-to-end-tests) - * [Switching between tasks](#switching-between-tasks) - * [Getting to know the make targets](#getting-to-know-the-make-targets) - * [Restart with a clean-slate](#restart-with-a-clean-slate) - -## Build and deploy all of porch - -The following command will rebuild all of porch and deploy all of its components into your porch-test kind cluster (created in the [first part of the tutorial](README.md)): - -```bash -make run-in-kind -``` - -## Troubleshoot the porch API server - -There are several ways to develop, test and troubleshoot the porch API server. In this chapter we describe an option where every other parts of porch is running in the porch-test kind cluster, but the porch API server is running locally on your machine, typically in an IDE. - -The following command will rebuild and deploy porch, except the porch API server component, and also prepares your environment for connecting the local API server with the in-cluster components. - -```bash -make run-in-kind-no-server -``` - -After issuing this command you are expected to start the porch API server locally on your machine (outside of the kind cluster); probably in your IDE, potentially in a debugger. - -### Configure VSCode to run the Porch (api)server - -The simplest way to run the porch API server is to launch it in a VSCode IDE, as described by the following process: - -1. Open the `porch.code-workspace` file in the root of the porch git repo. - -1. Edit your local `.vscode/launch.json` file as follows: Change the `--kubeconfig` argument of the `Launch Server` configuration to point to a KUBECONFIG file that is set to the kind cluster as the current context. - > **_NOTE:_** If your current KUBECONFIG environment variable already points to the porch-test kind cluster, then you don't have to touch anything. - -1. Launch the Porch server locally in VSCode by selecting the "Launch Server" configuration on the VSCode "Run and Debug" window. For more information please refer to the [VSCode debugging documentation](https://code.visualstudio.com/docs/editor/debugging). - -### Check to ensure that the API server is serving requests: - -```bash -curl https://localhost:4443/apis/porch.kpt.dev/v1alpha1 -k -``` - -
    -Sample output - -```json -{ - "kind": "APIResourceList", - "apiVersion": "v1", - "groupVersion": "porch.kpt.dev/v1alpha1", - "resources": [ - { - "name": "functions", - "singularName": "", - "namespaced": true, - "kind": "Function", - "verbs": [ - "get", - "list" - ] - }, - { - "name": "packagerevisionresources", - "singularName": "", - "namespaced": true, - "kind": "PackageRevisionResources", - "verbs": [ - "get", - "list", - "patch", - "update" - ] - }, - { - "name": "packagerevisions", - "singularName": "", - "namespaced": true, - "kind": "PackageRevision", - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "name": "packagerevisions/approval", - "singularName": "", - "namespaced": true, - "kind": "PackageRevision", - "verbs": [ - "get", - "patch", - "update" - ] - }, - { - "name": "packages", - "singularName": "", - "namespaced": true, - "kind": "Package", - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update" - ] - } - ] -} -``` - -
    - - -## Troubleshoot the porch controllers - -There are several ways to develop, test and troubleshoot the porch controllers (i.e. PackageVariant, PackageVariantSet). In this chapter we describe an option where every other parts of porch is running in the porch-test kind cluster, but the process hosting all porch controllers is running locally on your machine. - -The following command will rebuild and deploy porch, except the porch-controllers component: - -```bash -make run-in-kind-no-controllers -``` - -After issuing this command you are expected to start the porch controllers process locally on your machine (outside of the kind cluster); probably in your IDE, potentially in a debugger. If you are using VS Code you can use the "Launch Controllers" configuration that is defined in the [launch.json](../../../.vscode/launch.json) file of the porch git repo. - -## Run the unit tests - -```bash -make test -``` - -## Run the end-to-end tests - -To run the end-to-end tests against the Kubernetes API server where KUBECONFIG points to, simply issue: - -```bash -make test-e2e -``` - -To run the end-to-end tests against a clean deployment, simply issue: - -```bash -make test-e2e-clean -``` -This will -- create a brand new kind cluster, -- rebuild porch -- deploy the newly built porch into the new cluster -- run the end-to-end tests against that -- deletes the kind cluster if all tests passed - -This process closely mimics the end-to-end tests that are run against your PR on Github. - -In order to run just one particular test case you can execute something similar to this: - -```bash -E2E=1 go test -v ./test/e2e -run TestE2E/PorchSuite/TestPackageRevisionInMultipleNamespaces -``` -or this: -```bash -E2E=1 go test -v ./test/e2e/cli -run TestPorch/rpkg-lifecycle - -``` - -## Switching between tasks - -The `make run-in-kind`, `make run-in-kind-no-server` and `make run-in-kind-no-controller` commands can be executed right after each other. No clean-up or restart is required between them. The make scripts will intelligently do the necessary changes in your current porch deployment in kind (e.g. removing or re-adding the porch API server). - -You can always find the configuration of your current deployment in `.build/deploy`. - -You can always use `make test` and `make test-e2e` to test your current setup, no matter which of the above detailed configurations it is. - -## Getting to know the make targets - -Try: `make help` - -## Restart with a clean-slate - -Sometimes the development kind cluster gets cluttered and you may experience weird behavior from porch. -In this case you might want to restart with a clean slate: -First, delete the development kind cluster with the following command: - -```bash -kind delete cluster --name porch-test -``` - -then re-run the [setup script](../../../scripts/setup-dev-env.sh): - -```bash -./scripts/setup-dev-env.sh -``` - -finally deploy porch into the kind cluster by any of the methods explained above. - diff --git a/docs/tutorials/starting-with-porch/README.md b/docs/tutorials/starting-with-porch/README.md deleted file mode 100644 index 16a7e506..00000000 --- a/docs/tutorials/starting-with-porch/README.md +++ /dev/null @@ -1,1975 +0,0 @@ -# Starting with Porch Tutorial - -This tutorial is a guide to installing and using Porch. It is based on the [Porch demo produced by Tal Liron of Google](https://github.com/tliron/klab/tree/main/environments/porch-demo). Users should be very comfortable with using `git`, `docker`, and `kubernetes`. - -# Table of Contents -1. [Prerequisites](#Prerequisites) -2. [Create the Kind clusters for management and edge1](#Create-the-Kind-clusters-for-management-and-edge1) -3. [Install MetalLB on the management cluster](#Install-MetalLB-on-the-management-cluster) -4. [Deploy and set up gitea on the management cluster](#Deploy-and-set-up-gitea-on-the-management-cluster) -5. [Create repositories on Gitea for `management` and `edge1`](#Create-repositories-on-Gitea-for-management-and-edge1) -6. [Install Porch](#Install-Porch) -7. [Connect the Gitea repositories to Porch](#Connect-the-Gitea-repositories-to-Porch) -8. [Configure configsync on the workload cluster](#Configure-configsync-on-the-workload-cluster) -9. [Exploring the Porch resources](#Exploring-the-Porch-resources) -10. [The porchctl command](#The-porchctl-command) -11. [Creating a blueprint in Porch](#Creating-a-blueprint-in-Porch) -12. [Deploying a blueprint onto a workload cluster](#Deploying-a-blueprint-onto-a-workload-cluster) -13. [Deploying using Package Variant Sets](#Deploying-using-Package-Variant-Sets) - -See also [the Nephio Learning Resource](https://github.com/nephio-project/docs/blob/main/learning.md) page for background help and information. - -## Prerequisites - -The tutorial can be executed on a Linux VM or directly on a laptop. It has been verified to execute on a Macbook Pro M1 machine and an Ubuntu 20.04 VM. - -The following software should be installed prior to running through the tutorial: -1. [git](https://git-scm.com/) -2. [Docker](https://www.docker.com/get-started/) -3. [kubectl](https://kubernetes.io/docs/reference/kubectl/) -4. [kind](https://kind.sigs.k8s.io/) -5. [kpt](https://github.com/kptdev/kpt) -6. [The go programming language](https://go.dev/) -7. [Visual Studio Code](https://code.visualstudio.com/download) -8. [VS Code extensions for go](https://code.visualstudio.com/docs/languages/go) - -## Clone the repo and cd into the tutorial - -``` -git clone https://github.com/nephio-project/porch.git - -cd porch/docs/tutorials/starting-with-porch/ -``` - -## Create the Kind clusters for management and edge1 - -Create the clusters: - -``` -kind create cluster --config=kind_management_cluster.yaml -kind create cluster --config=kind_edge1_cluster.yaml -``` - -Output the kubectl config for the clusters: - -``` -kind get kubeconfig --name=management > ~/.kube/kind-management-config -kind get kubeconfig --name=edge1 > ~/.kube/kind-edge1-config -``` - -Toggling kubectl between the clusters: - -``` -export KUBECONFIG=~/.kube/kind-management-config - -export KUBECONFIG=~/.kube/kind-edge1-config -``` - -## Install MetalLB on the management cluster - -Install the MetalLB load balancer on the management cluster to expose services: -``` -export KUBECONFIG=~/.kube/kind-management-config -kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.13.12/config/manifests/metallb-native.yaml -kubectl wait --namespace metallb-system \ - --for=condition=ready pod \ - --selector=component=controller \ - --timeout=90s -``` - -Check the subnet that is being used by the `kind` network in docker -``` -docker network inspect kind | grep Subnet -``` - -Sample output: -``` -"Subnet": "172.18.0.0/16", -"Subnet": "fc00:f853:ccd:e793::/64" -``` - -Edit the `metallb-conf.yaml` file and ensure the `spec.addresses` range is in the IPv4 subnet being used by the `kind` network in docker. -``` -... -spec: - addresses: - - 172.18.255.200-172.18.255.250 -... -``` - -Apply the MetalLB configuration: -``` -kubectl apply -f metallb-conf.yaml -``` - -## Deploy and set up gitea on the management cluster using kpt - -Get the gitea kpt package: - -``` -export KUBECONFIG=~/.kube/kind-management-config - -cd kpt_packages - -kpt pkg get https://github.com/nephio-project/catalog/tree/main/distros/sandbox/gitea -``` - -Comment out the preconfigured IP address from the `gitea/service-gitea.yaml` file in the gitea Kpt package: -``` -11c11 -< metallb.universe.tf/loadBalancerIPs: 172.18.0.200 ---- -> # metallb.universe.tf/loadBalancerIPs: 172.18.0.200 -``` - -Now render, init and apply the Gitea Kpt package: -``` -kpt fn render gitea -kpt live init gitea # You only need to do this command once -kpt live apply gitea -``` - -Once the package is applied, all the gitea pods should come up and you should be able to reach the Gitea UI on the exposed IP Address/port of the gitea service. - -``` -kubectl get svc -n gitea gitea - -NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE -gitea LoadBalancer 10.96.243.120 172.18.255.200 22:31305/TCP,3000:31102/TCP 10m -``` -The UI is available at http://172.18.255.200:3000 in the example above. - -To login to Gitea, use the credentials `nephio:secret`. - -## Create repositories on Gitea for management and edge1 - -On the gitea UI, click the '+' opposite "Repositories" and fill in the form for both the `management` and `edge1` repositories. Use default values except for the following fields: - -- Repository Name: "Management" or "edge1" -- Description: Something appropriate - -Alternatively, we can create the repos via curl: -``` -curl -k -H "content-type: application/json" "http://nephio:secret@172.18.255.200:3000/api/v1/user/repos" --data '{"name":"management"}' - -curl -k -H "content-type: application/json" "http://nephio:secret@172.18.255.200:3000/api/v1/user/repos" --data '{"name":"edge1"}' -``` - -Check the repos: -``` - curl -k -H "content-type: application/json" "http://nephio:secret@172.18.255.200:3000/api/v1/user/repos" | grep -Po '"name": *\K"[^"]*"' -``` - -Now initialize both repos with an initial commit. - -Initialize the `management` repo - -``` -cd ../repos -git clone http://172.18.255.200:3000/nephio/management -cd management - -touch README.md -git init -git checkout -b main -git config user.name nephio -git add README.md - -git commit -m "first commit" -git remote remove origin -git remote add origin http://nephio:secret@172.18.255.200:3000/nephio/management.git -git remote -v -git push -u origin main -cd .. - ``` - -Initialize the `edge1` repo - -``` -git clone http://172.18.255.200:3000/nephio/edge1 -cd edge1 - -touch README.md -git init -git checkout -b main -git config user.name nephio -git add README.md - -git commit -m "first commit" -git remote remove origin -git remote add origin http://nephio:secret@172.18.255.200:3000/nephio/edge1.git -git remote -v -git push -u origin main -cd ../../ -``` - -## Install Porch - -We will use the Porch Kpt package from Nephio catalog repo. -``` -cd kpt_packages - -kpt pkg get https://github.com/nephio-project/catalog/tree/main/nephio/core/porch -``` - -Now we can install porch. We render the kpt package and then init and apply it. - -``` -kpt fn render porch -kpt live init porch # You only need to do this command once -kpt live apply porch -``` -Check that the Porch PODs are running on the management cluster: -``` -kubectl get pod -n porch-system -NAME READY STATUS RESTARTS AGE -function-runner-7994f65554-nrzdh 1/1 Running 0 81s -function-runner-7994f65554-txh9l 1/1 Running 0 81s -porch-controllers-7fb4497b77-2r2r6 1/1 Running 0 81s -porch-server-68bfdddbbf-pfqsm 1/1 Running 0 81s -``` -Check that the Porch CRDs and other resources have been created: -``` -kubectl api-resources | grep porch -packagerevs config.porch.kpt.dev/v1alpha1 true PackageRev -packagevariants config.porch.kpt.dev/v1alpha1 true PackageVariant -packagevariantsets config.porch.kpt.dev/v1alpha2 true PackageVariantSet -repositories config.porch.kpt.dev/v1alpha1 true Repository -functions porch.kpt.dev/v1alpha1 true Function -packagerevisionresources porch.kpt.dev/v1alpha1 true PackageRevisionResources -packagerevisions porch.kpt.dev/v1alpha1 true PackageRevision -packages porch.kpt.dev/v1alpha1 true Package -``` - -## Connect the Gitea repositories to Porch - -Create a demo namespace: - -``` -kubectl create namespace porch-demo -``` - -Create a secret for the Gitea credentials in the demo namespace: - -``` -kubectl create secret generic gitea \ - --namespace=porch-demo \ - --type=kubernetes.io/basic-auth \ - --from-literal=username=nephio \ - --from-literal=password=secret -``` - -Now, define the Gitea repositories in Porch: -``` -kubectl apply -f porch-repositories.yaml -``` - -Check that the repositories have been correctly created: -``` -kubectl get repositories -n porch-demo -NAME TYPE CONTENT DEPLOYMENT READY ADDRESS -edge1 git Package true True http://172.18.255.200:3000/nephio/edge1.git -external-blueprints git Package false True https://github.com/nephio-project/free5gc-packages.git -management git Package false True http://172.18.255.200:3000/nephio/management.git -``` - -## Configure configsync on the workload cluster - -Configsync is installed on the `edge1` cluster so that it syncs the contents of the `edge1` repository onto the `edge1` workload cluster. We will use the configsync package from Nephio. - -``` -export KUBECONFIG=~/.kube/kind-edge1-config - -cd kpt_packages - -kpt pkg get https://github.com/nephio-project/catalog/tree/main/nephio/core/configsync -kpt fn render configsync -kpt live init configsync -kpt live apply configsync -``` - -Check that the configsync PODs are up and running: -``` -kubectl get pod -n config-management-system -NAME READY STATUS RESTARTS AGE -config-management-operator-6946b77565-f45pc 1/1 Running 0 118m -reconciler-manager-5b5d8557-gnhb2 2/2 Running 0 118m -``` - -Now, we need to set up a Rootsync CR to synchronize the `edge1` repo: - -``` -kpt pkg get https://github.com/nephio-project/catalog/tree/main/nephio/optional/rootsync -``` - -Edit the `rootsync/package-context.yaml` file to set the name of the cluster/repo we are syncing from/to: -``` -9c9 -< name: example-rootsync ---- -> name: edge1 -``` - -Render the package. This configures the `rootsync/rootsync.yaml` file in the Kpt package: -``` -kpt fn render rootsync -``` - -Edit the `rootsync/rootsync.yaml` file to set the IP address of Gitea and to turn off authentication for accessing gitea: -``` -11c11 -< repo: http://172.18.0.200:3000/nephio/example-cluster-name.git ---- -> repo: http://172.18.255.200:3000/nephio/edge1.git -13,15c13,16 -< auth: token -< secretRef: -< name: example-cluster-name-access-token-configsync ---- -> auth: none -> # auth: token -> # secretRef: -> # name: edge1-access-token-configsync -``` - -Initialize and apply rootsync: -``` -export KUBECONFIG=~/.kube/kind-edge1-config - -kpt live init rootsync # This command is only needed once -kpt live apply rootsync -``` -Check that the RootSync CR is created: -``` -kubectl get rootsync -n config-management-system -NAME RENDERINGCOMMIT RENDERINGERRORCOUNT SOURCECOMMIT SOURCEERRORCOUNT SYNCCOMMIT SYNCERRORCOUNT -edge1 613eb1ad5632d95c4336894f8a128cc871fb3266 613eb1ad5632d95c4336894f8a128cc871fb3266 613eb1ad5632d95c4336894f8a128cc871fb3266 -``` - -Check that Configsync is synchronized with the repo on the management cluster: -``` -kubectl get pod -n config-management-system -l app=reconciler -NAME READY STATUS RESTARTS AGE -root-reconciler-edge1-68576f878c-92k54 4/4 Running 0 2d17h - -kubectl logs -n config-management-system root-reconciler-edge1-68576f878c-92k54 -c git-sync -f -``` -
    -Produces output similar to this - -``` -INFO: detected pid 1, running init handler -I0105 17:50:11.472934 15 cmd.go:48] "level"=5 "msg"="running command" "cwd"="" "cmd"="git config --global gc.autoDetach false" -I0105 17:50:11.493046 15 cmd.go:48] "level"=5 "msg"="running command" "cwd"="" "cmd"="git config --global gc.pruneExpire now" -I0105 17:50:11.513487 15 main.go:473] "level"=0 "msg"="starting up" "pid"=15 "args"=["/git-sync","--root=/repo/source","--dest=rev","--max-sync-failures=30","--error-file=error.json","--v=5"] -I0105 17:50:11.514044 15 main.go:923] "level"=0 "msg"="cloning repo" "origin"="http://172.18.255.200:3000/nephio/edge1.git" "path"="/repo/source" -I0105 17:50:11.514061 15 cmd.go:48] "level"=5 "msg"="running command" "cwd"="" "cmd"="git clone -v --no-checkout -b main --depth 1 http://172.18.255.200:3000/nephio/edge1.git /repo/source" -I0105 17:50:11.706506 15 cmd.go:48] "level"=5 "msg"="running command" "cwd"="/repo/source" "cmd"="git rev-parse HEAD" -I0105 17:50:11.729292 15 main.go:737] "level"=0 "msg"="syncing git" "rev"="HEAD" "hash"="385295a2143f10a6cda0cf4609c45d7499185e01" -I0105 17:50:11.729332 15 cmd.go:48] "level"=5 "msg"="running command" "cwd"="/repo/source" "cmd"="git fetch -f --tags --depth 1 http://172.18.255.200:3000/nephio/edge1.git main" -I0105 17:50:11.920110 15 cmd.go:48] "level"=5 "msg"="running command" "cwd"="/repo/source" "cmd"="git cat-file -t 385295a2143f10a6cda0cf4609c45d7499185e01" -I0105 17:50:11.945545 15 cmd.go:48] "level"=5 "msg"="running command" "cwd"="/repo/source" "cmd"="git rev-parse 385295a2143f10a6cda0cf4609c45d7499185e01" -I0105 17:50:11.967150 15 main.go:726] "level"=1 "msg"="removing worktree" "path"="/repo/source/385295a2143f10a6cda0cf4609c45d7499185e01" -I0105 17:50:11.967359 15 cmd.go:48] "level"=5 "msg"="running command" "cwd"="/repo/source" "cmd"="git worktree prune" -I0105 17:50:11.987522 15 cmd.go:48] "level"=5 "msg"="running command" "cwd"="/repo/source" "cmd"="git worktree add --detach /repo/source/385295a2143f10a6cda0cf4609c45d7499185e01 385295a2143f10a6cda0cf4609c45d7499185e01 --no-checkout" -I0105 17:50:12.057698 15 main.go:772] "level"=0 "msg"="adding worktree" "path"="/repo/source/385295a2143f10a6cda0cf4609c45d7499185e01" "branch"="origin/main" -I0105 17:50:12.057988 15 cmd.go:48] "level"=5 "msg"="running command" "cwd"="/repo/source/385295a2143f10a6cda0cf4609c45d7499185e01" "cmd"="git reset --hard 385295a2143f10a6cda0cf4609c45d7499185e01" -I0105 17:50:12.099783 15 main.go:833] "level"=0 "msg"="reset worktree to hash" "path"="/repo/source/385295a2143f10a6cda0cf4609c45d7499185e01" "hash"="385295a2143f10a6cda0cf4609c45d7499185e01" -I0105 17:50:12.099805 15 main.go:838] "level"=0 "msg"="updating submodules" -I0105 17:50:12.099976 15 cmd.go:48] "level"=5 "msg"="running command" "cwd"="/repo/source/385295a2143f10a6cda0cf4609c45d7499185e01" "cmd"="git submodule update --init --recursive --depth 1" -I0105 17:50:12.442466 15 main.go:694] "level"=1 "msg"="creating tmp symlink" "root"="/repo/source/" "dst"="385295a2143f10a6cda0cf4609c45d7499185e01" "src"="tmp-link" -I0105 17:50:12.442494 15 cmd.go:48] "level"=5 "msg"="running command" "cwd"="/repo/source/" "cmd"="ln -snf 385295a2143f10a6cda0cf4609c45d7499185e01 tmp-link" -I0105 17:50:12.453694 15 main.go:699] "level"=1 "msg"="renaming symlink" "root"="/repo/source/" "old_name"="tmp-link" "new_name"="rev" -I0105 17:50:12.453718 15 cmd.go:48] "level"=5 "msg"="running command" "cwd"="/repo/source/" "cmd"="mv -T tmp-link rev" -I0105 17:50:12.467904 15 cmd.go:48] "level"=5 "msg"="running command" "cwd"="/repo/source" "cmd"="git gc --auto" -I0105 17:50:12.492329 15 cmd.go:48] "level"=5 "msg"="running command" "cwd"="/repo/source" "cmd"="git cat-file -t HEAD" -I0105 17:50:12.518878 15 cmd.go:48] "level"=5 "msg"="running command" "cwd"="/repo/source" "cmd"="git rev-parse HEAD" -I0105 17:50:12.540979 15 main.go:585] "level"=1 "msg"="next sync" "wait_time"=15000000000 -I0105 17:50:27.553609 15 cmd.go:48] "level"=5 "msg"="running command" "cwd"="/repo/source/rev" "cmd"="git rev-parse HEAD" -I0105 17:50:27.600401 15 cmd.go:48] "level"=5 "msg"="running command" "cwd"="/repo/source/rev" "cmd"="git ls-remote -q http://172.18.255.200:3000/nephio/edge1.git refs/heads/main" -I0105 17:50:27.694035 15 main.go:1065] "level"=1 "msg"="no update required" "rev"="HEAD" "local"="385295a2143f10a6cda0cf4609c45d7499185e01" "remote"="385295a2143f10a6cda0cf4609c45d7499185e01" -I0105 17:50:27.694159 15 main.go:585] "level"=1 "msg"="next sync" "wait_time"=15000000000 -I0105 17:50:42.695482 15 cmd.go:48] "level"=5 "msg"="running command" "cwd"="/repo/source/rev" "cmd"="git rev-parse HEAD" -I0105 17:50:42.733276 15 cmd.go:48] "level"=5 "msg"="running command" "cwd"="/repo/source/rev" "cmd"="git ls-remote -q http://172.18.255.200:3000/nephio/edge1.git refs/heads/main" -I0105 17:50:42.826422 15 main.go:1065] "level"=1 "msg"="no update required" "rev"="HEAD" "local"="385295a2143f10a6cda0cf4609c45d7499185e01" "remote"="385295a2143f10a6cda0cf4609c45d7499185e01" -I0105 17:50:42.826611 15 main.go:585] "level"=1 "msg"="next sync" "wait_time"=15000000000 - -....... - -I0108 11:04:05.935586 15 cmd.go:48] "level"=5 "msg"="running command" "cwd"="/repo/source/rev" "cmd"="git rev-parse HEAD" -I0108 11:04:05.981750 15 cmd.go:48] "level"=5 "msg"="running command" "cwd"="/repo/source/rev" "cmd"="git ls-remote -q http://172.18.255.200:3000/nephio/edge1.git refs/heads/main" -I0108 11:04:06.079536 15 main.go:1065] "level"=1 "msg"="no update required" "rev"="HEAD" "local"="385295a2143f10a6cda0cf4609c45d7499185e01" "remote"="385295a2143f10a6cda0cf4609c45d7499185e01" -I0108 11:04:06.079599 15 main.go:585] "level"=1 "msg"="next sync" "wait_time"=15000000000 -``` -
    - -## Exploring the Porch resources - -We have configured three repositories in Porch: -``` -kubectl get repositories -n porch-demo -NAME TYPE CONTENT DEPLOYMENT READY ADDRESS -edge1 git Package true True http://172.18.255.200:3000/nephio/edge1.git -external-blueprints git Package false True https://github.com/nephio-project/free5gc-packages.git -management git Package false True http://172.18.255.200:3000/nephio/management.git -``` - -A repository is a CR of the Porch Repository CRD. You can examine the 'repositories.config.porch.kpt.dev' CRD with either of the following commands (both of which are rather verbose): -``` -kubectl get crd -n porch-system repositories.config.porch.kpt.dev -o yaml -kubectl describe crd -n porch-system repositories.config.porch.kpt.dev -``` -You can of course examine any other CRD using the commands above and changing the CRD name/namespace. - -The full list of Nephio CRDs is as below: - -``` -kubectl api-resources --api-group=porch.kpt.dev -NAME SHORTNAMES APIVERSION NAMESPACED KIND -functions porch.kpt.dev/v1alpha1 true Function -packagerevisionresources porch.kpt.dev/v1alpha1 true PackageRevisionResources -packagerevisions porch.kpt.dev/v1alpha1 true PackageRevision -packages porch.kpt.dev/v1alpha1 true Package -``` - -
    -The PackageRevision CRD is used to keep track of revision (or version) of each package found in the repos. - -``` -kubectl get packagerevision -n porch-demo -NAME PACKAGE WORKSPACENAME REVISION LATEST LIFECYCLE REPOSITORY -external-blueprints-922121d0bcdd56bfa8cae6c375720e2b5f358ab0 free5gc-cp main main false Published external-blueprints -external-blueprints-dabbc422fdf0b8e5942e767d929b524e25f7eef9 free5gc-cp v1 v1 true Published external-blueprints -external-blueprints-716aae722092dbbb9470e56079b90ad76ec8f0d5 free5gc-operator main main false Published external-blueprints -external-blueprints-d65dc89f7a2472650651e9aea90edfcc81a9afc6 free5gc-operator v1 v1 false Published external-blueprints -external-blueprints-9fee880e8fa52066f052c9cae7aac2e2bc1b5a54 free5gc-operator v2 v2 false Published external-blueprints -external-blueprints-91d60ee31d2d0a1a6d5f1807593d5419434accd3 free5gc-operator v3 v3 false Published external-blueprints -external-blueprints-21f19a0641cf520e7dc6268e64c58c2c30c27036 free5gc-operator v4 v4 false Published external-blueprints -external-blueprints-bf2e7522ee92680bd49571ab309e3f61320cf36d free5gc-operator v5 v5 true Published external-blueprints -external-blueprints-c1b9ecb73118e001ab1d1213e6a2c94ab67a0939 free5gc-upf main main false Published external-blueprints -external-blueprints-5d48b1516e7b1ea15830ffd76b230862119981bd free5gc-upf v1 v1 true Published external-blueprints -external-blueprints-ed97798b46b36d135cf23d813eccad4857dff90f pkg-example-amf-bp main main false Published external-blueprints -external-blueprints-ed744bfdf4a4d15d4fcf3c46fde27fd6ac32d180 pkg-example-amf-bp v1 v1 false Published external-blueprints -external-blueprints-5489faa80782f91f1a07d04e206935d14c1eb24c pkg-example-amf-bp v2 v2 false Published external-blueprints -external-blueprints-16e2255bd433ef532684a3c1434ae0bede175107 pkg-example-amf-bp v3 v3 false Published external-blueprints -external-blueprints-7689cc6c953fa83ea61283983ce966dcdffd9bae pkg-example-amf-bp v4 v4 false Published external-blueprints -external-blueprints-caff9609883eea7b20b73b7425e6694f8eb6adc3 pkg-example-amf-bp v5 v5 true Published external-blueprints -external-blueprints-00b6673c438909975548b2b9f20c2e1663161815 pkg-example-smf-bp main main false Published external-blueprints -external-blueprints-4f7dfbede99dc08f2b5144ca550ca218109c52f2 pkg-example-smf-bp v1 v1 false Published external-blueprints -external-blueprints-3d9ab8f61ce1d35e264d5719d4b3c0da1ab02328 pkg-example-smf-bp v2 v2 false Published external-blueprints -external-blueprints-2006501702e105501784c78be9e7d57e426d85e8 pkg-example-smf-bp v3 v3 false Published external-blueprints -external-blueprints-c97ed7c13b3aa47cb257217f144960743aec1253 pkg-example-smf-bp v4 v4 false Published external-blueprints -external-blueprints-3bd78e46b014dac5cc0c58788c1820d043d61569 pkg-example-smf-bp v5 v5 true Published external-blueprints -external-blueprints-c3f660848d9d7a4df5481ec2e06196884778cd84 pkg-example-upf-bp main main false Published external-blueprints -external-blueprints-4cb00a17c1ee2585d6c187ba4d0211da960c0940 pkg-example-upf-bp v1 v1 false Published external-blueprints -external-blueprints-5903efe295026124e6fea926df154a72c5bd1ea9 pkg-example-upf-bp v2 v2 false Published external-blueprints -external-blueprints-16142d8d23c1b8e868a9524a1b21634c79b432d5 pkg-example-upf-bp v3 v3 false Published external-blueprints -external-blueprints-60ef45bb8f55b63556e7467f16088325022a7ece pkg-example-upf-bp v4 v4 false Published external-blueprints -external-blueprints-7757966cc7b965f1b9372370a4b382c8375a2b40 pkg-example-upf-bp v5 v5 true Published external-blueprints -``` -
    - -
    -The PackageRevisionResources resource is an API Aggregation resource that Porch uses to wrap the GET URL for the package on its repo. - -``` -kubectl get packagerevisionresources -n porch-demo -NAME PACKAGE WORKSPACENAME REVISION REPOSITORY FILES -external-blueprints-922121d0bcdd56bfa8cae6c375720e2b5f358ab0 free5gc-cp main main external-blueprints 28 -external-blueprints-dabbc422fdf0b8e5942e767d929b524e25f7eef9 free5gc-cp v1 v1 external-blueprints 28 -external-blueprints-716aae722092dbbb9470e56079b90ad76ec8f0d5 free5gc-operator main main external-blueprints 14 -external-blueprints-d65dc89f7a2472650651e9aea90edfcc81a9afc6 free5gc-operator v1 v1 external-blueprints 11 -external-blueprints-9fee880e8fa52066f052c9cae7aac2e2bc1b5a54 free5gc-operator v2 v2 external-blueprints 11 -external-blueprints-91d60ee31d2d0a1a6d5f1807593d5419434accd3 free5gc-operator v3 v3 external-blueprints 14 -external-blueprints-21f19a0641cf520e7dc6268e64c58c2c30c27036 free5gc-operator v4 v4 external-blueprints 14 -external-blueprints-bf2e7522ee92680bd49571ab309e3f61320cf36d free5gc-operator v5 v5 external-blueprints 14 -external-blueprints-c1b9ecb73118e001ab1d1213e6a2c94ab67a0939 free5gc-upf main main external-blueprints 6 -external-blueprints-5d48b1516e7b1ea15830ffd76b230862119981bd free5gc-upf v1 v1 external-blueprints 6 -external-blueprints-ed97798b46b36d135cf23d813eccad4857dff90f pkg-example-amf-bp main main external-blueprints 16 -external-blueprints-ed744bfdf4a4d15d4fcf3c46fde27fd6ac32d180 pkg-example-amf-bp v1 v1 external-blueprints 7 -external-blueprints-5489faa80782f91f1a07d04e206935d14c1eb24c pkg-example-amf-bp v2 v2 external-blueprints 8 -external-blueprints-16e2255bd433ef532684a3c1434ae0bede175107 pkg-example-amf-bp v3 v3 external-blueprints 16 -external-blueprints-7689cc6c953fa83ea61283983ce966dcdffd9bae pkg-example-amf-bp v4 v4 external-blueprints 16 -external-blueprints-caff9609883eea7b20b73b7425e6694f8eb6adc3 pkg-example-amf-bp v5 v5 external-blueprints 16 -external-blueprints-00b6673c438909975548b2b9f20c2e1663161815 pkg-example-smf-bp main main external-blueprints 17 -external-blueprints-4f7dfbede99dc08f2b5144ca550ca218109c52f2 pkg-example-smf-bp v1 v1 external-blueprints 8 -external-blueprints-3d9ab8f61ce1d35e264d5719d4b3c0da1ab02328 pkg-example-smf-bp v2 v2 external-blueprints 9 -external-blueprints-2006501702e105501784c78be9e7d57e426d85e8 pkg-example-smf-bp v3 v3 external-blueprints 17 -external-blueprints-c97ed7c13b3aa47cb257217f144960743aec1253 pkg-example-smf-bp v4 v4 external-blueprints 17 -external-blueprints-3bd78e46b014dac5cc0c58788c1820d043d61569 pkg-example-smf-bp v5 v5 external-blueprints 17 -external-blueprints-c3f660848d9d7a4df5481ec2e06196884778cd84 pkg-example-upf-bp main main external-blueprints 17 -external-blueprints-4cb00a17c1ee2585d6c187ba4d0211da960c0940 pkg-example-upf-bp v1 v1 external-blueprints 8 -external-blueprints-5903efe295026124e6fea926df154a72c5bd1ea9 pkg-example-upf-bp v2 v2 external-blueprints 8 -external-blueprints-16142d8d23c1b8e868a9524a1b21634c79b432d5 pkg-example-upf-bp v3 v3 external-blueprints 17 -external-blueprints-60ef45bb8f55b63556e7467f16088325022a7ece pkg-example-upf-bp v4 v4 external-blueprints 17 -external-blueprints-7757966cc7b965f1b9372370a4b382c8375a2b40 pkg-example-upf-bp v5 v5 external-blueprints 17 -``` -
    - -Let's examine the `free5gc-cp v1` package. - -
    -The PackageRevision CR name for free5gc-cp v1 is external-blueprints-dabbc422fdf0b8e5942e767d929b524e25f7eef9. - -``` -kubectl get packagerevision -n porch-demo external-blueprints-dabbc422fdf0b8e5942e767d929b524e25f7eef9 -o yaml -apiVersion: porch.kpt.dev/v1alpha1 -kind: PackageRevision -metadata: - creationTimestamp: "2023-06-13T13:35:34Z" - labels: - kpt.dev/latest-revision: "true" - name: external-blueprints-dabbc422fdf0b8e5942e767d929b524e25f7eef9 - namespace: porch-demo - resourceVersion: 5fc9561dcd4b2630704c192e89887490e2ff3c61 - uid: uid:free5gc-cp:v1 -spec: - lifecycle: Published - packageName: free5gc-cp - repository: external-blueprints - revision: v1 - workspaceName: v1 -status: - publishTimestamp: "2023-06-13T13:35:34Z" - publishedBy: dnaleksandrov@gmail.com - upstreamLock: {} -``` -
    - -
    -Getting the PackageRevisionResources pulls the package from its repository with each file serialized into a name-value map of resources in it's spec. - -``` -kubectl get packagerevisionresources -n porch-demo external-blueprints-dabbc422fdf0b8e5942e767d929b524e25f7eef9 -o yaml -apiVersion: porch.kpt.dev/v1alpha1 -kind: PackageRevisionResources -metadata: - creationTimestamp: "2023-06-13T13:35:34Z" - name: external-blueprints-dabbc422fdf0b8e5942e767d929b524e25f7eef9 - namespace: porch-demo - resourceVersion: 5fc9561dcd4b2630704c192e89887490e2ff3c61 - uid: uid:free5gc-cp:v1 -spec: - packageName: free5gc-cp - repository: external-blueprints - resources: - Kptfile: | - apiVersion: kpt.dev/v1 - kind: Kptfile - metadata: - name: free5gc-cp - annotations: - config.kubernetes.io/local-config: "true" - info: - description: this package represents free5gc NFs, which are required to perform E2E conn testing - pipeline: - mutators: - - image: gcr.io/kpt-fn/set-namespace:v0.4.1 - configPath: package-context.yaml - README.md: "# free5gc-cp\n\n## Description\nPackage representing free5gc control - plane NFs.\n\nPackage definition is based on [Towards5gs helm charts](https://github.com/Orange-OpenSource/towards5gs-helm), - \nand service level configuration is preserved as defined there.\n\n### Network - Functions (NFs)\n\nfree5gc project implements following NFs:\n\n\n| NF | Description - | local-config |\n| --- | --- | --- |\n| AMF | Access and Mobility Management - Function | true |\n| AUSF | Authentication Server Function | false |\n| NRF - | Network Repository Function | false |\n| NSSF | Network Slice Selection Function - | false |\n| PCF | Policy Control Function | false |\n| SMF | Session Management - Function | true |\n| UDM | Unified Data Management | false |\n| UDR | Unified - Data Repository | false |\n\nalso Database and Web UI is defined:\n\n| Service - | Description | local-config |\n| --- | --- | --- |\n| mongodb | Database to - store free5gc data | false |\n| webui | UI used to register UE | false |\n\nNote: - `local-config: true` indicates that this resources won't be deployed to the - workload cluster\n\n### Dependencies\n\n- `mongodb` requires `Persistent Volume`. - We need to assure that dynamic PV provisioning will be available on the cluster\n- - `NRF` should be running before other NFs will be instantiated\n - all NFs - packages contain `wait-nrf` init-container\n- `NRF` and `WEBUI` require DB\n - \ - packages contain `wait-mongodb` init-container\n- `WEBUI` service is exposed - as `NodePort` \n - will be used to register UE on the free5gc side\n- Communication - via `SBI` between NFs and communication with `mongodb` is defined using K8s - `ClusterIP` services\n - it forces you to deploy all NFs on a single cluster - or consider including `service mesh` in a multi-cluster scenario\n\n## Usage\n\n### - Fetch the package\n`kpt pkg get REPO_URI[.git]/PKG_PATH[@VERSION] free5gc-cp`\n\nDetails: - https://kpt.dev/reference/cli/pkg/get/\n\n### View package content\n`kpt pkg - tree free5gc-cp`\n\nDetails: https://kpt.dev/reference/cli/pkg/tree/\n\n### - Apply the package\n```\nkpt live init free5gc-cp\nkpt live apply free5gc-cp - --reconcile-timeout=2m --output=table\n```\n\nDetails: https://kpt.dev/reference/cli/live/\n\n" - ausf/ausf-configmap.yaml: "---\napiVersion: v1\nkind: ConfigMap\nmetadata:\n name: - ausf-configmap\n labels:\n app.kubernetes.io/version: \"v3.1.1\"\n app: - free5gc\ndata:\n ausfcfg.yaml: |\n info:\n version: 1.0.2\n description: - AUSF initial local configuration\n\n configuration:\n serviceNameList:\n - \ - nausf-auth\n \n sbi:\n scheme: http\n registerIPv4: - ausf-nausf # IP used to register to NRF\n bindingIPv4: 0.0.0.0 # - IP used to bind the service\n port: 80\n tls:\n key: - config/TLS/ausf.key\n pem: config/TLS/ausf.pem\n \n nrfUri: - http://nrf-nnrf:8000\n plmnSupportList:\n - mcc: 208\n mnc: - 93\n - mcc: 123\n mnc: 45\n groupId: ausfGroup001\n eapAkaSupiImsiPrefix: - false\n\n logger:\n AUSF:\n ReportCaller: false\n debugLevel: - info\n" - ausf/ausf-deployment.yaml: "---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n - \ name: free5gc-ausf\n labels:\n app.kubernetes.io/version: \"v3.1.1\"\n - \ project: free5gc\n nf: ausf\nspec:\n replicas: 1\n selector:\n matchLabels:\n - \ project: free5gc\n nf: ausf\n template:\n metadata:\n labels:\n - \ project: free5gc\n nf: ausf\n spec:\n initContainers:\n - \ - name: wait-nrf\n image: towards5gs/initcurl:1.0.0\n env:\n - \ - name: DEPENDENCIES\n value: http://nrf-nnrf:8000\n command: - ['sh', '-c', 'set -x; for dependency in $DEPENDENCIES; do while [ $(curl --insecure - --connect-timeout 1 -s -o /dev/null -w \"%{http_code}\" $dependency) -ne 200 - ]; do echo waiting for dependencies; sleep 1; done; done;']\n \n containers:\n - \ - name: ausf\n image: towards5gs/free5gc-ausf:v3.1.1\n imagePullPolicy: - IfNotPresent\n securityContext:\n {}\n ports:\n - - containerPort: 80\n command: [\"./ausf\"]\n args: [\"-c\", \"../config/ausfcfg.yaml\"]\n - \ env:\n - name: GIN_MODE\n value: release\n volumeMounts:\n - \ - mountPath: /free5gc/config/\n name: ausf-volume\n resources:\n - \ limits:\n cpu: 100m\n memory: 128Mi\n - \ requests:\n cpu: 100m\n memory: 128Mi\n - \ dnsPolicy: ClusterFirst\n restartPolicy: Always\n\n volumes:\n - \ - name: ausf-volume\n projected:\n sources:\n - - configMap:\n name: ausf-configmap\n" - ausf/ausf-service.yaml: | - --- - apiVersion: v1 - kind: Service - metadata: - name: ausf-nausf - labels: - app.kubernetes.io/version: "v3.1.1" - project: free5gc - nf: ausf - spec: - type: ClusterIP - ports: - - port: 80 - targetPort: 80 - protocol: TCP - name: http - selector: - project: free5gc - nf: ausf - mongodb/dep-sts.yaml: "---\napiVersion: apps/v1\nkind: StatefulSet\nmetadata:\n - \ name: mongodb\n namespace: default\n labels:\n app.kubernetes.io/name: - mongodb\n app.kubernetes.io/instance: free5gc\n app.kubernetes.io/component: - mongodb\nspec:\n serviceName: mongodb\n updateStrategy:\n type: RollingUpdate\n - \ selector:\n matchLabels:\n app.kubernetes.io/name: mongodb\n app.kubernetes.io/instance: - free5gc\n app.kubernetes.io/component: mongodb\n template:\n metadata:\n - \ labels:\n app.kubernetes.io/name: mongodb\n app.kubernetes.io/instance: - free5gc\n app.kubernetes.io/component: mongodb\n spec:\n \n serviceAccountName: - mongodb\n affinity:\n podAffinity:\n podAntiAffinity:\n preferredDuringSchedulingIgnoredDuringExecution:\n - \ - podAffinityTerm:\n labelSelector:\n matchLabels:\n - \ app.kubernetes.io/name: mongodb\n app.kubernetes.io/instance: - free5gc\n app.kubernetes.io/component: mongodb\n namespaces:\n - \ - \"default\"\n topologyKey: kubernetes.io/hostname\n - \ weight: 1\n nodeAffinity:\n \n securityContext:\n - \ fsGroup: 1001\n sysctls: []\n containers:\n - name: - mongodb\n image: docker.io/bitnami/mongodb:4.4.4-debian-10-r0\n imagePullPolicy: - \"IfNotPresent\"\n securityContext:\n runAsNonRoot: true\n - \ runAsUser: 1001\n env:\n - name: BITNAMI_DEBUG\n - \ value: \"false\"\n - name: ALLOW_EMPTY_PASSWORD\n value: - \"yes\"\n - name: MONGODB_SYSTEM_LOG_VERBOSITY\n value: - \"0\"\n - name: MONGODB_DISABLE_SYSTEM_LOG\n value: - \"no\"\n - name: MONGODB_ENABLE_IPV6\n value: \"no\"\n - \ - name: MONGODB_ENABLE_DIRECTORY_PER_DB\n value: \"no\"\n - \ ports:\n - name: mongodb\n containerPort: - 27017\n livenessProbe:\n exec:\n command:\n - \ - mongo\n - --disableImplicitSessions\n - - --eval\n - \"db.adminCommand('ping')\"\n initialDelaySeconds: - 30\n periodSeconds: 10\n timeoutSeconds: 5\n successThreshold: - 1\n failureThreshold: 6\n readinessProbe:\n exec:\n - \ command:\n - bash\n - -ec\n - - |\n mongo --disableImplicitSessions $TLS_OPTIONS --eval 'db.hello().isWritablePrimary - || db.hello().secondary' | grep -q 'true'\n initialDelaySeconds: - 5\n periodSeconds: 10\n timeoutSeconds: 5\n successThreshold: - 1\n failureThreshold: 6\n resources:\n limits: - {}\n requests: {}\n volumeMounts:\n - name: datadir\n - \ mountPath: /bitnami/mongodb/data/db/\n subPath: \n - \ volumes:\n volumeClaimTemplates:\n - metadata:\n name: datadir\n - \ spec:\n accessModes:\n - \"ReadWriteOnce\"\n resources:\n - \ requests:\n storage: \"6Gi\"\n" - mongodb/serviceaccount.yaml: | - --- - apiVersion: v1 - kind: ServiceAccount - metadata: - name: mongodb - namespace: default - labels: - app.kubernetes.io/name: mongodb - app.kubernetes.io/instance: free5gc - secrets: - - name: mongodb - mongodb/svc.yaml: | - --- - apiVersion: v1 - kind: Service - metadata: - name: mongodb - namespace: default - labels: - app.kubernetes.io/name: mongodb - app.kubernetes.io/instance: free5gc - app.kubernetes.io/component: mongodb - spec: - type: ClusterIP - ports: - - name: mongodb - port: 27017 - targetPort: mongodb - nodePort: null - selector: - app.kubernetes.io/name: mongodb - app.kubernetes.io/instance: free5gc - app.kubernetes.io/component: mongodb - namespace.yaml: | - apiVersion: v1 - kind: Namespace - metadata: - name: example - labels: - pod-security.kubernetes.io/warn: "privileged" - pod-security.kubernetes.io/audit: "privileged" - pod-security.kubernetes.io/enforce: "privileged" - nrf/nrf-configmap.yaml: "---\napiVersion: v1\nkind: ConfigMap\nmetadata:\n name: - nrf-configmap\n labels:\n app.kubernetes.io/version: \"v3.1.1\"\n app: - free5gc\ndata:\n nrfcfg.yaml: |\n info:\n version: 1.0.1\n description: - NRF initial local configuration\n \n configuration:\n MongoDBName: - free5gc\n MongoDBUrl: mongodb://mongodb:27017\n\n serviceNameList:\n - \ - nnrf-nfm\n - nnrf-disc\n\n sbi:\n scheme: http\n - \ registerIPv4: nrf-nnrf # IP used to serve NFs or register to another - NRF\n bindingIPv4: 0.0.0.0 # IP used to bind the service\n port: - 8000\n tls:\n key: config/TLS/nrf.key\n pem: config/TLS/nrf.pem\n - \ DefaultPlmnId:\n mcc: 208\n mnc: 93\n\n logger:\n NRF:\n - \ ReportCaller: false\n debugLevel: info\n" - nrf/nrf-deployment.yaml: "---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n - \ name: free5gc-nrf\n labels:\n app.kubernetes.io/version: \"v3.1.1\"\n - \ project: free5gc\n nf: nrf\nspec:\n replicas: 1\n selector:\n matchLabels:\n - \ project: free5gc\n nf: nrf\n template:\n metadata:\n labels:\n - \ project: free5gc\n nf: nrf\n spec:\n initContainers:\n - \ - name: wait-mongo\n image: busybox:1.32.0\n env:\n - - name: DEPENDENCIES\n value: mongodb:27017\n command: [\"sh\", - \"-c\", \"until nc -z $DEPENDENCIES; do echo waiting for the MongoDB; sleep - 2; done;\"]\n containers:\n - name: nrf\n image: towards5gs/free5gc-nrf:v3.1.1\n - \ imagePullPolicy: IfNotPresent\n securityContext:\n {}\n - \ ports:\n - containerPort: 8000\n command: [\"./nrf\"]\n - \ args: [\"-c\", \"../config/nrfcfg.yaml\"]\n env: \n - - name: DB_URI\n value: mongodb://mongodb/free5gc\n - name: - GIN_MODE\n value: release\n volumeMounts:\n - mountPath: - /free5gc/config/\n name: nrf-volume\n resources:\n limits:\n - \ cpu: 100m\n memory: 128Mi\n requests:\n - \ cpu: 100m\n memory: 128Mi\n readinessProbe:\n - \ initialDelaySeconds: 0\n periodSeconds: 1\n timeoutSeconds: - 1\n failureThreshold: 40\n successThreshold: 1\n httpGet:\n - \ scheme: \"HTTP\"\n port: 8000\n livenessProbe:\n - \ initialDelaySeconds: 120\n periodSeconds: 10\n timeoutSeconds: - 10\n failureThreshold: 3\n successThreshold: 1\n httpGet:\n - \ scheme: \"HTTP\"\n port: 8000\n dnsPolicy: ClusterFirst\n - \ restartPolicy: Always\n\n volumes:\n - name: nrf-volume\n projected:\n - \ sources:\n - configMap:\n name: nrf-configmap\n" - nrf/nrf-service.yaml: | - --- - apiVersion: v1 - kind: Service - metadata: - name: nrf-nnrf - labels: - app.kubernetes.io/version: "v3.1.1" - project: free5gc - nf: nrf - spec: - type: ClusterIP - ports: - - port: 8000 - targetPort: 8000 - protocol: TCP - name: http - selector: - project: free5gc - nf: nrf - nssf/nssf-configmap.yaml: "---\napiVersion: v1\nkind: ConfigMap\nmetadata:\n name: - nssf-configmap\n labels:\n app.kubernetes.io/version: \"v3.1.1\"\n app: - free5gc\ndata:\n nssfcfg.yaml: |\n info:\n version: 1.0.1\n description: - NSSF initial local configuration\n\n configuration:\n serviceNameList:\n - \ - nnssf-nsselection\n - nnssf-nssaiavailability\n\n sbi:\n - \ scheme: http\n registerIPv4: nssf-nnssf # IP used to register - to NRF\n bindingIPv4: 0.0.0.0 # IP used to bind the service\n port: - 80\n tls:\n key: config/TLS/nssf.key\n pem: config/TLS/nssf.pem\n - \ \n nrfUri: http://nrf-nnrf:8000\n \n nsiList:\n - - snssai:\n sst: 1\n nsiInformationList:\n - nrfId: - http://nrf-nnrf:8000/nnrf-nfm/v1/nf-instances\n nsiId: 10\n - - snssai:\n sst: 1\n sd: 1\n nsiInformationList:\n - \ - nrfId: http://nrf-nnrf:8000/nnrf-nfm/v1/nf-instances\n nsiId: - 11\n - snssai:\n sst: 1\n sd: 2\n nsiInformationList:\n - \ - nrfId: http://nrf-nnrf:8000/nnrf-nfm/v1/nf-instances\n nsiId: - 12\n - nrfId: http://nrf-nnrf:8000/nnrf-nfm/v1/nf-instances\n nsiId: - 12\n - snssai:\n sst: 1\n sd: 3\n nsiInformationList:\n - \ - nrfId: http://nrf-nnrf:8000/nnrf-nfm/v1/nf-instances\n nsiId: - 13\n - snssai:\n sst: 2\n nsiInformationList:\n - - nrfId: http://nrf-nnrf:8000/nnrf-nfm/v1/nf-instances\n nsiId: 20\n - \ - snssai:\n sst: 2\n sd: 1\n nsiInformationList:\n - \ - nrfId: http://nrf-nnrf:8000/nnrf-nfm/v1/nf-instances\n nsiId: - 21\n - snssai:\n sst: 1\n sd: 010203\n nsiInformationList:\n - \ - nrfId: http://nrf-nnrf:8000/nnrf-nfm/v1/nf-instances\n nsiId: - 22\n amfSetList:\n - amfSetId: 1\n amfList:\n - - ffa2e8d7-3275-49c7-8631-6af1df1d9d26\n - 0e8831c3-6286-4689-ab27-1e2161e15cb1\n - \ - a1fba9ba-2e39-4e22-9c74-f749da571d0d\n nrfAmfSet: http://nrf-nnrf:8081/nnrf-nfm/v1/nf-instances\n - \ supportedNssaiAvailabilityData:\n - tai:\n plmnId:\n - \ mcc: 466\n mnc: 92\n tac: - 33456\n supportedSnssaiList:\n - sst: 1\n sd: - 1\n - sst: 1\n sd: 2\n - sst: - 2\n sd: 1\n - tai:\n plmnId:\n mcc: - 466\n mnc: 92\n tac: 33457\n supportedSnssaiList:\n - \ - sst: 1\n - sst: 1\n sd: 1\n - \ - sst: 1\n sd: 2\n - amfSetId: 2\n nrfAmfSet: - http://nrf-nnrf:8084/nnrf-nfm/v1/nf-instances\n supportedNssaiAvailabilityData:\n - \ - tai:\n plmnId:\n mcc: 466\n mnc: - 92\n tac: 33456\n supportedSnssaiList:\n - - sst: 1\n - sst: 1\n sd: 1\n - - sst: 1\n sd: 3\n - sst: 2\n sd: - 1\n - tai:\n plmnId:\n mcc: 466\n - \ mnc: 92\n tac: 33458\n supportedSnssaiList:\n - \ - sst: 1\n - sst: 1\n sd: 1\n - \ - sst: 2\n nssfName: NSSF\n supportedPlmnList:\n - - mcc: 208\n mnc: 93\n supportedNssaiInPlmnList:\n - plmnId:\n - \ mcc: 208\n mnc: 93\n supportedSnssaiList:\n - \ - sst: 1\n sd: 010203\n - sst: 1\n sd: - 112233\n - sst: 1\n sd: 3\n - sst: 2\n sd: - 1\n - sst: 2\n sd: 2\n amfList:\n - nfId: - 469de254-2fe5-4ca0-8381-af3f500af77c\n supportedNssaiAvailabilityData:\n - \ - tai:\n plmnId:\n mcc: 466\n mnc: - 92\n tac: 33456\n supportedSnssaiList:\n - - sst: 1\n - sst: 1\n sd: 2\n - - sst: 2\n - tai:\n plmnId:\n mcc: - 466\n mnc: 92\n tac: 33457\n supportedSnssaiList:\n - \ - sst: 1\n sd: 1\n - sst: 1\n - \ sd: 2\n - nfId: fbe604a8-27b2-417e-bd7c-8a7be2691f8d\n - \ supportedNssaiAvailabilityData:\n - tai:\n plmnId:\n - \ mcc: 466\n mnc: 92\n tac: - 33458\n supportedSnssaiList:\n - sst: 1\n - - sst: 1\n sd: 1\n - sst: 1\n sd: - 3\n - sst: 2\n - tai:\n plmnId:\n mcc: - 466\n mnc: 92\n tac: 33459\n supportedSnssaiList:\n - \ - sst: 1\n - sst: 1\n sd: 1\n - \ - sst: 2\n - sst: 2\n sd: 1\n - \ - nfId: b9e6e2cb-5ce8-4cb6-9173-a266dd9a2f0c\n supportedNssaiAvailabilityData:\n - \ - tai:\n plmnId:\n mcc: 466\n mnc: - 92\n tac: 33456\n supportedSnssaiList:\n - - sst: 1\n - sst: 1\n sd: 1\n - - sst: 1\n sd: 2\n - sst: 2\n - tai:\n - \ plmnId:\n mcc: 466\n mnc: - 92\n tac: 33458\n supportedSnssaiList:\n - - sst: 1\n - sst: 1\n sd: 1\n - - sst: 2\n - sst: 2\n sd: 1\n taList:\n - - tai:\n plmnId:\n mcc: 466\n mnc: 92\n tac: - 33456\n accessType: 3GPP_ACCESS\n supportedSnssaiList:\n - - sst: 1\n - sst: 1\n sd: 1\n - sst: 1\n sd: - 2\n - sst: 2\n - tai:\n plmnId:\n mcc: - 466\n mnc: 92\n tac: 33457\n accessType: 3GPP_ACCESS\n - \ supportedSnssaiList:\n - sst: 1\n - sst: 1\n - \ sd: 1\n - sst: 1\n sd: 2\n - - sst: 2\n - tai:\n plmnId:\n mcc: 466\n mnc: - 92\n tac: 33458\n accessType: 3GPP_ACCESS\n supportedSnssaiList:\n - \ - sst: 1\n - sst: 1\n sd: 1\n - - sst: 1\n sd: 3\n - sst: 2\n restrictedSnssaiList:\n - \ - homePlmnId:\n mcc: 310\n mnc: 560\n - \ sNssaiList:\n - sst: 1\n sd: 3\n - \ - tai:\n plmnId:\n mcc: 466\n mnc: - 92\n tac: 33459\n accessType: 3GPP_ACCESS\n supportedSnssaiList:\n - \ - sst: 1\n - sst: 1\n sd: 1\n - - sst: 2\n - sst: 2\n sd: 1\n restrictedSnssaiList:\n - \ - homePlmnId:\n mcc: 310\n mnc: 560\n - \ sNssaiList:\n - sst: 2\n sd: 1\n - \ mappingListFromPlmn:\n - operatorName: NTT Docomo\n homePlmnId:\n - \ mcc: 440\n mnc: 10\n mappingOfSnssai:\n - - servingSnssai:\n sst: 1\n sd: 1\n homeSnssai:\n - \ sst: 1\n sd: 1\n - servingSnssai:\n - \ sst: 1\n sd: 2\n homeSnssai:\n sst: - 1\n sd: 3\n - servingSnssai:\n sst: - 1\n sd: 3\n homeSnssai:\n sst: 1\n - \ sd: 4\n - servingSnssai:\n sst: 2\n - \ sd: 1\n homeSnssai:\n sst: 2\n sd: - 2\n - operatorName: AT&T Mobility\n homePlmnId:\n mcc: - 310\n mnc: 560\n mappingOfSnssai:\n - servingSnssai:\n - \ sst: 1\n sd: 1\n homeSnssai:\n sst: - 1\n sd: 2\n - servingSnssai:\n sst: - 1\n sd: 2\n homeSnssai:\n sst: 1\n - \ sd: 3 \n\n logger:\n NSSF:\n ReportCaller: - false\n debugLevel: info\n" - nssf/nssf-deployment.yaml: "---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n - \ name: free5gc-nssf\n labels:\n app.kubernetes.io/version: \"v3.1.1\"\n - \ project: free5gc\n nf: nssf\nspec:\n replicas: 1\n selector:\n matchLabels:\n - \ project: free5gc\n nf: nssf\n template:\n metadata:\n labels:\n - \ project: free5gc\n nf: nssf\n spec:\n initContainers:\n - \ - name: wait-nrf\n image: towards5gs/initcurl:1.0.0\n env:\n - \ - name: DEPENDENCIES\n value: http://nrf-nnrf:8000\n command: - ['sh', '-c', 'set -x; for dependency in $DEPENDENCIES; do while [ $(curl --insecure - --connect-timeout 1 -s -o /dev/null -w \"%{http_code}\" $dependency) -ne 200 - ]; do echo waiting for dependencies; sleep 1; done; done;']\n\n containers:\n - \ - name: nssf\n image: towards5gs/free5gc-nssf:v3.1.1\n imagePullPolicy: - IfNotPresent\n securityContext:\n {}\n ports:\n - - containerPort: 80\n command: [\"./nssf\"]\n args: [\"-c\", \"../config/nssfcfg.yaml\"]\n - \ env: \n - name: GIN_MODE\n value: release\n volumeMounts:\n - \ - mountPath: /free5gc/config/\n name: nssf-volume\n resources:\n - \ limits:\n cpu: 100m\n memory: 128Mi\n - \ requests:\n cpu: 100m\n memory: 128Mi\n - \ dnsPolicy: ClusterFirst\n restartPolicy: Always\n\n volumes:\n - \ - name: nssf-volume\n projected:\n sources:\n - - configMap:\n name: nssf-configmap\n" - nssf/nssf-service.yaml: | - --- - apiVersion: v1 - kind: Service - metadata: - name: nssf-nnssf - labels: - app.kubernetes.io/version: "v3.1.1" - project: free5gc - nf: nssf - spec: - type: ClusterIP - ports: - - port: 80 - targetPort: 80 - protocol: TCP - name: http - selector: - project: free5gc - nf: nssf - package-context.yaml: | - apiVersion: v1 - kind: ConfigMap - metadata: - name: kptfile.kpt.dev - annotations: - config.kubernetes.io/local-config: "true" - data: - name: free5gc - namespace: free5gc - pcf/pcf-configmap.yaml: "---\napiVersion: v1\nkind: ConfigMap\nmetadata:\n name: - pcf-configmap\n labels:\n app.kubernetes.io/version: \"v3.1.1\"\n app: - free5gc\ndata:\n pcfcfg.yaml: |\n info:\n version: 1.0.1\n description: - PCF initial local configuration\n\n configuration:\n serviceList:\n - \ - serviceName: npcf-am-policy-control\n - serviceName: npcf-smpolicycontrol\n - \ suppFeat: 3fff\n - serviceName: npcf-bdtpolicycontrol\n - - serviceName: npcf-policyauthorization\n suppFeat: 3\n - serviceName: - npcf-eventexposure\n - serviceName: npcf-ue-policy-control\n\n sbi:\n - \ scheme: http\n registerIPv4: pcf-npcf # IP used to register - to NRF\n bindingIPv4: 0.0.0.0 # IP used to bind the service\n port: - 80\n tls:\n key: config/TLS/pcf.key\n pem: config/TLS/pcf.pem\n - \ \n mongodb: # the mongodb connected by this PCF\n name: - free5gc # name of the mongodb\n url: mongodb://mongodb:27017 - # a valid URL of the mongodb\n \n nrfUri: http://nrf-nnrf:8000\n pcfName: - PCF\n timeFormat: 2019-01-02 15:04:05\n defaultBdtRefId: BdtPolicyId-\n - \ locality: area1\n\n logger:\n PCF:\n ReportCaller: false\n - \ debugLevel: info\n" - pcf/pcf-deployment.yaml: | - --- - apiVersion: apps/v1 - kind: Deployment - metadata: - name: free5gc-pcf - labels: - app.kubernetes.io/version: "v3.1.1" - project: free5gc - nf: pcf - spec: - replicas: 1 - selector: - matchLabels: - project: free5gc - nf: pcf - template: - metadata: - labels: - project: free5gc - nf: pcf - spec: - initContainers: - - name: wait-nrf - image: towards5gs/initcurl:1.0.0 - env: - - name: DEPENDENCIES - value: http://nrf-nnrf:8000 - command: ['sh', '-c', 'set -x; for dependency in $DEPENDENCIES; do while [ $(curl --insecure --connect-timeout 1 -s -o /dev/null -w "%{http_code}" $dependency) -ne 200 ]; do echo waiting for dependencies; sleep 1; done; done;'] - - containers: - - name: pcf - image: towards5gs/free5gc-pcf:v3.1.1 - imagePullPolicy: IfNotPresent - ports: - - containerPort: 80 - command: ["./pcf"] - args: ["-c", "../config/pcfcfg.yaml"] - env: - - name: GIN_MODE - value: release - volumeMounts: - - mountPath: /free5gc/config/ - name: pcf-volume - resources: - limits: - cpu: 100m - memory: 128Mi - requests: - cpu: 100m - memory: 128Mi - dnsPolicy: ClusterFirst - restartPolicy: Always - - volumes: - - name: pcf-volume - projected: - sources: - - configMap: - name: pcf-configmap - pcf/pcf-service.yaml: | - --- - apiVersion: v1 - kind: Service - metadata: - name: pcf-npcf - labels: - app.kubernetes.io/version: "v3.1.1" - project: free5gc - nf: pcf - spec: - type: ClusterIP - ports: - - port: 80 - targetPort: 80 - protocol: TCP - name: http - selector: - project: free5gc - nf: pcf - udm/udm-configmap.yaml: "---\napiVersion: v1\nkind: ConfigMap\nmetadata:\n name: - udm-configmap\n labels:\n app.kubernetes.io/version: \"v3.1.1\"\n app: - free5gc\ndata:\n udmcfg.yaml: |\n info:\n version: 1.0.2\n description: - UDM initial local configuration\n\n configuration:\n serviceNameList:\n - \ - nudm-sdm\n - nudm-uecm\n - nudm-ueau\n - nudm-ee\n - \ - nudm-pp\n \n sbi:\n scheme: http\n registerIPv4: - udm-nudm # IP used to register to NRF\n bindingIPv4: 0.0.0.0 # IP used - to bind the service\n port: 80\n tls:\n key: config/TLS/udm.key\n - \ pem: config/TLS/udm.pem\n \n nrfUri: http://nrf-nnrf:8000\n - \ # test data set from TS33501-f60 Annex C.4\n SuciProfile:\n - - ProtectionScheme: 1 # Protect Scheme: Profile A\n PrivateKey: c53c22208b61860b06c62e5406a7b330c2b577aa5558981510d128247d38bd1d\n - \ PublicKey: 5a8d38864820197c3394b92613b20b91633cbd897119273bf8e4a6f4eec0a650\n - \ - ProtectionScheme: 2 # Protect Scheme: Profile B\n PrivateKey: - F1AB1074477EBCC7F554EA1C5FC368B1616730155E0041AC447D6301975FECDA\n PublicKey: - 0472DA71976234CE833A6907425867B82E074D44EF907DFB4B3E21C1C2256EBCD15A7DED52FCBB097A4ED250E036C7B9C8C7004C4EEDC4F068CD7BF8D3F900E3B4\n\n - \ logger:\n UDM:\n ReportCaller: false\n debugLevel: info\n" - udm/udm-deployment.yaml: "---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n - \ name: free5gc-udm\n labels:\n app.kubernetes.io/version: \"v3.1.1\"\n - \ project: free5gc\n nf: udm\nspec:\n replicas: 1\n selector:\n matchLabels:\n - \ project: free5gc\n nf: udm\n template:\n metadata:\n labels:\n - \ project: free5gc\n nf: udm\n spec:\n initContainers:\n - \ - name: wait-nrf\n image: towards5gs/initcurl:1.0.0\n env:\n - \ - name: DEPENDENCIES\n value: http://nrf-nnrf:8000\n command: - ['sh', '-c', 'set -x; for dependency in $DEPENDENCIES; do while [ $(curl --insecure - --connect-timeout 1 -s -o /dev/null -w \"%{http_code}\" $dependency) -ne 200 - ]; do echo waiting for dependencies; sleep 1; done; done;']\n\n containers:\n - \ - name: udm\n image: towards5gs/free5gc-udm:v3.1.1\n imagePullPolicy: - IfNotPresent\n ports:\n - containerPort: 80\n command: - [\"./udm\"]\n args: [\"-c\", \"../config/udmcfg.yaml\"]\n env: - \n - name: GIN_MODE\n value: release\n volumeMounts:\n - \ - mountPath: /free5gc/config/\n name: udm-volume\n resources:\n - \ limits:\n cpu: 100m\n memory: 128Mi\n - \ requests:\n cpu: 100m\n memory: 128Mi\n - \ dnsPolicy: ClusterFirst\n restartPolicy: Always\n\n volumes:\n - \ - name: udm-volume\n projected:\n sources:\n - - configMap:\n name: udm-configmap\n" - udm/udm-service.yaml: | - --- - apiVersion: v1 - kind: Service - metadata: - name: udm-nudm - labels: - app.kubernetes.io/version: "v3.1.1" - project: free5gc - nf: udm - spec: - type: ClusterIP - ports: - - port: 80 - targetPort: 80 - protocol: TCP - name: http - selector: - project: free5gc - nf: udm - udr/udr-configmap.yaml: "---\napiVersion: v1\nkind: ConfigMap\nmetadata:\n name: - udr-configmap\n labels:\n app.kubernetes.io/version: \"v3.1.1\"\n app: - free5gc\ndata:\n udrcfg.yaml: |\n info:\n version: 1.0.1\n description: - UDR initial local configuration\n\n configuration:\n sbi:\n scheme: - http\n registerIPv4: udr-nudr # IP used to register to NRF\n bindingIPv4: - 0.0.0.0 # IP used to bind the service\n port: 80\n tls:\n key: - config/TLS/udr.key\n pem: config/TLS/udr.pem\n\n mongodb:\n name: - free5gc\n url: mongodb://mongodb:27017 \n \n nrfUri: - http://nrf-nnrf:8000\n\n logger:\n MongoDBLibrary:\n ReportCaller: - false\n debugLevel: info\n OpenApi:\n ReportCaller: false\n - \ debugLevel: info\n PathUtil:\n ReportCaller: false\n debugLevel: - info\n UDR:\n ReportCaller: false\n debugLevel: info\n" - udr/udr-deployment.yaml: "---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n - \ name: free5gc-udr\n labels:\n app.kubernetes.io/version: \"v3.1.1\"\n - \ project: free5gc\n nf: udr\nspec:\n replicas: 1\n selector:\n matchLabels:\n - \ project: free5gc\n nf: udr\n template:\n metadata:\n labels:\n - \ project: free5gc\n nf: udr\n spec:\n initContainers:\n - \ - name: wait-nrf\n image: towards5gs/initcurl:1.0.0\n env:\n - \ - name: DEPENDENCIES\n value: http://nrf-nnrf:8000\n command: - ['sh', '-c', 'set -x; for dependency in $DEPENDENCIES; do while [ $(curl --insecure - --connect-timeout 1 -s -o /dev/null -w \"%{http_code}\" $dependency) -ne 200 - ]; do echo waiting for dependencies; sleep 1; done; done;']\n\n containers:\n - \ - name: udr\n image: towards5gs/free5gc-udr:v3.1.1\n imagePullPolicy: - IfNotPresent\n ports:\n - containerPort: 80\n command: - [\"./udr\"]\n args: [\"-c\", \"../config/udrcfg.yaml\"]\n env: - \n - name: DB_URI\n value: mongodb://mongodb/free5gc\n - - name: GIN_MODE\n value: release\n volumeMounts:\n - - mountPath: /free5gc/config/\n name: udr-volume\n resources:\n - \ limits:\n cpu: 100m\n memory: 128Mi\n - \ requests:\n cpu: 100m\n memory: 128Mi\n - \ dnsPolicy: ClusterFirst\n restartPolicy: Always\n\n volumes:\n - \ - name: udr-volume\n projected:\n sources:\n - - configMap:\n name: udr-configmap\n" - udr/udr-service.yaml: | - --- - apiVersion: v1 - kind: Service - metadata: - name: udr-nudr - labels: - app.kubernetes.io/version: "v3.1.1" - project: free5gc - nf: udr - spec: - type: ClusterIP - ports: - - port: 80 - targetPort: 80 - protocol: TCP - name: http - selector: - project: free5gc - nf: udr - webui/webui-configmap.yaml: "---\napiVersion: v1\nkind: ConfigMap\nmetadata:\n - \ name: webui-configmap\n labels:\n app.kubernetes.io/version: \"v3.1.1\"\n - \ app: free5gc\ndata:\n webuicfg.yaml: |\n info:\n version: 1.0.0\n - \ description: WEBUI initial local configuration\n\n configuration:\n - \ mongodb:\n name: free5gc\n url: mongodb://mongodb:27017\n - \ \n logger:\n WEBUI:\n ReportCaller: false\n debugLevel: - info\n" - webui/webui-deployment.yaml: | - --- - apiVersion: apps/v1 - kind: Deployment - metadata: - name: free5gc-webui - labels: - app.kubernetes.io/version: "v3.1.1" - project: free5gc - nf: webui - spec: - replicas: 1 - selector: - matchLabels: - project: free5gc - nf: webui - template: - metadata: - labels: - project: free5gc - nf: webui - spec: - initContainers: - - name: wait-mongo - image: busybox:1.32.0 - env: - - name: DEPENDENCIES - value: mongodb:27017 - command: ["sh", "-c", "until nc -z $DEPENDENCIES; do echo waiting for the MongoDB; sleep 2; done;"] - containers: - - name: webui - image: towards5gs/free5gc-webui:v3.1.1 - imagePullPolicy: IfNotPresent - ports: - - containerPort: 5000 - command: ["./webconsole"] - args: ["-c", "../config/webuicfg.yaml"] - env: - - name: GIN_MODE - value: release - volumeMounts: - - mountPath: /free5gc/config/ - name: webui-volume - resources: - limits: - cpu: 100m - memory: 128Mi - requests: - cpu: 100m - memory: 128Mi - readinessProbe: - initialDelaySeconds: 0 - periodSeconds: 1 - timeoutSeconds: 1 - failureThreshold: 40 - successThreshold: 1 - httpGet: - scheme: HTTP - port: 5000 - livenessProbe: - initialDelaySeconds: 120 - periodSeconds: 10 - timeoutSeconds: 10 - failureThreshold: 3 - successThreshold: 1 - httpGet: - scheme: HTTP - port: 5000 - dnsPolicy: ClusterFirst - restartPolicy: Always - - volumes: - - name: webui-volume - projected: - sources: - - configMap: - name: webui-configmap - webui/webui-service.yaml: | - --- - apiVersion: v1 - kind: Service - metadata: - name: webui-service - labels: - app.kubernetes.io/version: "v3.1.1" - project: free5gc - nf: webui - spec: - type: NodePort - ports: - - port: 5000 - targetPort: 5000 - nodePort: 30500 - protocol: TCP - name: http - selector: - project: free5gc - nf: webui - revision: v1 - workspaceName: v1 -status: - renderStatus: - error: "" - result: - exitCode: 0 - metadata: - creationTimestamp: null -``` -
    - -## The porchctl command - -The `porchtcl` command is an administration command for acting on Porch `Repository` (repo) and `PackageRevision` (rpkg) CRs. See its [documentation for usage information](https://github.com/nephio-project/porch/blob/main/docs/porchctl-cli-guide.md). - -
    -Check that porchctl lists our repos: - -``` -porchctl repo -n porch-demo get -NAME TYPE CONTENT DEPLOYMENT READY ADDRESS -edge1 git Package true True http://172.18.255.200:3000/nephio/edge1.git -external-blueprints git Package false True https://github.com/nephio-project/free5gc-packages.git -management git Package false True http://172.18.255.200:3000/nephio/management.git -``` -
    - -
    -Check that porchctl lists our remote packages (PackageRevisions): - -``` -porchctl rpkg -n porch-demo get -NAME PACKAGE WORKSPACENAME REVISION LATEST LIFECYCLE REPOSITORY -external-blueprints-922121d0bcdd56bfa8cae6c375720e2b5f358ab0 free5gc-cp main main false Published external-blueprints -external-blueprints-dabbc422fdf0b8e5942e767d929b524e25f7eef9 free5gc-cp v1 v1 true Published external-blueprints -external-blueprints-716aae722092dbbb9470e56079b90ad76ec8f0d5 free5gc-operator main main false Published external-blueprints -external-blueprints-d65dc89f7a2472650651e9aea90edfcc81a9afc6 free5gc-operator v1 v1 false Published external-blueprints -external-blueprints-9fee880e8fa52066f052c9cae7aac2e2bc1b5a54 free5gc-operator v2 v2 false Published external-blueprints -external-blueprints-91d60ee31d2d0a1a6d5f1807593d5419434accd3 free5gc-operator v3 v3 false Published external-blueprints -external-blueprints-21f19a0641cf520e7dc6268e64c58c2c30c27036 free5gc-operator v4 v4 false Published external-blueprints -external-blueprints-bf2e7522ee92680bd49571ab309e3f61320cf36d free5gc-operator v5 v5 true Published external-blueprints -external-blueprints-c1b9ecb73118e001ab1d1213e6a2c94ab67a0939 free5gc-upf main main false Published external-blueprints -external-blueprints-5d48b1516e7b1ea15830ffd76b230862119981bd free5gc-upf v1 v1 true Published external-blueprints -external-blueprints-ed97798b46b36d135cf23d813eccad4857dff90f pkg-example-amf-bp main main false Published external-blueprints -external-blueprints-ed744bfdf4a4d15d4fcf3c46fde27fd6ac32d180 pkg-example-amf-bp v1 v1 false Published external-blueprints -external-blueprints-5489faa80782f91f1a07d04e206935d14c1eb24c pkg-example-amf-bp v2 v2 false Published external-blueprints -external-blueprints-16e2255bd433ef532684a3c1434ae0bede175107 pkg-example-amf-bp v3 v3 false Published external-blueprints -external-blueprints-7689cc6c953fa83ea61283983ce966dcdffd9bae pkg-example-amf-bp v4 v4 false Published external-blueprints -external-blueprints-caff9609883eea7b20b73b7425e6694f8eb6adc3 pkg-example-amf-bp v5 v5 true Published external-blueprints -external-blueprints-00b6673c438909975548b2b9f20c2e1663161815 pkg-example-smf-bp main main false Published external-blueprints -external-blueprints-4f7dfbede99dc08f2b5144ca550ca218109c52f2 pkg-example-smf-bp v1 v1 false Published external-blueprints -external-blueprints-3d9ab8f61ce1d35e264d5719d4b3c0da1ab02328 pkg-example-smf-bp v2 v2 false Published external-blueprints -external-blueprints-2006501702e105501784c78be9e7d57e426d85e8 pkg-example-smf-bp v3 v3 false Published external-blueprints -external-blueprints-c97ed7c13b3aa47cb257217f144960743aec1253 pkg-example-smf-bp v4 v4 false Published external-blueprints -external-blueprints-3bd78e46b014dac5cc0c58788c1820d043d61569 pkg-example-smf-bp v5 v5 true Published external-blueprints -external-blueprints-c3f660848d9d7a4df5481ec2e06196884778cd84 pkg-example-upf-bp main main false Published external-blueprints -external-blueprints-4cb00a17c1ee2585d6c187ba4d0211da960c0940 pkg-example-upf-bp v1 v1 false Published external-blueprints -external-blueprints-5903efe295026124e6fea926df154a72c5bd1ea9 pkg-example-upf-bp v2 v2 false Published external-blueprints -external-blueprints-16142d8d23c1b8e868a9524a1b21634c79b432d5 pkg-example-upf-bp v3 v3 false Published external-blueprints -external-blueprints-60ef45bb8f55b63556e7467f16088325022a7ece pkg-example-upf-bp v4 v4 false Published external-blueprints -external-blueprints-7757966cc7b965f1b9372370a4b382c8375a2b40 pkg-example-upf-bp v5 v5 true Published external-blueprints -``` -
    - -The output above is similar to the output of `kubectl get packagerevision -n porch-demo` above. - -## Creating a blueprint in Porch - -### Blueprint with no Kpt pipelines - -Create a new package in our `management` repo using the sample `network-function` package provided. This network function kpt package is a demo Kpt package that installs [nginx](https://github.com/nginx). - -``` -porchctl -n porch-demo rpkg init network-function --repository=management --workspace=v1 -management-8b80738a6e0707e3718ae1db3668d0b8ca3f1c82 created -porchctl -n porch-demo rpkg get --name network-function -NAME PACKAGE WORKSPACENAME REVISION LATEST LIFECYCLE REPOSITORY -management-8b80738a6e0707e3718ae1db3668d0b8ca3f1c82 network-function v1 false Draft management -``` - -This command creates a new PackageRevision CR in porch and also creates a branch called `network-function/v1` in our gitea `management` repo. Use the Gitea web UI to confirm that the branch has been created and note that it only has default content as yet. - -We now pull the package we have initialized from Porch. - -``` -porchctl -n porch-demo rpkg pull management-8b80738a6e0707e3718ae1db3668d0b8ca3f1c82 blueprints/initialized/network-function -``` - -We update the initialized package and add our local changes. -``` -cp blueprints/local-changes/network-function/* blueprints/initialized/network-function -``` - -Now, we push the package contents to porch: -``` -porchctl -n porch-demo rpkg push management-8b80738a6e0707e3718ae1db3668d0b8ca3f1c82 blueprints/initialized/network-function -``` - -Check on the Gitea web UI and we can see that the actual package contents have been pushed. - -Now we propose and approve the package. - -``` -porchctl -n porch-demo rpkg propose management-8b80738a6e0707e3718ae1db3668d0b8ca3f1c82 -management-8b80738a6e0707e3718ae1db3668d0b8ca3f1c82 proposed - -porchctl -n porch-demo rpkg get --name network-function -NAME PACKAGE WORKSPACENAME REVISION LATEST LIFECYCLE REPOSITORY -management-8b80738a6e0707e3718ae1db3668d0b8ca3f1c82 network-function v1 false Proposed management - -porchctl -n porch-demo rpkg approve management-8b80738a6e0707e3718ae1db3668d0b8ca3f1c82 -management-8b80738a6e0707e3718ae1db3668d0b8ca3f1c82 approved - -porchctl -n porch-demo rpkg get --name network-function -NAME PACKAGE WORKSPACENAME REVISION LATEST LIFECYCLE REPOSITORY -management-8b80738a6e0707e3718ae1db3668d0b8ca3f1c82 network-function v1 v1 true Published management - -``` - -Once we approve the package, the package is merged into the main branch in the `management` repo and the branch called `network-function/v1` in that repo is removed. Use the Gitea UI to verify this. We now have our blueprint package in our `management` repo and we can deploy this package into workload clusters. - -### Blueprint with a Kpt pipeline - -The second blueprint blueprint in the `blueprint` directory is called `network-function-auto-namespace`. This network function is exactly the same as the `network-function` package except that it has a Kpt function that automatically creates a namespace with the namespace configured in the `name` field in the `package-context.yaml` file. Note that no namespace is defined in the metadata of the `deployment.yaml` file of this Kpt package. - -We use the same sequence of commands again to publish our blueprint package for `network-function-auto-namespace`. - -``` -porchctl -n porch-demo rpkg init network-function-auto-namespace --repository=management --workspace=v1 -management-c97bc433db93f2e8a3d413bed57216c2a72fc7e3 created - -porchctl -n porch-demo rpkg pull management-c97bc433db93f2e8a3d413bed57216c2a72fc7e3 blueprints/initialized/network-function-auto-namespace - -cp blueprints/local-changes/network-function-auto-namespace/* blueprints/initialized/network-function-auto-namespace - -porchctl -n porch-demo rpkg push management-c97bc433db93f2e8a3d413bed57216c2a72fc7e3 blueprints/initialized/network-function-auto-namespace -``` - -Examine the `drafts/network-function-auto-namespace/v1` branch in Gitea. Notice that the `set-namespace` Kpt finction in the pipeline in the `Kptfile` has set the namespace in the `deployment.yaml` file to the value `default-namespace-name`, which it read from the `package-context.yaml` file. - -Now we propose and approve the package. - -``` -porchctl -n porch-demo rpkg propose management-c97bc433db93f2e8a3d413bed57216c2a72fc7e3 -management-c97bc433db93f2e8a3d413bed57216c2a72fc7e3 proposed - -porchctl -n porch-demo rpkg approve management-c97bc433db93f2e8a3d413bed57216c2a72fc7e3 -management-c97bc433db93f2e8a3d413bed57216c2a72fc7e3 approved - -porchctl -n porch-demo rpkg get --name network-function-auto-namespace -NAME PACKAGE WORKSPACENAME REVISION LATEST LIFECYCLE REPOSITORY -management-f9a6f2802111b9e81c296422c03aae279725f6df network-function-auto-namespace v1 main false Published management -management-c97bc433db93f2e8a3d413bed57216c2a72fc7e3 network-function-auto-namespace v1 v1 true Published management - -``` - -## Deploying a blueprint onto a workload cluster - -### Blueprint with no Kpt pipelines - -The process of deploying a blueprint package from our `management` repo clones the package, then modifies it for use on the workload cluster. The cloned package is then initialized, pushed, proposed, and approved onto the `edge1` repo. Remember that the `edge1` repo is being monitored by Configsync from the `edge1` cluster, so once the package appears in the `edge1` repo on the management cluster, it will be pulled by Configsync and applied to the `edge1` cluster. - -``` -porchctl -n porch-demo rpkg pull management-8b80738a6e0707e3718ae1db3668d0b8ca3f1c82 tmp_packages_for_deployment/edge1-network-function-a.clone.tmp - -find tmp_packages_for_deployment/edge1-network-function-a.clone.tmp - -tmp_packages_for_deployment/edge1-network-function-a.clone.tmp -tmp_packages_for_deployment/edge1-network-function-a.clone.tmp/deployment.yaml -tmp_packages_for_deployment/edge1-network-function-a.clone.tmp/.KptRevisionMetadata -tmp_packages_for_deployment/edge1-network-function-a.clone.tmp/README.md -tmp_packages_for_deployment/edge1-network-function-a.clone.tmp/Kptfile -tmp_packages_for_deployment/edge1-network-function-a.clone.tmp/package-context.yaml -``` -The package we created in the last section is cloned. We now remove the original metadata from the package. -``` -rm tmp_packages_for_deployment/edge1-network-function-a.clone.tmp/.KptRevisionMetadata -``` - -We use a kpt function to change the namespace that will be used for the deployment of the network function. - -``` -kpt fn eval --image=gcr.io/kpt-fn/set-namespace:v0.4.1 tmp_packages_for_deployment/edge1-network-function-a.clone.tmp -- namespace=edge1-network-function-a - -[RUNNING] "gcr.io/kpt-fn/set-namespace:v0.4.1" -[PASS] "gcr.io/kpt-fn/set-namespace:v0.4.1" in 300ms - Results: - [info]: namespace "" updated to "edge1-network-function-a", 1 value(s) changed -``` - -We now initialize and push the package to the `edge1` repo: - -``` -porchctl -n porch-demo rpkg init edge1-network-function-a --repository=edge1 --workspace=v1 -edge1-d701be9b849b8b8724a6e052cbc74ca127b737c3 created - -porchctl -n porch-demo rpkg pull edge1-d701be9b849b8b8724a6e052cbc74ca127b737c3 tmp_packages_for_deployment/edge1-network-function-a - -cp tmp_packages_for_deployment/edge1-network-function-a.clone.tmp/* tmp_packages_for_deployment/edge1-network-function-a -rm -fr tmp_packages_for_deployment/edge1-network-function-a.clone.tmp - -porchctl -n porch-demo rpkg push edge1-d701be9b849b8b8724a6e052cbc74ca127b737c3 tmp_packages_for_deployment/edge1-network-function-a - -porchctl -n porch-demo rpkg get --name edge1-network-function-a -NAME PACKAGE WORKSPACENAME REVISION LATEST LIFECYCLE REPOSITORY -edge1-d701be9b849b8b8724a6e052cbc74ca127b737c3 network-function-a v1 false Draft edge1 -``` - -You can verify that the package is in the `network-function-a/v1` branch of the deployment repo using the Gitea web UI. - - -Check that the `edge1-network-function-a` package is not deployed on the edge1 cluster yet: -``` -export KUBECONFIG=~/.kube/kind-edge1-config - -kubectl get pod -n edge1-network-function-a -No resources found in network-function-a namespace. - -``` - -We now propose and approve the deployment package, which merges the package to the `edge1` repo and further triggers Configsync to apply the package to the `edge1` cluster. - -``` -export KUBECONFIG=~/.kube/kind-management-config - -porchctl -n porch-demo rpkg propose edge1-d701be9b849b8b8724a6e052cbc74ca127b737c3 -edge1-d701be9b849b8b8724a6e052cbc74ca127b737c3 proposed - -porchctl -n porch-demo rpkg approve edge1-d701be9b849b8b8724a6e052cbc74ca127b737c3 -edge1-d701be9b849b8b8724a6e052cbc74ca127b737c3 approved - -porchctl -n porch-demo rpkg get --name edge1-network-function-a -NAME PACKAGE WORKSPACENAME REVISION LATEST LIFECYCLE REPOSITORY -edge1-d701be9b849b8b8724a6e052cbc74ca127b737c3 network-function-a v1 v1 true Published edge1 -``` - -We can now check that the `network-function-a` package is deployed on the edge1 cluster and that the pod is running -``` -export KUBECONFIG=~/.kube/kind-edge1-config - -kubectl get pod -n edge1-network-function-a -No resources found in network-function-a namespace. - -kubectl get pod -n edge1-network-function-a -NAME READY STATUS RESTARTS AGE -network-function-9779fc9f5-4rqp2 1/1 ContainerCreating 0 9s - -kubectl get pod -n edge1-network-function-a -NAME READY STATUS RESTARTS AGE -network-function-9779fc9f5-4rqp2 1/1 Running 0 44s -``` - -### Blueprint with a Kpt pipeline - -The process for deploying a blueprint with a Kpt pipeline runs the Kpt pipeline automatically with whatever configuration we give it. Rather than explicitly running a Kpt function to change the namespace, we will specify the namespace as configuration and the pipeline will apply it to the deployment. - -``` -porchctl -n porch-demo rpkg pull management-c97bc433db93f2e8a3d413bed57216c2a72fc7e3 tmp_packages_for_deployment/edge1-network-function-auto-namespace-a.clone.tmp - -find tmp_packages_for_deployment/edge1-network-function-auto-namespace-a.clone.tmp - -tmp_packages_for_deployment/edge1-network-function-auto-namespace-a.clone.tmp -tmp_packages_for_deployment/edge1-network-function-auto-namespace-a.clone.tmp/deployment.yaml -tmp_packages_for_deployment/edge1-network-function-auto-namespace-a.clone.tmp/.KptRevisionMetadata -tmp_packages_for_deployment/edge1-network-function-auto-namespace-a.clone.tmp/README.md -tmp_packages_for_deployment/edge1-network-function-auto-namespace-a.clone.tmp/Kptfile -tmp_packages_for_deployment/edge1-network-function-auto-namespace-a.clone.tmp/package-context.yaml -``` - -We now remove the original metadata from the package. -``` -rm tmp_packages_for_deployment/edge1-network-function-auto-namespace-a.clone.tmp/.KptRevisionMetadata -``` - -The package we created in the last section is cloned. We now initialize and push the package to the `edge1` repo: - -``` -porchctl -n porch-demo rpkg init edge1-network-function-auto-namespace-a --repository=edge1 --workspace=v1 -edge1-48997da49ca0a733b0834c1a27943f1a0e075180 created - -porchctl -n porch-demo rpkg pull edge1-48997da49ca0a733b0834c1a27943f1a0e075180 tmp_packages_for_deployment/edge1-network-function-auto-namespace-a - -cp tmp_packages_for_deployment/edge1-network-function-auto-namespace-a.clone.tmp/* tmp_packages_for_deployment/edge1-network-function-auto-namespace-a -rm -fr tmp_packages_for_deployment/edge1-network-function-auto-namespace-a.clone.tmp -``` - - -We now simply configure the namespace we want to apply. edit the `tmp_packages_for_deployment/edge1-network-function-auto-namespace-a/package-context.yaml` file and set the namespace to use: - -``` -8c8 -< name: default-namespace-name ---- -> name: edge1-network-function-auto-namespace-a -``` - -We now push the package to the `edge1` repo: - -``` -porchctl -n porch-demo rpkg push edge1-48997da49ca0a733b0834c1a27943f1a0e075180 tmp_packages_for_deployment/edge1-network-function-auto-namespace-a -[RUNNING] "gcr.io/kpt-fn/set-namespace:v0.4.1" -[PASS] "gcr.io/kpt-fn/set-namespace:v0.4.1" - Results: - [info]: namespace "default-namespace-name" updated to "edge1-network-function-auto-namespace-a", 1 value(s) changed - -porchctl -n porch-demo rpkg get --name edge1-network-function-auto-namespace-a -``` - -You can verify that the package is in the `network-function-auto-namespace-a/v1` branch of the deployment repo using the Gitea web UI. You can see that the kpt pipeline fired and set the `edge1-network-function-auto-namespace-a` namespace in the `deployment.yaml` file on the `drafts/edge1-network-function-auto-namespace-a/v1` branch on the `edge1` repo in gitea. - -Check that the `edge1-network-function-auto-namespace-a` package is not deployed on the edge1 cluster yet: -``` -export KUBECONFIG=~/.kube/kind-edge1-config - -kubectl get pod -n edge1-network-function-auto-namespace-a -No resources found in network-function-auto-namespace-a namespace. - -``` - -We now propose and approve the deployment package, which merges the package to the `edge1` repo and further triggers Configsync to apply the package to the `edge1` cluster. - -``` -export KUBECONFIG=~/.kube/kind-management-config - -porchctl -n porch-demo rpkg propose edge1-48997da49ca0a733b0834c1a27943f1a0e075180 -edge1-48997da49ca0a733b0834c1a27943f1a0e075180 proposed - -porchctl -n porch-demo rpkg approve edge1-48997da49ca0a733b0834c1a27943f1a0e075180 -edge1-48997da49ca0a733b0834c1a27943f1a0e075180 approved - -porchctl -n porch-demo rpkg get --name edge1-network-function-auto-namespace-a -NAME PACKAGE WORKSPACENAME REVISION LATEST LIFECYCLE REPOSITORY -edge1-48997da49ca0a733b0834c1a27943f1a0e075180 edge1-network-function-auto-namespace-a v1 v1 true Published edge1 -``` - -We can now check that the `network-function-auto-namespace-a` package is deployed on the edge1 cluster and that the pod is running -``` -export KUBECONFIG=~/.kube/kind-edge1-config - -kubectl get pod -n edge1-network-function-auto-namespace-a -No resources found in network-function-auto-namespace-a namespace. - -kubectl get pod -n edge1-network-function-auto-namespace-a -NAME READY STATUS RESTARTS AGE -network-function-auto-namespace-85bc658d67-rbzt6 1/1 ContainerCreating 0 3s - -kubectl get pod -n edge1-network-function-auto-namespace-a -NAME READY STATUS RESTARTS AGE -network-function-auto-namespace-85bc658d67-rbzt6 1/1 Running 0 10s -``` - -## Deploying using Package Variant Sets - -### Simple PackageVariantSet - -The PackageVariant CR is defined in the [simple-variant.yaml](simple-variant.yaml) file. In this very simple PackageVariant, the `network-function` package in the `management` repo is cloned into the `edge1` repo as the `network-function-b` and `network-function-c` package variants. - -> **_NOTE:_** This simple package variant does not specify any configuration changes. Normally, as well as cloning and renaming, configuration changes would be applied on a package variant. - -> Use `kubectl explain PackageVariantSet` to get help on the structure of the PackageVariantSet CRD. - -Applying the PackageVariantSet creates the new packages as draft packages: - -``` -kubectl apply -f simple-variant.yaml - -kubectl get PackageRevisions -n porch-demo | grep -v 'external-blueprints' -NAME PACKAGE WORKSPACENAME REVISION LATEST LIFECYCLE REPOSITORY -edge1-bc8294d121360ad305c9a826a8734adcf5f1b9c0 network-function-a v1 main false Published edge1 -edge1-9b4b4d99c43b5c5c8489a47bbce9a61f79904946 network-function-a v1 v1 true Published edge1 -edge1-a31b56c7db509652f00724dd49746660757cd98a network-function-b packagevariant-1 false Draft edge1 -edge1-ee14f7ce850ddb0a380cf201d86f48419dc291f4 network-function-c packagevariant-1 false Draft edge1 -management-49580fc22bcf3bf51d334a00b6baa41df597219e network-function v1 main false Published management -management-8b80738a6e0707e3718ae1db3668d0b8ca3f1c82 network-function v1 v1 true Published management - -porchctl -n porch-demo rpkg get --name network-function-b -NAME PACKAGE WORKSPACENAME REVISION LATEST LIFECYCLE REPOSITORY -edge1-a31b56c7db509652f00724dd49746660757cd98a network-function-b packagevariant-1 false Draft edge1 - -porchctl -n porch-demo rpkg get --name network-function-c -NAME PACKAGE WORKSPACENAME REVISION LATEST LIFECYCLE REPOSITORY -edge1-ee14f7ce850ddb0a380cf201d86f48419dc291f4 network-function-c packagevariant-1 false Draft edge1 -``` - -We can see that our two new packages are created as draft packages on the edge1 repo. We can also examine the PacakgeVariant CRs that have been created: -``` -kubectl get PackageVariant -n porch-demo -NAMESPACE NAME READY STATUS RESTARTS AGE -network-function-a network-function-9779fc9f5-2tswc 1/1 Running 0 19h -network-function-b network-function-9779fc9f5-6zwhh 1/1 Running 0 76s -network-function-c network-function-9779fc9f5-h7nsb 1/1 Running 0 41s -``` - -
    -It is also interesting to examine the yaml of the PackageVariant: - -``` -kubectl get PackageVariant -n porch-demo -o yaml -apiVersion: v1 -items: -- apiVersion: config.porch.kpt.dev/v1alpha1 - kind: PackageVariant - metadata: - creationTimestamp: "2024-01-09T15:00:00Z" - finalizers: - - config.porch.kpt.dev/packagevariants - generation: 1 - labels: - config.porch.kpt.dev/packagevariantset: a923d4fc-a3a7-437c-84d1-52b30dd6cf49 - name: network-function-edge1-network-function-b - namespace: porch-demo - ownerReferences: - - apiVersion: config.porch.kpt.dev/v1alpha2 - controller: true - kind: PackageVariantSet - name: network-function - uid: a923d4fc-a3a7-437c-84d1-52b30dd6cf49 - resourceVersion: "237053" - uid: 7a81099c-5a0b-49d8-b73c-48e33cd134e5 - spec: - downstream: - package: network-function-b - repo: edge1 - upstream: - package: network-function - repo: management - revision: v1 - status: - conditions: - - lastTransitionTime: "2024-01-09T15:00:00Z" - message: all validation checks passed - reason: Valid - status: "False" - type: Stalled - - lastTransitionTime: "2024-01-09T15:00:31Z" - message: successfully ensured downstream package variant - reason: NoErrors - status: "True" - type: Ready - downstreamTargets: - - name: edge1-a31b56c7db509652f00724dd49746660757cd98a -- apiVersion: config.porch.kpt.dev/v1alpha1 - kind: PackageVariant - metadata: - creationTimestamp: "2024-01-09T15:00:00Z" - finalizers: - - config.porch.kpt.dev/packagevariants - generation: 1 - labels: - config.porch.kpt.dev/packagevariantset: a923d4fc-a3a7-437c-84d1-52b30dd6cf49 - name: network-function-edge1-network-function-c - namespace: porch-demo - ownerReferences: - - apiVersion: config.porch.kpt.dev/v1alpha2 - controller: true - kind: PackageVariantSet - name: network-function - uid: a923d4fc-a3a7-437c-84d1-52b30dd6cf49 - resourceVersion: "237056" - uid: da037d0a-9a7a-4e85-842c-1324e9da819a - spec: - downstream: - package: network-function-c - repo: edge1 - upstream: - package: network-function - repo: management - revision: v1 - status: - conditions: - - lastTransitionTime: "2024-01-09T15:00:01Z" - message: all validation checks passed - reason: Valid - status: "False" - type: Stalled - - lastTransitionTime: "2024-01-09T15:00:31Z" - message: successfully ensured downstream package variant - reason: NoErrors - status: "True" - type: Ready - downstreamTargets: - - name: edge1-ee14f7ce850ddb0a380cf201d86f48419dc291f4 -kind: List -metadata: - resourceVersion: "" -``` -
    - -We now want to customize and deploy our two packages. To do this we must pull the pacakges locally, render the kpt functions, and then push the rendered packages back up to the `edge1` repo. - -``` -porchctl rpkg pull edge1-a31b56c7db509652f00724dd49746660757cd98a tmp_packages_for_deployment/edge1-network-function-b --namespace=porch-demo -kpt fn eval --image=gcr.io/kpt-fn/set-namespace:v0.4.1 tmp_packages_for_deployment/edge1-network-function-b -- namespace=network-function-b -porchctl rpkg push edge1-a31b56c7db509652f00724dd49746660757cd98a tmp_packages_for_deployment/edge1-network-function-b --namespace=porch-demo - -porchctl rpkg pull edge1-ee14f7ce850ddb0a380cf201d86f48419dc291f4 tmp_packages_for_deployment/edge1-network-function-c --namespace=porch-demo -kpt fn eval --image=gcr.io/kpt-fn/set-namespace:v0.4.1 tmp_packages_for_deployment/edge1-network-function-c -- namespace=network-function-c -porchctl rpkg push edge1-ee14f7ce850ddb0a380cf201d86f48419dc291f4 tmp_packages_for_deployment/edge1-network-function-c --namespace=porch-demo -``` - -Check that the namespace has been updated on the two packages in the `edge1` repo using the Gitea web UI. - -Now our two packages are ready for deployment: - -``` -porchctl rpkg propose edge1-a31b56c7db509652f00724dd49746660757cd98a --namespace=porch-demo -edge1-a31b56c7db509652f00724dd49746660757cd98a proposed - -porchctl rpkg approve edge1-a31b56c7db509652f00724dd49746660757cd98a --namespace=porch-demo -edge1-a31b56c7db509652f00724dd49746660757cd98a approved - -porchctl rpkg propose edge1-ee14f7ce850ddb0a380cf201d86f48419dc291f4 --namespace=porch-demo -edge1-ee14f7ce850ddb0a380cf201d86f48419dc291f4 proposed - -porchctl rpkg approve edge1-ee14f7ce850ddb0a380cf201d86f48419dc291f4 --namespace=porch-demo -edge1-ee14f7ce850ddb0a380cf201d86f48419dc291f4 approved -``` - -We can now check that the `network-function-b` and `network-function-c` packages are deployed on the edge1 cluster and that the pods are running -``` -export KUBECONFIG=~/.kube/kind-edge1-config - -kubectl get pod -A | egrep '(NAMESPACE|network-function)' -NAMESPACE NAME READY STATUS RESTARTS AGE -network-function-a network-function-9779fc9f5-2tswc 1/1 Running 0 19h -network-function-b network-function-9779fc9f5-6zwhh 1/1 Running 0 76s -network-function-c network-function-9779fc9f5-h7nsb 1/1 Running 0 41s -``` - -### Using a PackageVariantSet to automatically set the package name and package namespace - -The PackageVariant CR is defined in the [name-namespace-variant.yaml](name-namespace-variant.yaml) file. In this PackageVariant, the `network-function-auto-namespace` package in the `management` repo is cloned into the `edge1` repo as the `network-function-auto-namespace-x` and `network-function-auto-namespace-y` package variants, similar to the PackageVariant in `simple-variant.yaml`. - -Here note the extra `template` section provided for the repositories in the PackageVariant: - -``` -template: - downstream: - packageExpr: "target.package + '-cumulus'" -``` - -This template means that each package in the `spec.targets.repositories..packageNames` list will have the suffix `-cumulus` added to its name. This allows us to automatically generate unique package names. Applying the PackageVariantSet also automatically sets a unique namespace for each network function because applying the PackageVariantSet automatically triggers the Kpt pipeline in the `network-function-auto-namespace` Kpt package to gerenate unique namespaces for each deployed package. - -> Many other mutatinos can be performed using a PackageVariantSet. Use `kubectl explain PackageVariantSet` to get help on the structure of the PackageVariantSet CRD to see the various mutations that are possible. - -Applying the PackageVariantSet creates the new packages as draft packages: - -``` -kubectl apply -f name-namespace-variant.yaml -packagevariantset.config.porch.kpt.dev/network-function-auto-namespace created - -kunectl get -n porch-demo PackageVariantSet network-function-auto-namespace -NAME AGE -network-function-auto-namespace 38s - -kubectl get PackageRevisions -n porch-demo | grep auto-namespace -edge1-1f521f05a684adfa8562bf330f7bc72b50e21cc5 edge1-network-function-auto-namespace-a v1 main false Published edge1 -edge1-48997da49ca0a733b0834c1a27943f1a0e075180 edge1-network-function-auto-namespace-a v1 v1 true Published edge1 -edge1-009659a8532552b86263434f68618554e12f4f7c network-function-auto-namespace-x-cumulonimbus packagevariant-1 false Draft edge1 -edge1-77dbfed49b6cb0723b7c672b224de04c0cead67e network-function-auto-namespace-y-cumulonimbus packagevariant-1 false Draft edge1 -management-f9a6f2802111b9e81c296422c03aae279725f6df network-function-auto-namespace v1 main false Published management -management-c97bc433db93f2e8a3d413bed57216c2a72fc7e3 network-function-auto-namespace v1 v1 true Published management -``` -Note that the suffix `x-cumulonimbus` and `y-cumulonimbus` has been palced on the package names. - -Examine the `edge1` repo on Giea and you should see two new draft branches. - -- drafts/network-function-auto-namespace-x-cumulonimbus/packagevariant-1 -- drafts/network-function-auto-namespace-y-cumulonimbus/packagevariant-1 - -In these packages, you will see that: - -1. The package name has been generated as `network-function-auto-namespace-x-cumulonimbus` and `network-function-auto-namespace-y-cumulonimbus`in all files in the packages -2. The namespace has been generated as `network-function-auto-namespace-x-cumulonimbus` and `network-function-auto-namespace-y-cumulonimbus` respectively in the `demployment.yaml` files -3. The PackageVariant has set the `data.name` field as `network-function-auto-namespace-x-cumulonimbus` and `network-function-auto-namespace-y-cumulonimbus` respectively in the `pckage-context.yaml` files - -Note that this has all been performed automatically; weh have not had to perform the `porchctl rpkg pull/kpt fn render/porchctl rpkg push` combination of commands to make these chages as we had to in the `simple-variant.yaml` case above. - -Now, let us explore the packages further: - -``` -porchctl -n porch-demo rpkg get --name network-function-auto-namespace-x-cumulonimbus -NAME PACKAGE WORKSPACENAME REVISION LATEST LIFECYCLE REPOSITORY -edge1-009659a8532552b86263434f68618554e12f4f7c network-function-auto-namespace-x-cumulonimbus packagevariant-1 false Draft edge1 - -porchctl -n porch-demo rpkg get --name network-function-auto-namespace-y-cumulonimbus -NAME PACKAGE WORKSPACENAME REVISION LATEST LIFECYCLE REPOSITORY -edge1-77dbfed49b6cb0723b7c672b224de04c0cead67e network-function-auto-namespace-y-cumulonimbus packagevariant-1 false Draft edge1 -``` - -We can see that our two new packages are created as draft packages on the edge1 repo. We can also examine the PacakgeVariant CRs that have been created: -``` -kubectl get PackageVariant -n porch-demo -NAME AGE -network-function-auto-namespace-edge1-network-function-35079f9f 3m41s -network-function-auto-namespace-edge1-network-function-d521d2c0 3m41s -network-function-edge1-network-function-b 38m -network-function-edge1-network-function-c 38m -``` - -
    -It is also interesting to examine the yaml of a PackageVariant: - -``` -kubectl get PackageVariant -n porch-demo network-function-auto-namespace-edge1-network-function-35079f9f -o yaml -apiVersion: config.porch.kpt.dev/v1alpha1 -kind: PackageVariant -metadata: - creationTimestamp: "2024-01-24T15:10:19Z" - finalizers: - - config.porch.kpt.dev/packagevariants - generation: 1 - labels: - config.porch.kpt.dev/packagevariantset: 71edbdff-21c1-45f4-b9cb-6d2ecfc3da4e - name: network-function-auto-namespace-edge1-network-function-35079f9f - namespace: porch-demo - ownerReferences: - - apiVersion: config.porch.kpt.dev/v1alpha2 - controller: true - kind: PackageVariantSet - name: network-function-auto-namespace - uid: 71edbdff-21c1-45f4-b9cb-6d2ecfc3da4e - resourceVersion: "404083" - uid: 5ae69c2d-6aac-4942-b717-918325650190 -spec: - downstream: - package: network-function-auto-namespace-x-cumulonimbus - repo: edge1 - upstream: - package: network-function-auto-namespace - repo: management - revision: v1 -status: - conditions: - - lastTransitionTime: "2024-01-24T15:10:19Z" - message: all validation checks passed - reason: Valid - status: "False" - type: Stalled - - lastTransitionTime: "2024-01-24T15:10:49Z" - message: successfully ensured downstream package variant - reason: NoErrors - status: "True" - type: Ready - downstreamTargets: - - name: edge1-009659a8532552b86263434f68618554e12f4f7c -``` -
    - -Our two packages are ready for deployment: - -``` -porchctl rpkg propose edge1-009659a8532552b86263434f68618554e12f4f7c --namespace=porch-demo -edge1-009659a8532552b86263434f68618554e12f4f7c proposed - -porchctl rpkg approve edge1-009659a8532552b86263434f68618554e12f4f7c --namespace=porch-demo -edge1-009659a8532552b86263434f68618554e12f4f7c approved - -porchctl rpkg propose edge1-77dbfed49b6cb0723b7c672b224de04c0cead67e --namespace=porch-demo -edge1-77dbfed49b6cb0723b7c672b224de04c0cead67e proposed - -porchctl rpkg approve edge1-77dbfed49b6cb0723b7c672b224de04c0cead67e --namespace=porch-demo -edge1-77dbfed49b6cb0723b7c672b224de04c0cead67e approved -``` - -We can now check that the packages are deployed on the edge1 cluster and that the pods are running - -``` -export KUBECONFIG=~/.kube/kind-edge1-config - -kubectl get pod -A | egrep '(NAMESPACE|network-function)' -NAMESPACE NAME READY STATUS RESTARTS AGE -edge1-network-function-a network-function-9779fc9f5-87scj 1/1 Running 1 (2d1h ago) 4d22h -edge1-network-function-auto-namespace-a network-function-auto-namespace-85bc658d67-rbzt6 1/1 Running 1 (2d1h ago) 4d22h -network-function-b network-function-9779fc9f5-twh2g 1/1 Running 0 45m -network-function-c network-function-9779fc9f5-whhr8 1/1 Running 0 44m - -kubectl get pod -A | egrep '(NAMESPACE|network-function)' -NAMESPACE NAME READY STATUS RESTARTS AGE -edge1-network-function-a network-function-9779fc9f5-87scj 1/1 Running 1 (2d1h ago) 4d22h -edge1-network-function-auto-namespace-a network-function-auto-namespace-85bc658d67-rbzt6 1/1 Running 1 (2d1h ago) 4d22h -network-function-auto-namespace-x-cumulonimbus network-function-auto-namespace-85bc658d67-86gml 0/1 ContainerCreating 0 1s -network-function-b network-function-9779fc9f5-twh2g 1/1 Running 0 45m -network-function-c network-function-9779fc9f5-whhr8 1/1 Running 0 44m - -kubectl get pod -A | egrep '(NAMESPACE|network-function)' -NAMESPACE NAME READY STATUS RESTARTS AGE -edge1-network-function-a network-function-9779fc9f5-87scj 1/1 Running 1 (2d1h ago) 4d22h -edge1-network-function-auto-namespace-a network-function-auto-namespace-85bc658d67-rbzt6 1/1 Running 1 (2d1h ago) 4d22h -network-function-auto-namespace-x-cumulonimbus network-function-auto-namespace-85bc658d67-86gml 1/1 Running 0 10s -network-function-b network-function-9779fc9f5-twh2g 1/1 Running 0 45m -network-function-c network-function-9779fc9f5-whhr8 1/1 Running 0 45m - -kubectl get pod -A | egrep '(NAMESPACE|network-function)' -NAMESPACE NAME READY STATUS RESTARTS AGE -edge1-network-function-a network-function-9779fc9f5-87scj 1/1 Running 1 (2d1h ago) 4d22h -edge1-network-function-auto-namespace-a network-function-auto-namespace-85bc658d67-rbzt6 1/1 Running 1 (2d1h ago) 4d22h -network-function-auto-namespace-x-cumulonimbus network-function-auto-namespace-85bc658d67-86gml 1/1 Running 0 50s -network-function-b network-function-9779fc9f5-twh2g 1/1 Running 0 46m -network-function-c network-function-9779fc9f5-whhr8 1/1 Running 0 45m - -kubectl get pod -A | egrep '(NAMESPACE|network-function)' -NAMESPACE NAME READY STATUS RESTARTS AGE -edge1-network-function-a network-function-9779fc9f5-87scj 1/1 Running 1 (2d1h ago) 4d22h -edge1-network-function-auto-namespace-a network-function-auto-namespace-85bc658d67-rbzt6 1/1 Running 1 (2d1h ago) 4d22h -network-function-auto-namespace-x-cumulonimbus network-function-auto-namespace-85bc658d67-86gml 1/1 Running 0 51s -network-function-auto-namespace-y-cumulonimbus network-function-auto-namespace-85bc658d67-tp5m8 0/1 ContainerCreating 0 1s -network-function-b network-function-9779fc9f5-twh2g 1/1 Running 0 46m -network-function-c network-function-9779fc9f5-whhr8 1/1 Running 0 45m - -kubectl get pod -A | egrep '(NAMESPACE|network-function)' -NAMESPACE NAME READY STATUS RESTARTS AGE -edge1-network-function-a network-function-9779fc9f5-87scj 1/1 Running 1 (2d1h ago) 4d22h -edge1-network-function-auto-namespace-a network-function-auto-namespace-85bc658d67-rbzt6 1/1 Running 1 (2d1h ago) 4d22h -network-function-auto-namespace-x-cumulonimbus network-function-auto-namespace-85bc658d67-86gml 1/1 Running 0 54s -network-function-auto-namespace-y-cumulonimbus network-function-auto-namespace-85bc658d67-tp5m8 1/1 Running 0 4s -network-function-b network-function-9779fc9f5-twh2g 1/1 Running 0 46m -network-function-c network-function-9779fc9f5-whhr8 1/1 Running 0 45m -``` diff --git a/docs/tutorials/starting-with-porch/blueprints/initialized/.gitignore b/docs/tutorials/starting-with-porch/blueprints/initialized/.gitignore deleted file mode 100644 index d6b7ef32..00000000 --- a/docs/tutorials/starting-with-porch/blueprints/initialized/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/docs/tutorials/starting-with-porch/blueprints/local-changes/network-function-auto-namespace/Kptfile b/docs/tutorials/starting-with-porch/blueprints/local-changes/network-function-auto-namespace/Kptfile deleted file mode 100644 index 44cbe35c..00000000 --- a/docs/tutorials/starting-with-porch/blueprints/local-changes/network-function-auto-namespace/Kptfile +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: kpt.dev/v1 -kind: Kptfile - -metadata: - name: network-function-auto-namespace - annotations: - config.kubernetes.io/local-config: "true" - -info: - description: Network Function with automatic namespace setting Blueprint - -pipeline: - mutators: - - image: gcr.io/kpt-fn/set-namespace:v0.4.1 - configPath: package-context.yaml diff --git a/docs/tutorials/starting-with-porch/blueprints/local-changes/network-function-auto-namespace/README.md b/docs/tutorials/starting-with-porch/blueprints/local-changes/network-function-auto-namespace/README.md deleted file mode 100644 index 6f2fef01..00000000 --- a/docs/tutorials/starting-with-porch/blueprints/local-changes/network-function-auto-namespace/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# Network Function - -## Description -Network Function with automatic namespace Blueprint - -## Usage - -### Fetch the package -``` -kpt pkg get $GIT_HOST/$GIT_USERNAME/$GIT_BLUEPRINTS_REPO[@VERSION] network-function-auto-namespace -``` -Details: https://kpt.dev/reference/cli/pkg/get/ - -### View package content -``` -kpt pkg tree network-function-auto-namespace -``` -Details: https://kpt.dev/reference/cli/pkg/tree/ - -### Apply the package -``` -kpt live init network-function-auto-namespace -kpt live apply network-function-auto-namespace --reconcile-timeout=2m --output=table -``` -Details: https://kpt.dev/reference/cli/live/ diff --git a/docs/tutorials/starting-with-porch/blueprints/local-changes/network-function-auto-namespace/deployment.yaml b/docs/tutorials/starting-with-porch/blueprints/local-changes/network-function-auto-namespace/deployment.yaml deleted file mode 100644 index 9330f2e4..00000000 --- a/docs/tutorials/starting-with-porch/blueprints/local-changes/network-function-auto-namespace/deployment.yaml +++ /dev/null @@ -1,17 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: network-function-auto-namespace -spec: - replicas: 1 - selector: - matchLabels: - app.kubernetes.io/name: network-function-auto-namespace - template: - metadata: - labels: - app.kubernetes.io/name: network-function-auto-namespace - spec: - containers: - - name: nginx - image: nginx:latest diff --git a/docs/tutorials/starting-with-porch/blueprints/local-changes/network-function-auto-namespace/package-context.yaml b/docs/tutorials/starting-with-porch/blueprints/local-changes/network-function-auto-namespace/package-context.yaml deleted file mode 100644 index 036b4fd0..00000000 --- a/docs/tutorials/starting-with-porch/blueprints/local-changes/network-function-auto-namespace/package-context.yaml +++ /dev/null @@ -1,8 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: kptfile.kpt.dev - annotations: - config.kubernetes.io/local-config: "true" -data: - name: default-namespace-name \ No newline at end of file diff --git a/docs/tutorials/starting-with-porch/blueprints/local-changes/network-function/Kptfile b/docs/tutorials/starting-with-porch/blueprints/local-changes/network-function/Kptfile deleted file mode 100644 index 7a79f11e..00000000 --- a/docs/tutorials/starting-with-porch/blueprints/local-changes/network-function/Kptfile +++ /dev/null @@ -1,10 +0,0 @@ -apiVersion: kpt.dev/v1 -kind: Kptfile - -metadata: - name: network-function - annotations: - config.kubernetes.io/local-config: "true" - -info: - description: network function blueprint diff --git a/docs/tutorials/starting-with-porch/blueprints/local-changes/network-function/README.md b/docs/tutorials/starting-with-porch/blueprints/local-changes/network-function/README.md deleted file mode 100644 index abb26ef7..00000000 --- a/docs/tutorials/starting-with-porch/blueprints/local-changes/network-function/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# Network Function - -## Description -Network Function Blueprint - -## Usage - -### Fetch the package -``` -kpt pkg get $GIT_HOST/$GIT_USERNAME/$GIT_BLUEPRINTS_REPO[@VERSION] network-function -``` -Details: https://kpt.dev/reference/cli/pkg/get/ - -### View package content -``` -kpt pkg tree network-function -``` -Details: https://kpt.dev/reference/cli/pkg/tree/ - -### Apply the package -``` -kpt live init network-function -kpt live apply network-function --reconcile-timeout=2m --output=table -``` -Details: https://kpt.dev/reference/cli/live/ diff --git a/docs/tutorials/starting-with-porch/blueprints/local-changes/network-function/deployment.yaml b/docs/tutorials/starting-with-porch/blueprints/local-changes/network-function/deployment.yaml deleted file mode 100644 index 11d67f9e..00000000 --- a/docs/tutorials/starting-with-porch/blueprints/local-changes/network-function/deployment.yaml +++ /dev/null @@ -1,17 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: network-function -spec: - replicas: 1 - selector: - matchLabels: - app.kubernetes.io/name: network-function - template: - metadata: - labels: - app.kubernetes.io/name: network-function - spec: - containers: - - name: nginx - image: nginx:latest diff --git a/docs/tutorials/starting-with-porch/kind_edge1_cluster.yaml b/docs/tutorials/starting-with-porch/kind_edge1_cluster.yaml deleted file mode 100644 index 6b36f90a..00000000 --- a/docs/tutorials/starting-with-porch/kind_edge1_cluster.yaml +++ /dev/null @@ -1,14 +0,0 @@ -kind: Cluster -apiVersion: kind.x-k8s.io/v1alpha4 - -name: edge1 -networking: - apiServerAddress: 127.0.0.1 - apiServerPort: 31001 - podSubnet: 10.98.0.0/16 - serviceSubnet: 10.198.0.0/16 -nodes: -- role: control-plane - extraPortMappings: - - containerPort: 30000 - hostPort: 32001 diff --git a/docs/tutorials/starting-with-porch/kind_management_cluster.yaml b/docs/tutorials/starting-with-porch/kind_management_cluster.yaml deleted file mode 100644 index 4ff69763..00000000 --- a/docs/tutorials/starting-with-porch/kind_management_cluster.yaml +++ /dev/null @@ -1,16 +0,0 @@ -kind: Cluster -apiVersion: kind.x-k8s.io/v1alpha4 - -name: management -networking: - apiServerAddress: 127.0.0.1 - apiServerPort: 31000 - podSubnet: 10.97.0.0/16 - serviceSubnet: 10.197.0.0/16 -nodes: -- role: control-plane - extraPortMappings: - - containerPort: 30000 - hostPort: 32000 - - containerPort: 3000 # Gitea NodePort - hostPort: 30600 diff --git a/docs/tutorials/starting-with-porch/kpt_packages/.gitignore b/docs/tutorials/starting-with-porch/kpt_packages/.gitignore deleted file mode 100644 index d6b7ef32..00000000 --- a/docs/tutorials/starting-with-porch/kpt_packages/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/docs/tutorials/starting-with-porch/metallb-conf.yaml b/docs/tutorials/starting-with-porch/metallb-conf.yaml deleted file mode 100644 index 57230289..00000000 --- a/docs/tutorials/starting-with-porch/metallb-conf.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: metallb.io/v1beta1 -kind: IPAddressPool -metadata: - name: example - namespace: metallb-system -spec: - addresses: - - 172.18.255.200-172.18.255.250 ---- -apiVersion: metallb.io/v1beta1 -kind: L2Advertisement -metadata: - name: empty - namespace: metallb-system - diff --git a/docs/tutorials/starting-with-porch/name-namespace-variant.yaml b/docs/tutorials/starting-with-porch/name-namespace-variant.yaml deleted file mode 100644 index ecc87690..00000000 --- a/docs/tutorials/starting-with-porch/name-namespace-variant.yaml +++ /dev/null @@ -1,21 +0,0 @@ -apiVersion: config.porch.kpt.dev/v1alpha2 -kind: PackageVariantSet - -metadata: - name: network-function-auto-namespace - namespace: porch-demo - -spec: - upstream: - repo: management - package: network-function-auto-namespace - revision: v1 - targets: - - repositories: - - name: edge1 - packageNames: - - network-function-auto-namespace-x - - network-function-auto-namespace-y - template: - downstream: - packageExpr: "target.package + '-cumulonimbus'" diff --git a/docs/tutorials/starting-with-porch/porch-repositories.yaml b/docs/tutorials/starting-with-porch/porch-repositories.yaml deleted file mode 100644 index 9ede4433..00000000 --- a/docs/tutorials/starting-with-porch/porch-repositories.yaml +++ /dev/null @@ -1,59 +0,0 @@ -apiVersion: config.porch.kpt.dev/v1alpha1 -kind: Repository - -metadata: - name: edge1 - namespace: porch-demo - -spec: - description: edge1 - content: Package - deployment: true - type: git - git: - repo: http://172.18.255.200:3000/nephio/edge1.git - directory: / - branch: main - createBranch: true - secretRef: - name: gitea - ---- - -apiVersion: config.porch.kpt.dev/v1alpha1 -kind: Repository - -metadata: - name: management - namespace: porch-demo - -spec: - description: management - content: Package - deployment: false - type: git - git: - repo: http://172.18.255.200:3000/nephio/management.git - directory: / - branch: main - secretRef: - name: gitea - ---- - -apiVersion: config.porch.kpt.dev/v1alpha1 -kind: Repository - -metadata: - name: external-blueprints - namespace: porch-demo - -spec: - description: External blueprints - content: Package - deployment: false - type: git - git: - repo: https://github.com/nephio-project/free5gc-packages.git - directory: / - branch: main diff --git a/docs/tutorials/starting-with-porch/repos/.gitignore b/docs/tutorials/starting-with-porch/repos/.gitignore deleted file mode 100644 index d6b7ef32..00000000 --- a/docs/tutorials/starting-with-porch/repos/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/docs/tutorials/starting-with-porch/simple-variant.yaml b/docs/tutorials/starting-with-porch/simple-variant.yaml deleted file mode 100644 index 1960b027..00000000 --- a/docs/tutorials/starting-with-porch/simple-variant.yaml +++ /dev/null @@ -1,18 +0,0 @@ -apiVersion: config.porch.kpt.dev/v1alpha2 -kind: PackageVariantSet - -metadata: - name: network-function - namespace: porch-demo - -spec: - upstream: - repo: management - package: network-function - revision: v1 - targets: - - repositories: - - name: edge1 - packageNames: - - network-function-b - - network-function-c diff --git a/docs/tutorials/starting-with-porch/tmp_packages_for_deployment/.gitignore b/docs/tutorials/starting-with-porch/tmp_packages_for_deployment/.gitignore deleted file mode 100644 index d6b7ef32..00000000 --- a/docs/tutorials/starting-with-porch/tmp_packages_for_deployment/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore