From 6930d60802dc2ff7fd1e19d89f1f7b1b04582d91 Mon Sep 17 00:00:00 2001 From: hridyesh bisht Date: Tue, 20 May 2025 12:50:52 +0530 Subject: [PATCH 1/8] Adding information about quick start and persona --- docs/persona.md | 7 + docs/quickstart.md | 155 ++++++++++++++---- ...w-clusterSelector-targetCustomizations.png | Bin 0 -> 26405 bytes static/img/file-structure-sample-ss.png | Bin 0 -> 4218 bytes static/img/rancher-gitrepos-ss.png | Bin 0 -> 46122 bytes 5 files changed, 132 insertions(+), 30 deletions(-) create mode 100644 docs/persona.md create mode 100644 static/img/Flow-clusterSelector-targetCustomizations.png create mode 100644 static/img/file-structure-sample-ss.png create mode 100644 static/img/rancher-gitrepos-ss.png diff --git a/docs/persona.md b/docs/persona.md new file mode 100644 index 000000000..9c40a78ca --- /dev/null +++ b/docs/persona.md @@ -0,0 +1,7 @@ +# Key Personas and Their Roles + +| Persona | Responsibilities | Key Benefits | +| --- | ----- | ----- | +| Platform Engineers | Set up and manage Fleet installation across clusters
Define and enforce multi-cluster application and policy deployments
Manage GitRepo and fleet.yaml configurations
Perform cluster-wide updates and rollbacks | Centralized control across clusters
Improved standardization and compliance | +| Application Developers | Structure application Helm charts or manifests in Git
Define deployment targets and environments in `fleet.yaml`
Monitor deployment status via UI or CLI | GitOps-based workflows
Faster, automated, and consistent deployments across environments | +| Security Administrators | Define and enforce security policies as code-
Deploy security tools and configurations
Audit and manage security posture across clusters | Reduced risk and centralized compliance management
Automated, consistent security configuration | \ No newline at end of file diff --git a/docs/quickstart.md b/docs/quickstart.md index 12ed8d0f2..13872e6e1 100644 --- a/docs/quickstart.md +++ b/docs/quickstart.md @@ -5,17 +5,16 @@ import TabItem from '@theme/TabItem'; # Quick Start -![](/img/single-cluster.png) - -Who needs documentation, lets just run this thing! +![Image displaying the flow of single cluster with Fleet](/img/single-cluster.png) ## Install - Fleet is distributed as a Helm chart. Helm 3 is a CLI, has no server side component, and its use is - fairly straightforward. To install the Helm 3 CLI follow the official install instructions. +Fleet is distributed as a Helm chart. Helm 3 is a CLI, has no server side component, and its use is +fairly straightforward. To install the Helm 3 CLI follow the official install instructions. +Fleet enables continuous delivery of Kubernetes workloads across multiple clusters using a GitOps model. In this guide, you would be deploying a basic NGINX Pod using fleet.yaml . -:::caution Fleet in Rancher +:::caution Rancher has separate helm charts for Fleet and uses a different repository. ::: @@ -43,47 +42,143 @@ Install the Fleet Helm charts (there's two because we separate out CRDs for ulti fleet/fleet`} +To verify installation, run: + +`kubectl get pods -n cattle-fleet-system` + ## 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. +Specify the Git repositories containing your deployment manifests or Helm charts. For hello world, example you need: +* deployment.yaml for defining workload +* fleet.yaml for how should fleet control the deployment +* Gitrepo.yaml for where to find your git repo, which branch and sub-path to monitor. + * (optionally) You can also add credentials -```bash -cat > example.yaml << "EOF" +Structure your repository like this: + +![Screenshot displaying the file directory](/img/file-structure-sample-ss.png) + +**deployment.yaml** + +```yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: nginx +spec: + replicas: 1 + selector: + matchLabels: + app: nginx + template: + metadata: + labels: + app: nginx + spec: + containers: + - name: nginx + image: nginx:latest +``` + +**fleet.yaml** +```yaml +defaultNamespace: hello-world +targets: + - name: all-dev-clusters + clusterSelector: + matchLabels: + env: dev +``` +Your fleet.yaml can use: +* clusterSelector: target clusters by labels (e.g., env=dev) +* targetCustomizations: override values or files per cluster. + +This gives fine-grained control over how workloads are rolled out. For more information, refer to [fleet-yaml](ref-fleet-yaml.md). + +**gitrepo.yaml** + +```yaml 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 + name: hello-world-repo + namespace: cattle-fleet-system spec: - # Everything from this repo will be run in this cluster. You trust me right? - repo: "https://github.com/rancher/fleet-examples" + repo: https://github.com//my-fleet-repo + branch: main paths: - - simple -EOF - -kubectl apply -f example.yaml + - ./hello-world + # clientSecretName: my-ssh-key-secret ( optional: for private repos) ``` -## Get Status +You can define a GitRepo in YAML, then apply it using kubectl. -Get status of what fleet is doing +`kubectl apply -f gitrepo.yaml` -```shell -kubectl -n fleet-local get fleet -``` +Fleet now watches that path for changes and automatically applies the manifests. -You should see something like this get created in your cluster. +To verify, you can either go to Rancher Desktop. Select **Continuous Delivery > Port Forwarding** to view deployment bundles. +![Screenshot displaying the Rancher Desktop ](/img/rancher-gitrepos-ss.png) + +Or you can run the following command: + +```bash +kubectl get gitrepos -n fleet-default +kubectl get bundles -A ``` -kubectl get deploy frontend -``` -``` -NAME READY UP-TO-DATE AVAILABLE AGE -frontend 3/3 3 3 116m +## Automating Deployments and Scaling + +As your Kubernetes environments grow, you can scale deployments across multiple clusters without increasing pipeline complexity. Use Fleet to automate deployments, apply region-specific configurations, and monitor deployments across environments. + +### Scale with Labels and Targeting + +To target specific clusters, apply labels such as `env=qa` or `region=eu` to your clusters. Use the `clusterSelector` and `targetCustomizations` fields in your `fleet.yaml` file to define which clusters receive which configurations. + +![Diagram displaying flow of target specific clusters](/img/Flow-clusterSelector-targetCustomizations.png) + +Fleet follows a GitOps mode, allowing you to track who made changes and when using your Git history. When you push changes to your Git repository: + +1. Fleet detects the change and evaluates `fleet.yaml` to determine which clusters to target. +1. It deploys the updated resources automatically. + +For example, consider you are deploying hello world to QA environments in Europe and the US. Your clusters are labeled as follows: + +| Cluster Name | Labels | +| ----- | ----- | +| `qa-eu-cluster` | `env=qa`, `region=eu` | +| `qa-us-cluster` | `env=qa`, `region=us` | + +You define deployment logic in `fleet.yaml`: +```yaml +targets: + - name: qa-eu + clusterSelector: + matchLabels: + env: qa + region: eu + helm: + values: + image: + tag: 1.0.0-eu + + - name: qa-us + clusterSelector: + matchLabels: + env: qa + region: us + helm: + values: + image: + tag: 1.0.0-us + ``` +When you push to Git, Fleet: + +* Deploys version `1.0.0-eu` to `qa-eu-cluster` +* Deploys version `1.0.0-us` to `qa-us-cluster` + ## Next steps Do you need to... diff --git a/static/img/Flow-clusterSelector-targetCustomizations.png b/static/img/Flow-clusterSelector-targetCustomizations.png new file mode 100644 index 0000000000000000000000000000000000000000..16ac7fc656266ea57aa22d7de6b44b114deba005 GIT binary patch literal 26405 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 literal 0 HcmV?d00001 diff --git a/static/img/file-structure-sample-ss.png b/static/img/file-structure-sample-ss.png new file mode 100644 index 0000000000000000000000000000000000000000..6beeb9f6de313f54a4ead9449c23071023c38f4b GIT binary patch literal 4218 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

