4.8 KiB
Install and Use Fleet CLI
Fleet CLI is a command-line interface(CLI) that allows you to interact directly with Fleet from your local machine. It enables you to create, apply and inspect bundles without requiring a GitRepo. Typical use cases include:
- Testing and previewing
bundlecontents. - Creating bundles directly from Helm charts, Kubernetes manifests and
fleet.yamlfiles. - Checking which clusters a
bundlewould target - Validating deployments without installing Fleet in the cluster
:::note
You can use fleet apply without installing Fleet in your clusters. However, for cluster interaction (for example, fleet target, fleet deploy), Fleet must be installed. For more information, refer to Install Fleet.
:::
Install Fleet CLI
Fleet CLI is a stand-alone binary you can download from the Fleet GitHub releases page.
Linux/macOS
curl -L -o fleet https://github.com/rancher/fleet/releases/download/v0.12.4/fleet-linux-amd64
# Make it executable and move to PATH
chmod +x fleet
sudo mv fleet /usr/local/bin/
Windows (PowerShell)
Invoke-WebRequest -Uri "https://github.com/rancher/fleet/releases/download/v0.12.4/fleet-windows-amd64.exe" -OutFile "fleet.exe"
Verify installation
fleet --version
Prerequisites
Make sure you have the following tools installed and configured:
- A working Kubernetes cluster (e.g., via k3s, kind, or a cloud provider).
kubectlis configured for your cluster.- helm is installed.
- Fleet CLI is installed and accessible in your terminal.
Verify prerequisites
kubectl get nodes
helm version
fleet --version
Key commands
Fleet provides several CLI commands to create, preview, and deploy bundles. These commands are useful for debugging and understanding the bundle lifecycle.
fleet target: Reads a bundle file and evaluates which clusters would receive it, based on selectors and targeting rules such astargets,targetOverrides,clusterGroups, andlabelselectors.- For example,
fleet target my-bundle ./manifests.
- For example,
fleet apply: creates or previews abundlefrom local files, such as a Helm chart, Kubernetes manifests, or kustomize folders. This command works even without Fleet installed.- This applies for
fleet.yaml, Helm charts and manifests. For example,fleet apply my-bundle ./manifests.
- This applies for
fleet deploy: deploys abundlewith or without pushing it to the cluster. You can use it with the output of fleet target or a dumped bundledeployment/content resource. You can use it for:fleet apply -o - name ./folderto check the YAML of the bundle before creating it. For more information, refer to as in Convert a Helm chart into a bundle.- Target to debug selectors and verify which downstream clusters are targeted.
fleet deploy --dry-runto validate workload resources.
For more information, refer to Bundle Lifecycle With the CLI.
Deploy a Sample Bundle Using Fleet CLI
You can deploy workloads without using GitRepos by applying them locally with the CLI. For example, consider using the Fleet examples repository.
git clone https://github.com/rancher/fleet-examples
cd fleet-examples/single-cluster
Apply it to the current cluster:
fleet apply -o my-cool-bundle manifests
This creates a Bundle resource in the namespace.
Convert a Helm Chart into a Bundle
You can use the Fleet CLI to convert a Helm chart into a bundle.
For example, you can download and convert the "external secrets" operator chart like this:
cat > targets.yaml <<EOF
targets:
- clusterSelector: {}
EOF
mkdir app
cat > app/fleet.yaml <<EOF
defaultNamespace: external-secrets
helm:
repo: https://charts.external-secrets.io
chart: external-secrets
EOF
fleet apply --compress --targets-file=targets.yaml -n fleet-default -o - external-secrets app > eso-bundle.yaml
kubectl apply -f eso-bundle.yaml
Make sure you use a cluster selector in targets.yaml, that matches all clusters you want to deploy to.
The blog post on Fleet: Multi-Cluster Deployment with the Help of External Secrets has more information.
Troubleshooting
If the bundle is not ready:
- Check if
fleet-controllerandfleet-agentpods are running. - Make sure the
fleet-localcluster is registered: - Inspect the bundle for error messages:
kubectl describe bundle -n fleet-local nginx-bundle
- Delete and re-apply the bundle if you encounter Helm ownership conflicts.