Skip to content

Commit

Permalink
clean up docs more
Browse files Browse the repository at this point in the history
  • Loading branch information
jsbroks committed Sep 16, 2024
1 parent 2c32267 commit a757801
Show file tree
Hide file tree
Showing 4 changed files with 213 additions and 119 deletions.
132 changes: 83 additions & 49 deletions apps/docs/pages/core-concepts/deployments.mdx
Original file line number Diff line number Diff line change
@@ -1,66 +1,100 @@
import { Callout } from "nextra/components";
# Understanding Deployments in Ctrlplane

# Deployments
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.

Deployments are the core component of Ctrlplane, orchestrating the delivery of
your applications across various environments and targets. They encapsulate the
configuration, workflows, and triggers required to automate and manage the
entire release lifecycle.
## What is a Deployment?

## Key Components
A deployment in Ctrlplane is:

A Ctrlplane deployment consists of:
1. **A Logical Unit**: It typically represents a single service, application, or
piece of infrastructure.

- **System:** High-level categorization (e.g., "Microservices," "Data Pipeline")
- **Release:** Specific version or build to be deployed
- **Environments:** Deployment stages (e.g., "Dev," "Staging," "Prod")
- **Targets:** Deployment destinations (e.g., K8s clusters, VM groups, FaaS)
- **Workflows:** Automated tasks executed during deployment
- **Job Agents:** Integrations triggering external CI/CD pipelines
- **Policies (Optional):** Rules governing the deployment process
2. **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.

## Deployment Process
3. **Version Control**: It manages multiple releases (versions) of your software
or infrastructure configuration.

1. **Release Creation:** Initiate a new release with version/build number
2. **Workflow Triggering:** Automatic activation of environment-specific workflows
3. **Job Agent Activation:** Triggers sent to external CI/CD systems
4. **Pipeline Execution:** External systems deploy to specified targets
5. **Status Tracking:** Real-time monitoring of deployment progress
4. **Pipeline Definition**: It includes a defined CI/CD pipeline that outlines
the steps for building, testing, and deploying your changes.

<Callout type="info">
Best practice: Use a single deployment with a pipeline supporting multiple
targets, rather than separate deployments for each target.
</Callout>
5. **Release Manager**: It groups and organizes releases, providing a historical
view of all deployments.

## Key Benefits
## Key Components of a Deployment

- **Automation:** Minimizes manual intervention and error potential
- **Flexibility:** Supports various deployment strategies and complexities
- **Integration:** Seamless connection with existing CI/CD toolchains
- **Visibility:** Real-time deployment status and progress tracking
- **Control:** Policy enforcement and approval workflows
A deployment in Ctrlplane typically includes:

## Example: Microservices Deployment
1. **Releases**: Individual versions of your software or infrastructure
configuration.

Consider a microservices architecture with environments (Dev, Staging, Prod) and
multiple regional Kubernetes clusters. Configure a Ctrlplane deployment with:
2. **CI/CD Pipeline**: The defined process for deploying releases.

1. System: "Microservices Platform"
2. Environments: Dev, Staging, Prod
3. Targets: Regional K8s clusters
4. Job Agents: Configured for GitLab CI/CD
5. Policies: Require approvals for Staging and Prod
3. **System and Environment Association**: The deployment is part of all
environments within its assigned system, allowing for consistent deployment
across different stages.

When creating a release, Ctrlplane orchestrates:
4. **Job Configurations**: Specifications for the jobs that will be created and
run for each release and target.

1. Dev deployment via GitLab CI/CD
2. Staging deployment after approval
3. Production rollout across regions
5. **Variables**: Target-specific variables that allow the same pipeline to
be used across different environments.

## Key Takeaways
## Systems, Environments, and Target Filtering

- Deployments centralize release management across diverse environments and
systems
- Ctrlplane complements existing CI/CD tools, providing higher-level
orchestration
- Achieve streamlined, efficient, and reliable deployment processes at scale
Ctrlplane uses a hierarchical structure to manage deployments:

1. **Systems**: The top-level organizational unit. A system contains multiple
environments and is associated with one or more deployments.

2. **Environments**: Subsets of a system (e.g., QA, Staging, Production). Each
environment can be configured with specific settings and policies.

3. **Environment Configuration**: Each environment is configured with label
filters to determine which targets fall under that environment. This allows
for fine-grained control over where deployments are applied.

4. **Target Filtering**: When a release is created, Ctrlplane uses the
environment's label filters to identify matching targets. It then runs the
appropriate jobs for each of these targets.

5. **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).

## Deployment Workflow

1. **Deployment Creation**: A deployment is created and assigned to a system.

2. **Release Initiation**: A new release is created within the deployment.

3. **Environment Processing**: For each environment in the system:

- The environment's label filters are applied to identify relevant targets.
- Jobs are created for each matching target based on the deployment's job
definitions.

4. **Policy Enforcement**: Inter-environment policies determine when jobs can
run, allowing for controlled progression through environments.

5. **Job Execution**: Jobs are executed on the identified targets, applying the
release changes.

## Creating and Managing Deployments

Deployments can be created and managed in two primary ways:

1. **Manual Creation**: Through the Ctrlplane UI or API, specifying the system
it belongs to.

2. **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.

Example `.ctrlplane.yaml`:
125 changes: 74 additions & 51 deletions apps/docs/pages/core-concepts/systems.mdx
Original file line number Diff line number Diff line change
@@ -1,56 +1,79 @@
# Systems

In Ctrlplane, a system is a high-level abstraction for organizing and managing
related deployments. It's designed to streamline your CI/CD pipelines and
enforce consistency across your infrastructure.

## Key Concepts

- **Logical Grouping:** Systems categorize deployments based on shared
attributes or purposes.
- **Environment Standardization:** All deployments within a system use the same
set of environments (e.g., Dev, QA, Staging, Production).
- **Policy Enforcement:** Systems apply uniform environment policies across all
associated deployments.

## Benefits for DevOps

1. **Scalable Management:** Centralize environment and policy configurations at
the system level, reducing overhead when managing multiple deployments.
2. **Consistent Workflows:** Ensure standardized deployment processes across
related projects.
3. **Simplified Governance:** Implement and enforce policies uniformly across
all deployments within a system.
4. **Efficient Onboarding:** Quickly set up new deployments with pre-configured
environments and policies.

## Implementation

1. **System Creation:** Define a system with its required environments (e.g.,
Dev, QA, Staging, Production).
2. **Policy Configuration:** Set up environment policies at the system level
(e.g., approval processes, security checks, deployment windows).
3. **Deployment Association:** Link deployments to the appropriate system,
automatically inheriting its environments and policies.
Systems in Ctrlplane are the highest level of organizational units, designed to
group related deployments and environments together. They provide a structured
approach to managing complex deployment pipelines and enforcing consistency
across your infrastructure.

## Key Features of Systems

- **Deployment Organization:** Systems contain information about all associated
deployments, allowing for centralized management.
- **Environment Standardization:** All deployments within a system share the
same set of environments, ensuring consistency across the deployment pipeline.
- **Scalability:** Systems can accommodate as many deployments and environments
as needed, supporting growth and complexity in your infrastructure.
- **Deployment Cycle Alignment:** Commonly used to group applications with
similar deployment cycles, facilitating coordinated releases.
- **Access Control:** Systems provide a natural boundary for implementing
role-based access control (RBAC) policies.

## System Structure

1. **Deployments:** Each system can contain multiple deployments, representing
different applications or services.
2. **Environments:** Systems define a set of environments (e.g., Development,
QA, Staging, Production) that are shared across all associated deployments.
3. **Policies:** System-level policies can be applied to govern deployment
processes across all included deployments and environments.
4. **Configurations:** Shared configurations can be defined at the system level
and inherited by deployments.

## Benefits of Using Systems

- **Consistency:** Enforce uniform environments and deployment processes across
related projects.
- **Simplified Management:** Centralize configuration and policy management at
the system level.
- **Efficient Onboarding:** Quickly set up new deployments with pre-configured
environments and policies.
- **Coordinated Releases:** Facilitate synchronized deployments for applications
with interdependencies.
- **Improved Visibility:** Gain a holistic view of related deployments and their
statuses.
- **Streamlined Governance:** Apply security and compliance policies
consistently across all deployments within a system.

## Best Practices

- Group deployments logically based on application, team, or business function.
- Regularly review and update system-level policies to maintain security and
compliance.
- Use systems to enforce standardization across your organization's deployment
processes.
- Leverage system-level configurations to implement infrastructure-as-code
principles for your CI/CD pipelines.

## Integration Points

- CI/CD Tools: Systems can be integrated with popular CI/CD tools to enforce
policies and standardize deployment workflows.
- Infrastructure-as-Code: Use Ctrlplane's API or CLI to programmatically manage
systems and their configurations.
- Monitoring and Logging: Implement consistent monitoring and logging practices
across all deployments within a system.

By leveraging Ctrlplane's systems, DevOps engineers can achieve greater
consistency, scalability, and control over their deployment processes.
1. **Logical Grouping:** Create systems based on application domains, teams, or
deployment cycles.
2. **Standardized Environments:** Define a consistent set of environments that
make sense for your development and release processes.
3. **Policy Enforcement:** Implement system-wide policies to ensure compliance
and security across all deployments.
4. **Regular Review:** Periodically assess and update system configurations to
align with evolving organizational needs.