wcXNgbMMa_1d9!^T0qgIkKO=8-m@RYXU|Cv%V$R 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 Date: Tue, 20 May 2025 20:08:44 +0530 Subject: [PATCH 2/8] upading sidebar.js --- sidebars.js | 1 + 1 file changed, 1 insertion(+) diff --git a/sidebars.js b/sidebars.js index 6c7db33e9..f717efc46 100644 --- a/sidebars.js +++ b/sidebars.js @@ -1,6 +1,7 @@ module.exports = { docs: [ 'index', + 'persona', { type: 'category', label: 'Tutorials', From 287721a9c19c85bc955cb25a38669f5395323960 Mon Sep 17 00:00:00 2001 From: kakabisht Date: Thu, 22 May 2025 07:33:48 +0000 Subject: [PATCH 3/8] Fix build error --- docs/persona.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/persona.md b/docs/persona.md index 9c40a78ca..4f0debfbd 100644 --- a/docs/persona.md +++ b/docs/persona.md @@ -2,6 +2,6 @@ | Persona | Responsibilities | Key Benefits | | --- | ----- | ----- | -| Platform Engineers | Set up and manage Fleet installation across clusters
Define and enforce multi-cluster application and policy deployments
Manage GitRepo and fleet.yaml configurations
Perform cluster-wide updates and rollbacks | Centralized control across clusters
Improved standardization and compliance | -| Application Developers | Structure application Helm charts or manifests in Git
Define deployment targets and environments in `fleet.yaml`
Monitor deployment status via UI or CLI | GitOps-based workflows
Faster, automated, and consistent deployments across environments | -| Security Administrators | Define and enforce security policies as code-
Deploy security tools and configurations
Audit and manage security posture across clusters | Reduced risk and centralized compliance management
Automated, consistent security configuration | \ No newline at end of file +| Platform Engineers | Set up and manage Fleet installation across clusters
Define and enforce multi-cluster application and policy deployments
Manage GitRepo and fleet.yaml configurations
Perform cluster-wide updates and rollbacks | Centralized control across clusters
Improved standardization and compliance | +| Application Developers | Structure application Helm charts or manifests in Git
Define deployment targets and environments in `fleet.yaml`
Monitor deployment status via UI or CLI | GitOps-based workflows
Faster, automated, and consistent deployments across environments | +| Security Administrators | Define and enforce security policies as code-
Deploy security tools and configurations
Audit and manage security posture across clusters | Reduced risk and centralized compliance management
Automated, consistent security configuration | \ No newline at end of file From 98383d13a93ac034a751fe47b6827cff81d5e689 Mon Sep 17 00:00:00 2001 From: kakabisht Date: Fri, 23 May 2025 08:18:39 +0000 Subject: [PATCH 4/8] fix visual assets --- docs/quickstart.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/quickstart.md b/docs/quickstart.md index 13872e6e1..0dbb03a92 100644 --- a/docs/quickstart.md +++ b/docs/quickstart.md @@ -5,7 +5,7 @@ import TabItem from '@theme/TabItem'; # Quick Start -![Image displaying the flow of single cluster with Fleet](/img/single-cluster.png) +![Image displaying the flow of single cluster with Fleet](../static/img/single-cluster.png) ## Install @@ -56,7 +56,7 @@ Specify the Git repositories containing your deployment manifests or Helm charts Structure your repository like this: -![Screenshot displaying the file directory](/img/file-structure-sample-ss.png) +![Screenshot displaying the file directory](../static/img/file-structure-sample-ss.png) **deployment.yaml** @@ -119,7 +119,7 @@ Fleet now watches that path for changes and automatically applies the manifests. To verify, you can either go to Rancher Desktop. Select **Continuous Delivery > Port Forwarding** to view deployment bundles. -![Screenshot displaying the Rancher Desktop ](/img/rancher-gitrepos-ss.png) +![Screenshot displaying the Rancher Desktop ](../static/img/rancher-gitrepos-ss.png) Or you can run the following command: @@ -135,7 +135,7 @@ As your Kubernetes environments grow, you can scale deployments across multiple To target specific clusters, apply labels such as `env=qa` or `region=eu` to your clusters. Use the `clusterSelector` and `targetCustomizations` fields in your `fleet.yaml` file to define which clusters receive which configurations. -![Diagram displaying flow of target specific clusters](/img/Flow-clusterSelector-targetCustomizations.png) +![Diagram displaying flow of target specific clusters](../static/img/Flow-clusterSelector-targetCustomizations.png) Fleet follows a GitOps mode, allowing you to track who made changes and when using your Git history. When you push changes to your Git repository: From cb39727282f52a006ae78a4c963100af26e4e521 Mon Sep 17 00:00:00 2001 From: hridyesh bisht <41201308+kakabisht@users.noreply.github.com> Date: Fri, 23 May 2025 15:36:21 +0530 Subject: [PATCH 5/8] Update docs/quickstart.md Co-authored-by: Xavi Garcia --- docs/quickstart.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/quickstart.md b/docs/quickstart.md index 0dbb03a92..bf6c71c25 100644 --- a/docs/quickstart.md +++ b/docs/quickstart.md @@ -12,7 +12,7 @@ import TabItem from '@theme/TabItem'; Fleet is distributed as a Helm chart. Helm 3 is a CLI, has no server side component, and its use is fairly straightforward. To install the Helm 3 CLI follow the official install instructions. -Fleet enables continuous delivery of Kubernetes workloads across multiple clusters using a GitOps model. In this guide, you would be deploying a basic NGINX Pod using fleet.yaml . +Fleet enables continuous delivery of Kubernetes workloads across multiple clusters using a GitOps model. In this guide, you would be deploying a basic NGINX Pod using fleet.yaml. :::caution Rancher has separate helm charts for Fleet and uses a different repository. From 48ae1ac49c0031dac0ea03af2488000577b1d1d5 Mon Sep 17 00:00:00 2001 From: hridyesh bisht <41201308+kakabisht@users.noreply.github.com> Date: Fri, 23 May 2025 15:36:28 +0530 Subject: [PATCH 6/8] Update docs/quickstart.md Co-authored-by: Xavi Garcia --- docs/quickstart.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/quickstart.md b/docs/quickstart.md index bf6c71c25..deee88ad0 100644 --- a/docs/quickstart.md +++ b/docs/quickstart.md @@ -108,7 +108,7 @@ spec: branch: main paths: - ./hello-world - # clientSecretName: my-ssh-key-secret ( optional: for private repos) + # clientSecretName: my-ssh-key-secret (optional: for private repos) ``` You can define a GitRepo in YAML, then apply it using kubectl. From 12c942f7800defe4b69b84f3ef493406c2a18433 Mon Sep 17 00:00:00 2001 From: hridyesh bisht <41201308+kakabisht@users.noreply.github.com> Date: Fri, 23 May 2025 15:36:53 +0530 Subject: [PATCH 7/8] Update docs/quickstart.md Co-authored-by: Xavi Garcia --- docs/quickstart.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/quickstart.md b/docs/quickstart.md index deee88ad0..f215a4f3f 100644 --- a/docs/quickstart.md +++ b/docs/quickstart.md @@ -50,7 +50,7 @@ To verify installation, run: Specify the Git repositories containing your deployment manifests or Helm charts. For hello world, example you need: * deployment.yaml for defining workload -* fleet.yaml for how should fleet control the deployment +* fleet.yaml for how should Fleet control the deployment * Gitrepo.yaml for where to find your git repo, which branch and sub-path to monitor. * (optionally) You can also add credentials From 54af92c809b0857d5ce57833d37c2020fb1df962 Mon Sep 17 00:00:00 2001 From: hridyesh bisht <41201308+kakabisht@users.noreply.github.com> Date: Fri, 23 May 2025 15:37:18 +0530 Subject: [PATCH 8/8] Update docs/quickstart.md Co-authored-by: Xavi Garcia --- docs/quickstart.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/quickstart.md b/docs/quickstart.md index f215a4f3f..03c015abe 100644 --- a/docs/quickstart.md +++ b/docs/quickstart.md @@ -137,7 +137,7 @@ To target specific clusters, apply labels such as `env=qa` or `region=eu` to you ![Diagram displaying flow of target specific clusters](../static/img/Flow-clusterSelector-targetCustomizations.png) -Fleet follows a GitOps mode, allowing you to track who made changes and when using your Git history. When you push changes to your Git repository: +Fleet follows a GitOps model, allowing you to track who made changes and when using your Git history. When you push changes to your Git repository: 1. Fleet detects the change and evaluates `fleet.yaml` to determine which clusters to target. 1. It deploys the updated resources automatically.