README
¶
Introduction
Fleet is GitOps at scale. Fleet is designed to manage up to a million clusters. It's also lightweight enough that it works great for a single cluster too, but it really shines when you get to a large scale. By large scale we mean either a lot of clusters, a lot of deployments, or a lot of teams in a single organization.
Fleet can manage deployments from git of raw Kubernetes YAML, Helm charts, or Kustomize or any combination of the three. Regardless of the source all resources are dynamically turned into Helm charts and Helm is used as the engine to deploy everything in the cluster. This gives a high degree of control, consistency, and auditability. Fleet focuses not only on the ability to scale, but to give one a high degree of control and visibility to exactly what is installed on the cluster.
Quick Start
Who needs documentation, let's just run this thing!
Install
Get helm if you don't have it. Helm 3 is just a CLI and won't do bad insecure things to your cluster.
brew install helm
Install the Fleet Helm charts (there's two because we separate out CRDs for ultimate flexibility.)
VERSION=0.3.9
helm -n cattle-fleet-system install --create-namespace --wait \
fleet-crd https://github.com/rancher/fleet/releases/download/v${VERSION}/fleet-crd-${VERSION}.tgz
helm -n cattle-fleet-system install --create-namespace --wait \
fleet https://github.com/rancher/fleet/releases/download/v${VERSION}/fleet-${VERSION}.tgz
Add a Git Repo to watch
Change spec.repo
to your git repo of choice. Kubernetes manifest files that should
be deployed should be in /manifests
in your repo.
cat > example.yaml << "EOF"
apiVersion: fleet.cattle.io/v1alpha1
kind: GitRepo
metadata:
name: sample
# This namespace is special and auto-wired to deploy to the local cluster
namespace: fleet-local
spec:
# Everything from this repo will be ran in this cluster. You trust me right?
repo: "https://github.com/rancher/fleet-examples"
paths:
- simple
EOF
kubectl apply -f example.yaml
Get Status
Get status of what fleet is doing
kubectl -n fleet-local get fleet
You should see something like this get created in your cluster.
kubectl get deploy frontend
NAME READY UP-TO-DATE AVAILABLE AGE
frontend 3/3 3 3 116m
Enjoy and read the docs.
For developer and maintainer documentation, see DEVELOPING.md.
Directories
¶
Path | Synopsis |
---|---|
cmd
|
|
fleetagent
Package main is the entrypoint for the fleet-agent binary.
|
Package main is the entrypoint for the fleet-agent binary. |
fleetcontroller
Package main provides the entrypoint for the fleet-controller binary (fleetcontroller)
|
Package main provides the entrypoint for the fleet-controller binary (fleetcontroller) |
e2e
|
|
testenv
Package testenv contains common helpers for tests
|
Package testenv contains common helpers for tests |
testenv/kubectl
Package kubectl is a wrapper around the kubectl CLI
|
Package kubectl is a wrapper around the kubectl CLI |
testenv/infra
Module
|
|
modules
|
|
agent/pkg/agent
Package agent provides the agent controller.
|
Package agent provides the agent controller. |
agent/pkg/controllers
Package controllers wires and starts the controllers for the agent.
|
Package controllers wires and starts the controllers for the agent. |
agent/pkg/controllers/bundledeployment
Package bundledeployment deploys bundles, monitors them and cleans up.
|
Package bundledeployment deploys bundles, monitors them and cleans up. |
agent/pkg/controllers/cluster
Package cluster updates the cluster.fleet.cattle.io status in the upstream cluster with the current node status.
|
Package cluster updates the cluster.fleet.cattle.io status in the upstream cluster with the current node status. |
agent/pkg/simulator
Package simulator simulates multiple agents on the same cluster.
|
Package simulator simulates multiple agents on the same cluster. |
agent/pkg/trigger
Package trigger watches a set of deployed resources and triggers a callback when one of them is deleted.
|
Package trigger watches a set of deployed resources and triggers a callback when one of them is deleted. |
cli/apply
Package apply creates bundle resources from gitrepo resources (fleetapply)
|
Package apply creates bundle resources from gitrepo resources (fleetapply) |
cli/cmds
Package cmds sets up the CLI commands for the fleet apply binary.
|
Package cmds sets up the CLI commands for the fleet apply binary. |
cli/match
Package match is used to test matching a bundles to a target on the command line.
|
Package match is used to test matching a bundles to a target on the command line. |
cli/pkg/writer
Package writer provides a writer that can be used to write to a file or stdout.
|
Package writer provides a writer that can be used to write to a file or stdout. |
pkg
|
|
agent
Package agent builds manifests for creating a managed fleet-agent.
|
Package agent builds manifests for creating a managed fleet-agent. |
bundlereader
Package bundlereader creates a bundle from a source and adds all the referenced resources, as well as image scans.
|
Package bundlereader creates a bundle from a source and adds all the referenced resources, as well as image scans. |
connection
Package connection provides a connection to a Kubernetes cluster, used when importing a cluster.
|
Package connection provides a connection to a Kubernetes cluster, used when importing a cluster. |
controllers
Package controllers sets up the controllers for the fleet-controller.
|
Package controllers sets up the controllers for the fleet-controller. |
controllers/bundle
Package bundle registers a controller for Bundle objects.
|
Package bundle registers a controller for Bundle objects. |
controllers/cleanup
Package cleanup provides a controller that cleans up resources that are no longer needed.
|
Package cleanup provides a controller that cleans up resources that are no longer needed. |
controllers/cluster
Package cluster provides controllers for managing clusters: status changes, importing, bootstrapping.
|
Package cluster provides controllers for managing clusters: status changes, importing, bootstrapping. |
controllers/clustergroup
Package clustergroup provides a controller to update the ClusterGroup resource status.
|
Package clustergroup provides a controller to update the ClusterGroup resource status. |
controllers/clusterregistration
Package clusterregistration implements manager-initiated and agent-initiated registration.
|
Package clusterregistration implements manager-initiated and agent-initiated registration. |
controllers/clusterregistrationtoken
Package clusterregistrationtoken provides a controller for ClusterRegistrationToken.
|
Package clusterregistrationtoken provides a controller for ClusterRegistrationToken. |
controllers/config
Package config reads the initial global configuration.
|
Package config reads the initial global configuration. |
controllers/content
Package content purges orphaned content objects by inspecting bundledeployments in all namespaces.
|
Package content purges orphaned content objects by inspecting bundledeployments in all namespaces. |
controllers/display
Package display provides controllers that update the status fields on several resources.
|
Package display provides controllers that update the status fields on several resources. |
controllers/git
Package git implements a controller that watches for GitRepo objects.
|
Package git implements a controller that watches for GitRepo objects. |
controllers/image
Package image registers a controller for image scans.
|
Package image registers a controller for image scans. |
controllers/manageagent
Package manageagent provides a controller for managing the agent bundle.
|
Package manageagent provides a controller for managing the agent bundle. |
display
Package display accumulates the resources for the gitrepo status from bundles.
|
Package display accumulates the resources for the gitrepo status from bundles. |
fleetcontroller
Package fleetcontroller registers the fleet controller.
|
Package fleetcontroller registers the fleet controller. |
fleetyaml
Package fleetyaml provides utilities for working with fleet.yaml files, which are the central yaml files for bundles.
|
Package fleetyaml provides utilities for working with fleet.yaml files, which are the central yaml files for bundles. |
manifest
Package manifest manages content resources, which contain all the resources for a deployed bundle.
|
Package manifest manages content resources, which contain all the resources for a deployed bundle. |
options
Package options merges the BundleDeploymentOptions
|
Package options merges the BundleDeploymentOptions |
secret
Package secret gets or creates service account secrets for cluster registration.
|
Package secret gets or creates service account secrets for cluster registration. |
summary
Package summary provides a summary of a bundle's state.
|
Package summary provides a summary of a bundle's state. |
target
Package target provides functionality around building and deploying bundledeployments.
|
Package target provides functionality around building and deploying bundledeployments. |
apis
Module
|