## Example Use Case

A typical use of systems might involve grouping all microservices for a
particular product:

- **System:** "E-commerce Platform"
- **Environments: **Dev, QA, Staging, Production
- **Deployments:**
- User Authentication Service
- Product Catalog Service
- Order Processing Service
- Payment Gateway Service
- **Shared Configurations:**
- Database connection strings
- API gateway settings
- **System-wide Policies:**
- Automated rollback on failed deployments
- Required approvals for production deployments

By organizing these services under one system, you ensure they all progress
through the same environments and adhere to consistent deployment policies,
facilitating a coordinated release process for the entire e-commerce platform.
68 changes: 51 additions & 17 deletions apps/docs/pages/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,8 @@ import { TbBook, TbPlug, TbServer } from "react-icons/tb";
# Ctrlplane Documentation

Ctrlplane is a powerful [open-source](https://github.com/sizzldev/ctrlplane)
deployment orchestration platform designed to elevate your existing CI/CD
workflow. It offers centralized control, intelligent automation, and seamless
integrations to simplify and optimize even the most intricate release processes.
deployment orchestration platform that automates multi-cloud, multi-region, and
multi-service software deployments, leveraging your existing CI/CD systems.

<Cards>
<Card
Expand All @@ -31,22 +30,57 @@ integrations to simplify and optimize even the most intricate release processes.
/>
</Cards>

## Why Ctrlplane
## Why Ctrlplane?

- **Unified Control:** Centralize management of multi-stage deployment pipelines
across diverse environments.
- **Flexible Target Support:** Deploy to Kubernetes, cloud functions, VMs, or
custom infrastructure from a single platform.
- **Advanced Workflow Orchestration:** Automate sophisticated deployment
processes including testing, code analysis, security scans, and approval
gates.
- **CI/CD Integration:** Seamlessly connects with Jenkins, GitLab CI, GitHub
Actions, and other popular CI tools to trigger deployments.
- **Environment Management:** Efficiently handle transitions between dev, test,
staging, and production environments.
Ctrlplane is designed to solve complex deployment challenges in modern,
distributed software environments. Here's why you should consider Ctrlplane for
your deployment orchestration needs:

### Unified Orchestration

- **Multi-Cloud Support**: Seamlessly manage deployments across various cloud
providers.
- **Multi-Region Coordination**: Orchestrate releases across different
geographical regions with ease.
- **Multi-Service Deployments**: Coordinate complex deployments involving
multiple interconnected services.

### Integration with Existing Tools

- **CI/CD Agnostic**: Works with your current CI/CD pipelines (GitHub Actions,
GitLab CI, Jenkins, etc.).
- **Non-Disruptive**: Enhances your existing workflow without requiring a
complete overhaul.

### Advanced Deployment Strategies

- **Sophisticated Rollouts**: Implement complex deployment patterns like canary
releases and blue-green deployments.
- **Fine-grained Control**: Use labels and target groups for precise deployment
targeting.

### Scalability and Flexibility

- **Handles Complexity**: Designed to manage thousands of deployments
efficiently.
- **Customizable Workflows**: Adapt to your specific deployment needs and
processes.

### Improved Visibility and Control

- **Centralized Dashboard**: Get a unified view of all your deployments across
different platforms.
- **Real-time Monitoring**: Track the status of your deployments in real-time.

### Open Source Advantage

- **Transparency**: Fully open-source, allowing you to inspect and contribute to
the codebase.
- **Community-Driven**: Benefit from community integrations.

## Need Help?

If you’re unsure whether Ctrlplane is the ideal solution for your needs, feel
free to reach out to the Ctrlplane team via [Discord](https://ctrlplane.dev/discord). You can connect with the
community and receive helpful guidance.
free to reach out to the Ctrlplane team via
[Discord](https://ctrlplane.dev/discord). You can connect with the community and
receive helpful guidance.
7 changes: 5 additions & 2 deletions apps/docs/pages/quickstart.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,12 @@

## What is Ctrlplane?

Ctrlplane is an extensible, open-source CI/CD orchestration tool that helps developers scale their deployments for multi-cloud, multi-region, and multi-service software architectures.
Ctrlplane is an extensible, open-source CI/CD orchestration tool that helps
developers scale their deployments for multi-cloud, multi-region, and
multi-service software architectures.

With a wide range of out-of-the-box integrations, Ctrlplane easily connects with your existing tools and services, simplifying deployment scaling.
With a wide range of out-of-the-box integrations, Ctrlplane easily connects with
your existing tools and services, simplifying deployment scaling.

Using Ctrlplane, you can:

Expand Down

0 comments on commit a757801

Please sign in to comment.