A curated list of minimal reproducible examples, usable via SUSE Rancher Fleet. All assets are quick and minimal, focusing on a local lab environment. Customization with flexible config through secrets or downstream cluster ConfigMap objects. By default the options for the Bundles, or snippets, recipes, are opnionated towards operational efficiency, proof-of-concepts or pilot experiments.
Unlike other "awesome-something" lists, the role of Fleet is as a facilitator for gitops operations with the repository using fleet-focused conventions and formatting.
- Fork the repository
- Add a git remote with a unique name for your new fork
- (Optional) Create a branch for your changes and testing
- (Optional) Create Pull Requests (PRs) in GitHub for submitting your branch changes
- If you have Rancher installed, you already have a Fleet Controller on the Local Cluster
- The UI option for Continuous Delivery is Fleet's "SailBoat" icon
- connections established to Downstream Clusters with their Fleet-Agent
- For each project, create one or more
GitReporesources, seeGenericExample-ClusterGroup.yamlandGenericExample-GitRepo.yamlin the main repo root folder- more examples under
/misc/location/parslab/sublevel/fleet-controller
- more examples under
- Each GitRepo can have one or more paths to where the recipes live under your new forked repo
- Assign
Clusters(clusters.fleet.cattle.io) toClusterGroupswith labels- Fleet pulls the repo data with a
GitJob, then createsBundlesfromfleet.yamlfiles for HelmCharts & Kustomizations
- Fleet pulls the repo data with a
- Final result is a
BundleDeploymentsent and deployed by the fleet-agent in the Downstream cluster for the target defined in theClusterGroup- Here Target is a reference to a downstream Cluster and/or Namespaces on that cluster, depending on wether
Bundlesneed to deploy namespaced or cluster-wide resources
- Here Target is a reference to a downstream Cluster and/or Namespaces on that cluster, depending on wether
CRD Flow
Each snippet or recipe relies on Fleet CRDs to generate and deilver a Bundle to the target Clusters.
- See the Fleet CRD workflow outlined in the diagram below.
See the Fleet docs about bundle lifecycle stages for more information.
- Infra - infrastructure-related assets, including CNI configurations, K8s distributions, dual-stack, and ingresses.
- Misc - any example or asset that does not fit into other categories, or upstream open source projects that might be covered in AppCo.
- Security - security-focused and other related topics, secrets, service mesh, mtls.
- Storage - CSI-related assets, homelab-focused storage options like minio and NFS.
- Vendor - any vendor-specific assets which may or may not be open source, or have a vendor-component in the asset, manifests, or charts. The primary example is Application Collection.
- Avoid longer names for labels and charts with a 63 character limit. Achieved through
helm.releaseNameoption. - Avoid clobbering existing resources, through use of
helm.takeOwnership: falseoption, for example when a Bundle is deployed into a pre-existing Namespace. - Use of Kustomization configuration options for safer deployment and targeting.
- Day Two operations respecting existing Namespaces, Secrets and ConfigMap resources for targeted ClusterGroups.
Next Steps
- Future bundle topics like Elemental, GatewayAPI, ClusterAPI
- wrap-up and enduser testing, teammate feedback for QA
- QA, unit tests for charts and bundle templates
