Skip to content

Home

Welcome to pkgserver, your solution for streamlined KRM package management in conjunction with GitOps systems. Pkgserver is designed to empower operators, developers and/or platform engineers to deploy applications and configurations seamlessly in various environments.

With pkgserver, you can embrace continuous delivery practices, ensuring swift and reliable rollouts of changes to your systems. Whether you're managing infrastructure, deploying application in development or production settings, pkgserver provides the tools you need to streamline and automate the deployment process.

The pkgserver is tailored to meet the needs of modern infrastructure/application management, offering robust features for managing fleet systems at scale. From orchestrating deployments to tracking changes across your environment, pkgserver aims to simplify the complexities of package management, allowing you to focus on delivering value to your users.

Architecture#

As the name suggests, the pkgserver manages packages. Fundamentally, a package is a set of Kubernetes Resource Model (KRM) resources in YAML format. These resources may include artifacts of software components, configuration artifacts, or a combination thereof. By leveraging KRM, pkgserver provides a flexible and extensible framework for defining and managing complex software systems, through a well defined API framework.

To facilitate the organization of packages, the pkgserver leverages repositories to manage packages. Within this framework, pkgserver distinguishes between two primary types of repositories: deployment/catalog repositories.

Catalog repositories, also known as blueprint repositories, serve as templates for software components and configurations.Packages in these repositories define the structure and composition of the desired KRM resources, providing a standardized framework for deployment.

On the other hand, deployment repositories holds packages with actual artifacts necessary for deployment, including software components and configuration artifacts. These packages contain the tangible elements required to instantiate the deployment artifacts.

graph TD;
    subgraph "Package Organization"
        RepositoryC[Repository Catalog];
        RepositoryD[Repository Deployment];
        PackageC[Package Catalog];
        PackageD[Package Deployment];
        RepositoryC --> |1:N| PackageC;
        RepositoryD --> |1:N| PackageD;
    end

Central to the functionality of pkgserver is its robust lifecycle management system for packages. This system encompasses essential operations such as discovery, creation, reading, updating, and deletion of packages, commonly referred to as CRUD operations.

Additionally, pkgserver offers comprehensive versioning capabilities, allowing users to track and manage changes to packages over time. This ensures traceability and facilitates the implementation of controlled release processes.

Pkgserver extends the Kubernetes API with dedicated resources (PackageRevision/PackageRevisonResources), ensuring a tailored approach to managing packages within Kubernetes environments. Through these API extension the, Pkgserver architecture allows for seamless integration with different applications leveraging the event-driven API framework of Kubernetes. This capability empowers users to customize specific scenarios and workflows tailored to their unique requirements. Examples include Package Specialization, Package Approval, Package Validation, Package Dependencies, etc.

graph TD;
    subgraph "PkgServer Architecture"
        PkgServerAPI[API Server];
        PkgRevisionController;
        PkgServerApp1[Custom Application 1];
        PkgServerApp2[Custom Application 2];
        PkgServerDB[Version Controlled Backend];
        PkgServerAPI --> PkgServerDB;
        PkgRevisionController --> PkgServerAPI;
        PkgServerApp1 --> PkgServerAPI;
        PkgServerApp2 --> PkgServerAPI;
    end

Join us#

Join us on this journey as we redefine package management and deployment for the next generation of software development and infrastructure/application engineering.

Have questions, ideas, bug reports or just want to chat? Come join our discord server.