Skip to content

Epic: Enhance Fleet CLI #3771

@manno

Description

@manno

Goal: To empower users with a command-line interface for managing Fleet, enhance automation capabilities and accelerate troubleshooting.

1. Seamless Cluster Lifecycle Management

As a Platform Administrator, I want to easily register a new Kubernetes cluster with Fleet and remove an existing one using CLI commands, so that I can automate the provisioning and de-provisioning of cluster resources, integrate it into CI/CD pipelines, and manage my fleet's scale efficiently without manual intervention in a UI.

Acceptance Criteria:

  • A fleet cluster register <cluster-name> --kubeconfig <path-to-kubeconfig> [--labels key=value,...] command exists.

    • It registers the cluster with the Fleet control plane, applying any specified labels.
      • Should this wait for the operation to complete?
    • The command should be idempotent (re-running on an already registered cluster with the same parameters should result in no change or a successful state).
  • A fleet cluster remove <cluster-name> [--force] command exists.

    • The command gracefully uninstalls the Fleet agent from the target cluster.
    • It unregisters the cluster from the Fleet control plane.
      • Should this wait for the operation to complete?
    • The --force option allows removal even if the agent is unresponsive.
  • fleet cluster list shows registered clusters and their agent connection status.
    (if it is an improvement over kubectl list clusters)

2. Comprehensive Resource Visibility and Inspection

As a Developer or Operations Engineer, I want to quickly list and view the status of all Fleet-managed resources (including Bundles, GitRepos, HelmOps, BundleDeployments, etc.) directly from the CLI, so that I can gain insights into the deployment state, configuration, and health of my applications and infrastructure across the entire fleet or specific clusters.

Acceptance Criteria:

  • fleet get cluster <cluster-name>:

    • Checks agent pod status, logs, and connectivity to the Fleet control plane.
    • Verifies RBAC permissions and necessary configurations on the member cluster.
    • Reports on cluster registration status and health.
  • fleet get bundle <bundle-name> [-n namespace]:

    • Checks the status of BundleDeployment resources associated with the bundle.
    • Verifies that all resources defined in the bundle are correctly applied/progressing on target clusters.
    • Identifies unmet dependencies (e.g., other bundles, resources).
    • Shows recent events and errors related to the bundle.
  • fleet get gitrepo <gitrepo-name> [-n namespace]:

    • Checks sync status, recent commit processing, and any errors during reconciliation.
    • Verifies connectivity to the Git repository.
  • Output formatting options (wide for more columns, yaml for full resource definition, json).

3. Proactive Configuration Validation

As a DevOps Engineer or Developer, I want to validate the syntax and semantic correctness of my fleet.yaml (and other Fleet configuration files) locally via a CLI command before committing changes to version control, so that I can catch configuration errors early, prevent deployment failures, reduce debugging time, and ensure my configurations adhere to best practices and Fleet's schema.

Acceptance Criteria:

  • A fleet validate -f <path-to-fleet.yaml> command exists.

    • The command checks for correct YAML syntax.
    • It validates the file against the known schema.
    • It checks for common misconfigurations or deprecated fields.
  • The command provides clear, actionable error messages, indicating the problematic file, line number, and a description of the issue.

  • A successful validation returns a confirmation message and a zero exit code, making it suitable for integration into pre-commit hooks and CI/CD pipelines.

4. Granular Workload Distribution and Balancing Control

As a Site Reliability Engineer (SRE) or Platform Architect, I want to precisely control workload placement by managing sharding labels on GitRepos and Clusters, and initiate or observe autobalancing operations via the CLI, so that I can optimize resource utilization, ensure high availability, and manage workload distribution strategies effectively across my fleet.

Acceptance Criteria:

  • A command like fleet sharding status [--namespace <system-namespace>] shows the current state of sharding and if rebalancing is in progress or recommended.
  • A command like fleet sharding autobalance [--namespace <system-namespace>] initiates a rebalancing check/process.

5. Intelligent Troubleshooting and Diagnostics

Run a comprehensive diagnostic CLI command that helps troubleshoot common issues

6. Generate BundleDiff From Status

Command to generate bundle diffs from resource status. Resource status already contains the needed patch.

7. Scaffolding GitRepos

Like 'helm init', create the content of a Git repo that can be used as a base for GitOps.


This issue should provide a solid foundation for your UX team to start designing the CLI interactions and user experience.

Sub-issues

Metadata

Metadata

Assignees

No one assigned

    Projects

    Status

    To Triage

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions