Deployments in Ctrlplane are the central organizing principle for managing and
orchestrating the release of your software or infrastructure across various
environments within a system. A deployment represents a complete, end-to-end
process for delivering changes to your system, encompassing everything from
the initial code commit to the final production release.
A Logical Unit: It typically represents a single service, application, or
piece of infrastructure.
System-Bound: Each deployment is assigned to a specific system, which
contains multiple environments (e.g., QA, Staging, Production). When you
create a deployment, it automatically becomes part of all environments within
that system.
Version Control: It manages multiple releases (versions) of your software
or infrastructure configuration.
Pipeline Definition: It includes a defined CI/CD pipeline that outlines
the steps for building, testing, and deploying your changes.
Release Manager: It groups and organizes releases, providing a historical
view of all deployments.
Releases: Individual versions of your software or infrastructure
configuration.
CI/CD Pipeline: The defined process for deploying releases.
System and Environment Association: The deployment is part of all
environments within its assigned system, allowing for consistent deployment
across different stages.
Job Configurations: Specifications for the jobs that will be created and
run for each release and resource.
Variables: Resource-specific variables that allow the same pipeline to be
used across different environments.
Ctrlplane uses a hierarchical structure to manage deployments:
Systems: The top-level organizational unit. A system contains multiple
environments and is associated with one or more deployments.
Environments: Subsets of a system (e.g., QA, Staging, Production). Each
environment can be configured with specific settings and policies.
Environment Configuration: Each environment is configured with label
filters to determine which resources fall under that environment. This allows
for fine-grained control over where deployments are applied.
Resource Filtering: When a release is created, Ctrlplane uses the
environment’s label filters to identify matching resources. It then runs the
appropriate jobs for each of these resources.
Inter-Environment Policies: Environments are connected by policies that
determine when and how jobs should run. These policies control the
progression of deployments through environments (e.g., from Staging to
Production).
Deployments can be created and managed in two primary ways:
Manual Creation: Through the Ctrlplane UI or API, specifying the system
it belongs to.
Automated Creation: By including a .ctrlplane.yaml file in your Git
repository. This method allows for automatic deployment creation when new
repositories are added, with system assignment specified in the
configuration.