Full Code of rancher/fleet-examples for AI

master f38129f05ff6 cached
187 files
3.4 MB
913.4k tokens
1 requests
Download .txt
Showing preview only (3,653K chars total). Download the full file or copy to clipboard to get everything.
Repository: rancher/fleet-examples
Branch: master
Commit: f38129f05ff6
Files: 187
Total size: 3.4 MB

Directory structure:
gitextract_cvr35o8c/

├── .github/
│   ├── scripts/
│   │   └── install-k3d.sh
│   └── workflows/
│       ├── ci.yml
│       └── fossa.yml
├── .gitignore
├── CODEOWNERS
├── CONTRIBUTING.md
├── README.md
├── appco/
│   ├── README.md
│   └── fleet.yaml
├── hardened/
│   ├── README.md
│   ├── fleet.yaml
│   ├── frontend-deployment.yaml
│   ├── frontend-service.yaml
│   ├── redis-master-deployment.yaml
│   ├── redis-master-service.yaml
│   ├── redis-slave-deployment.yaml
│   └── redis-slave-service.yaml
├── multi-cluster/
│   ├── helm/
│   │   ├── Chart.yaml
│   │   ├── README.md
│   │   ├── fleet.yaml
│   │   ├── templates/
│   │   │   ├── frontend-deployment.yaml
│   │   │   ├── frontend-service.yaml
│   │   │   ├── redis-master-deployment.yaml
│   │   │   ├── redis-master-service.yaml
│   │   │   ├── redis-slave-deployment.yaml
│   │   │   └── redis-slave-service.yaml
│   │   └── values.yaml
│   ├── helm-external/
│   │   ├── README.md
│   │   └── fleet.yaml
│   ├── helm-kustomize/
│   │   ├── README.md
│   │   ├── fleet.yaml
│   │   └── overlays/
│   │       ├── dev/
│   │       │   ├── kustomization.yaml
│   │       │   ├── redis-slave-deployment.yaml
│   │       │   └── redis-slave-service.yaml
│   │       ├── prod/
│   │       │   ├── frontend-deployment.yaml
│   │       │   ├── frontend-service.yaml
│   │       │   └── kustomization.yaml
│   │       └── test/
│   │           ├── frontend-deployment.yaml
│   │           └── kustomization.yaml
│   ├── kustomize/
│   │   ├── README.md
│   │   ├── base/
│   │   │   ├── frontend-deployment.yaml
│   │   │   ├── frontend-service.yaml
│   │   │   ├── kustomization.yaml
│   │   │   ├── redis-master-deployment.yaml
│   │   │   ├── redis-master-service.yaml
│   │   │   ├── redis-slave-deployment.yaml
│   │   │   └── redis-slave-service.yaml
│   │   ├── fleet.yaml
│   │   └── overlays/
│   │       ├── dev/
│   │       │   ├── kustomization.yaml
│   │       │   ├── redis-slave-deployment.yaml
│   │       │   └── redis-slave-service.yaml
│   │       ├── prod/
│   │       │   ├── frontend-deployment.yaml
│   │       │   ├── frontend-service.yaml
│   │       │   └── kustomization.yaml
│   │       └── test/
│   │           ├── frontend-deployment.yaml
│   │           └── kustomization.yaml
│   ├── manifests/
│   │   ├── README.md
│   │   ├── fleet.yaml
│   │   ├── frontend-deployment.yaml
│   │   ├── frontend-service.yaml
│   │   ├── overlays/
│   │   │   ├── noreplication/
│   │   │   │   ├── redis-slave-deployment.yaml
│   │   │   │   └── redis-slave-service_patch.yaml
│   │   │   ├── scale3/
│   │   │   │   └── frontend-deployment_patch.yaml
│   │   │   └── servicelb/
│   │   │       └── frontend-service_patch.yaml
│   │   ├── redis-master-deployment.yaml
│   │   ├── redis-master-service.yaml
│   │   ├── redis-slave-deployment.yaml
│   │   └── redis-slave-service.yaml
│   └── windows-helm/
│       ├── Chart.yaml
│       ├── README.md
│       ├── fleet.yaml
│       ├── templates/
│       │   └── windows.yaml
│       └── values.yaml
├── simple/
│   ├── README.md
│   ├── frontend-deployment.yaml
│   ├── frontend-service.yaml
│   ├── redis-master-deployment.yaml
│   ├── redis-master-service.yaml
│   ├── redis-slave-deployment.yaml
│   └── redis-slave-service.yaml
├── single-cluster/
│   ├── helm/
│   │   ├── Chart.yaml
│   │   ├── README.md
│   │   ├── fleet.yaml
│   │   ├── templates/
│   │   │   ├── frontend-deployment.yaml
│   │   │   ├── frontend-service.yaml
│   │   │   ├── redis-master-deployment.yaml
│   │   │   ├── redis-master-service.yaml
│   │   │   ├── redis-slave-deployment.yaml
│   │   │   └── redis-slave-service.yaml
│   │   └── values.yaml
│   ├── helm-kustomize/
│   │   ├── README.md
│   │   ├── fleet.yaml
│   │   └── overlays/
│   │       └── dev/
│   │           ├── kustomization.yaml
│   │           ├── redis-slave-deployment.yaml
│   │           └── redis-slave-service.yaml
│   ├── helm-multi-chart/
│   │   ├── README.md
│   │   ├── guestbook/
│   │   │   ├── Chart.yaml
│   │   │   ├── fleet.yaml
│   │   │   ├── templates/
│   │   │   │   ├── frontend-deployment.yaml
│   │   │   │   ├── frontend-service.yaml
│   │   │   │   ├── redis-master-deployment.yaml
│   │   │   │   ├── redis-master-service.yaml
│   │   │   │   ├── redis-slave-deployment.yaml
│   │   │   │   └── redis-slave-service.yaml
│   │   │   └── values.yaml
│   │   ├── rancher-monitoring/
│   │   │   └── fleet.yaml
│   │   └── rancher-monitoring-crd/
│   │       └── fleet.yaml
│   ├── helm-overlays/
│   │   ├── README.md
│   │   ├── overlays/
│   │   │   ├── development/
│   │   │   │   ├── development-values.yaml
│   │   │   │   └── fleet.yaml
│   │   │   ├── production/
│   │   │   │   └── prod.yaml
│   │   │   └── test/
│   │   │       ├── test-values.yaml
│   │   │       └── test.yaml
│   │   └── superconfigmap/
│   │       ├── Chart.yaml
│   │       ├── templates/
│   │       │   └── configmap.yaml
│   │       └── values.yaml
│   ├── kustomize/
│   │   ├── README.md
│   │   ├── base/
│   │   │   ├── frontend-deployment.yaml
│   │   │   ├── frontend-service.yaml
│   │   │   ├── kustomization.yaml
│   │   │   ├── redis-master-deployment.yaml
│   │   │   ├── redis-master-service.yaml
│   │   │   ├── redis-slave-deployment.yaml
│   │   │   └── redis-slave-service.yaml
│   │   ├── fleet.yaml
│   │   ├── kustomization.yaml
│   │   └── overlays/
│   │       └── dev/
│   │           ├── kustomization.yaml
│   │           ├── redis-slave-deployment.yaml
│   │           └── redis-slave-service.yaml
│   ├── manifests/
│   │   ├── README.md
│   │   ├── deployments/
│   │   │   ├── frontend-deployment.yaml
│   │   │   ├── redis-master-deployment.yaml
│   │   │   └── redis-slave-deployment.yaml
│   │   ├── fleet.yaml
│   │   └── services/
│   │       ├── frontend-service.yaml
│   │       ├── redis-master-service.yaml
│   │       └── redis-slave-service.yaml
│   └── multi-gitrepo/
│       ├── README.md
│       ├── frontend/
│       │   ├── Chart.yaml
│       │   ├── README.md
│       │   ├── fleet.yaml
│       │   ├── templates/
│       │   │   ├── frontend-deployment.yaml
│       │   │   └── frontend-service.yaml
│       │   └── values.yaml
│       ├── gitrepos/
│       │   ├── README.md
│       │   ├── frontend.yaml
│       │   └── redis.yaml
│       └── redis/
│           ├── Chart.yaml
│           ├── README.md
│           ├── fleet.yaml
│           ├── templates/
│           │   ├── redis-master-deployment.yaml
│           │   ├── redis-master-service.yaml
│           │   ├── redis-slave-deployment.yaml
│           │   └── redis-slave-service.yaml
│           └── values.yaml
└── tests/
    ├── expected/
    │   ├── multi-cluster/
    │   │   ├── helm/
    │   │   │   ├── bundle.yaml
    │   │   │   ├── dev-output.yaml
    │   │   │   ├── prod-output.yaml
    │   │   │   └── test-output.yaml
    │   │   ├── helm-external/
    │   │   │   ├── bundle.yaml
    │   │   │   ├── dev-output.yaml
    │   │   │   ├── prod-output.yaml
    │   │   │   └── test-output.yaml
    │   │   ├── helm-kustomize/
    │   │   │   ├── bundle.yaml
    │   │   │   ├── dev-output.yaml
    │   │   │   ├── prod-output.yaml
    │   │   │   └── test-output.yaml
    │   │   ├── kustomize/
    │   │   │   ├── bundle.yaml
    │   │   │   ├── dev-output.yaml
    │   │   │   ├── prod-output.yaml
    │   │   │   └── test-output.yaml
    │   │   └── manifests/
    │   │       ├── bundle.yaml
    │   │       ├── dev-output.yaml
    │   │       ├── prod-output.yaml
    │   │       └── test-output.yaml
    │   └── single-cluster/
    │       ├── helm/
    │       │   ├── bundle.yaml
    │       │   └── local-output.yaml
    │       ├── helm-kustomize/
    │       │   ├── bundle.yaml
    │       │   └── local-output.yaml
    │       ├── helm-multi-chart/
    │       │   ├── bundle.yaml
    │       │   └── local-output.yaml
    │       ├── kustomize/
    │       │   ├── bundle.yaml
    │       │   └── local-output.yaml
    │       └── manifests/
    │           ├── bundle.yaml
    │           └── local-output.yaml
    ├── setup-cluster.yaml
    └── test.sh

================================================
FILE CONTENTS
================================================

================================================
FILE: .github/scripts/install-k3d.sh
================================================
#!/bin/bash

# Install k3d from a pinned release, verifying the SHA-256 checksum before
# placing the binary on PATH.
#
# renovate: datasource=github-releases depName=k3d-io/k3d
K3D_VERSION="v5.8.3"

# shellcheck disable=SC2034
# renovate: datasource=github-release-attachments depName=k3d-io/k3d digestVersion=v5.8.3
K3D_SUM_amd64="dbaa79a76ace7f4ca230a1ff41dc7d8a5036a8ad0309e9c54f9bf3836dbe853e"
# shellcheck disable=SC2034
# renovate: datasource=github-release-attachments depName=k3d-io/k3d digestVersion=v5.8.3
K3D_SUM_arm64="0b8110f2229631af7402fb828259330985918b08fefd38b7f1b788a1c8687216"

set -euo pipefail

ARCH=$(uname -m)
case "${ARCH}" in
  x86_64)  ARCH="amd64" ;;
  aarch64) ARCH="arm64" ;;
  *) echo "Unsupported architecture: ${ARCH}"; exit 1 ;;
esac

DEST="${INSTALL_DIR:-${HOME}/.local/bin}"
mkdir -p "${DEST}"
TMPDIR=$(mktemp -d)
trap 'rm -rf "${TMPDIR}"' EXIT

curl -sSfL \
  "https://github.com/k3d-io/k3d/releases/download/${K3D_VERSION}/k3d-linux-${ARCH}" \
  -o "${TMPDIR}/k3d"

K3D_SUM_VAR="K3D_SUM_${ARCH}"
echo "${!K3D_SUM_VAR}  ${TMPDIR}/k3d" | sha256sum -c -

install -m 0755 "${TMPDIR}/k3d" "${DEST}/k3d"
echo "Installed k3d ${K3D_VERSION} (${ARCH}) to ${DEST}/k3d"


================================================
FILE: .github/workflows/ci.yml
================================================
name: CI

on:
  schedule:
    - cron: '0 5 * * *'
  pull_request:
  workflow_dispatch:

jobs:
  test:
    runs-on: ubuntu-latest

    strategy:
      fail-fast: false
      matrix:
        fleet_version:
          - "v0.13.8"
          - "latest"
          - "latest-prerelease"

    steps:
      -
        uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
        with:
          fetch-depth: 0
      -
        name: Resolve Fleet Version
        id: resolve-version
        run: |
          VERSION="${{ matrix.fleet_version }}"
          if [ "$VERSION" = "latest" ]; then
            VERSION=$(curl -s https://api.github.com/repos/rancher/fleet/releases/latest | jq -r '.tag_name')
          elif [ "$VERSION" = "latest-prerelease" ]; then
            VERSION=$(curl -s https://api.github.com/repos/rancher/fleet/releases | jq -r '.[0].tag_name')
          fi
          echo "version=${VERSION}" >> "$GITHUB_OUTPUT"
      -
        name: Cache k3d CLI
        id: cache-k3d
        uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
        with:
          path: /home/runner/.local/bin/k3d
          key: ${{ runner.os }}-k3d-${{ hashFiles('.github/scripts/install-k3d.sh') }}
          restore-keys: |
            ${{ runner.os }}-k3d-
      -
        name: Install k3d
        run: |
          if [ "${{ steps.cache-k3d.outputs.cache-hit }}" != "true" ]; then
            bash .github/scripts/install-k3d.sh
          else
            echo "Using cached k3d CLI"
            chmod +x ~/.local/bin/k3d
          fi
          echo "$HOME/.local/bin" >> "$GITHUB_PATH"
      -
        uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
        id: fleet-cli-cache
        with:
          path: /home/runner/.local/bin/fleet
          key: ${{ runner.os }}-fleet-cli-${{ steps.resolve-version.outputs.version }}
      -
        name: Download CLI
        run: |
          mkdir -p /home/runner/.local/bin
          if [ "${{ steps.fleet-cli-cache.outputs.cache-hit }}" != "true" ]; then
            FLEET_VER="${{ steps.resolve-version.outputs.version }}"
            FLEET_VER_TRIM="${FLEET_VER#v}"
            curl --silent --fail --location \
              "https://github.com/rancher/fleet/releases/download/${FLEET_VER}/fleet_${FLEET_VER_TRIM}_checksums.txt" \
              -o /tmp/fleet_checksums.txt
            curl --silent --fail --location \
              "https://github.com/rancher/fleet/releases/download/${FLEET_VER}/fleet-linux-amd64" \
              -o /tmp/fleet-linux-amd64
            (cd /tmp && grep "  fleet-linux-amd64$" fleet_checksums.txt | sha256sum --check --strict -)
            install -m 0755 /tmp/fleet-linux-amd64 /home/runner/.local/bin/fleet
          else
            echo "Using cached fleet CLI"
            chmod +x /home/runner/.local/bin/fleet
          fi
          echo "$HOME/.local/bin" >> "$GITHUB_PATH"
      -
        name: Set up k3d cluster
        run: |
          # Create a minimal cluster (no load balancer needed)
          k3d cluster create fleet-test --no-lb --wait --timeout 120s
          k3d kubeconfig merge fleet-test --kubeconfig-merge-default

          # Install Fleet CRDs for the exact CLI version under test so that
          # `kubectl apply` and `fleet target` can use the Cluster CRD.
          # Note: fleet does not publish checksums for Helm chart tarballs.
          FLEET_VER="${{ steps.resolve-version.outputs.version }}"
          FLEET_VER_TRIM="${FLEET_VER#v}"
          curl --silent --fail --location \
            "https://github.com/rancher/fleet/releases/download/${FLEET_VER}/fleet-crd-${FLEET_VER_TRIM}.tgz" \
            -o /tmp/fleet-crd.tgz
          tar -xz -O -f /tmp/fleet-crd.tgz fleet-crd/templates/crds.yaml | kubectl apply -f -

          # Create namespaces and minimal cluster objects for targeting
          kubectl create namespace fleet-local
          kubectl create namespace fleet-default
          kubectl apply -f tests/setup-cluster.yaml
      -
        name: Test
        run: |
          tests/test.sh


================================================
FILE: .github/workflows/fossa.yml
================================================
name: FOSSA Scanning

on:
  push:
    branches: ["main", "master", "release/**"]
  workflow_dispatch:

permissions:
  contents: read
  id-token: write

jobs:
  fossa-scanning:
    runs-on: ubuntu-latest
    timeout-minutes: 30
    steps:
    - name: Checkout
      uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1

    # The FOSSA token is shared between all repos in Rancher's GH org. It can be
    # used directly and there is no need to request specific access to EIO.
    - name: Read FOSSA token
      uses: rancher-eio/read-vault-secrets@0da85151ad1f19ed7986c41587e45aac1ace74b6 # v3
      with:
        secrets: |
          secret/data/github/org/rancher/fossa/push token | FOSSA_API_KEY_PUSH_ONLY

    - name: FOSSA scan
      uses: fossas/fossa-action@ff70fe9fe17cbd2040648f1c45e8ec4e4884dcf3 # v1.9.0
      with:
        api-key: ${{ env.FOSSA_API_KEY_PUSH_ONLY }}
        # Only runs the scan and do not provide/returns any results back to the
        # pipeline.
        run-tests: false


================================================
FILE: .gitignore
================================================
tests/output/


================================================
FILE: CODEOWNERS
================================================
# Order is important. The last matching pattern has the most precedence.

* @rancher/fleet


================================================
FILE: CONTRIBUTING.md
================================================
Examples added to this repo should have a README and need to be added to the overview table in the top level README.
Examples should be tested regularly in fleet's [acceptance tests](https://github.com/rancher/fleet/tree/master/e2e/acceptance).


================================================
FILE: README.md
================================================
# Fleet Examples

This repository contains examples of how to use Fleet using different approaches.
The repo is broken up into two different sections: Single cluster and Multi Cluster.

[![CI](https://github.com/rancher/fleet-examples/actions/workflows/ci.yml/badge.svg)](https://github.com/rancher/fleet-examples/actions/workflows/ci.yml)

## Single Cluster Examples

All examples will deploy content to clusters with no per-cluster customizations. This is a good starting point to
understand the basics of structuring git repos for Fleet.

| Example | Description |
|-------------|-------------|
| [manifests](single-cluster/manifests/) | An example using raw Kubernetes YAML |
| [helm](single-cluster/helm/) | An example using Helm |
| [helm-multi-chart](single-cluster/helm-multi-chart/) | An example deploying multiple charts from a single repo |
| [kustomize](single-cluster/kustomize/) | An example using Kustomize |
| [helm-kustomize](single-cluster/helm-kustomize/) | An example using Kustomize to modify a third party Helm chart |

## Multi-Cluster Examples

The examples below will deploy a single git repo to multiple clusters at once
and configure the app differently for each target.

| Example | Description |
|-------------|-------------|
| [manifests](multi-cluster/manifests/) | A full example of using raw Kubernetes YAML and customizing it per target cluster |
| [helm](multi-cluster/helm/) | A full example of using Helm and customizing it per target cluster |
| [helm-external](multi-cluster/helm-external/) | A full example of using a Helm chart that is downloaded from a third party source and customizing it per target cluster |
| [kustomize](multi-cluster/kustomize/) | A full example of using Kustomize and customizing it per target cluster |
| [helm-kustomize](multi-cluster/helm-kustomize/) | A full example of using Kustomize to modify a third party Helm chart |
| [windows-helm](multi-cluster/windows-helm/) | A full example of using Helm for Windows cluster(s)

## Windows Example

Using downstream clusters with Windows nodes?
Check out the [windows-helm](multi-cluster/windows-helm/) multi-cluster example above.

## Running Tests Locally

The test suite renders every example using the Fleet CLI and compares the output
against committed expected files.

### Prerequisites

- [k3d](https://k3d.io/) v5.8.3 or newer
- `kubectl`
- Fleet CLI — download a release binary from
  [fleet releases](https://github.com/rancher/fleet/releases) and put it on
  your `PATH`, e.g.:
  ```bash
  FLEET_VERSION=v0.14.3
  curl -sL "https://github.com/rancher/fleet/releases/download/${FLEET_VERSION}/fleet-linux-amd64" \
    -o ~/.local/bin/fleet && chmod +x ~/.local/bin/fleet
  ```

### One-time cluster setup

Create a minimal k3d cluster, install Fleet CRDs, and populate the cluster
objects the tests rely on:

```bash
FLEET_VERSION=v0.14.3

# Create cluster
k3d cluster create fleet-test --no-lb --wait --timeout 120s
k3d kubeconfig merge fleet-test --kubeconfig-merge-default

# Install Fleet CRDs (use the same version as your fleet CLI)
curl -sL "https://github.com/rancher/fleet/releases/download/${FLEET_VERSION}/fleet-crd-${FLEET_VERSION#v}.tgz" \
  | tar -xz -O fleet-crd/templates/crds.yaml \
  | kubectl apply -f -

# Create namespaces and cluster objects
kubectl create namespace fleet-local
kubectl create namespace fleet-default
kubectl apply -f tests/setup-cluster.yaml
```

The cluster can be reused across test runs and deleted afterwards with
`k3d cluster delete fleet-test`.

### Running the tests

```bash
tests/test.sh
```

The script runs `fleet apply`, `fleet target`, and `fleet deploy -d` for each
example and compares the rendered output against the files in `tests/expected/`.

### Updating expected files

When an example or the Fleet CLI changes the rendered output, regenerate the
expected files by running the tests once until they fail on the `diff` step,
then copy the fresh output into `expected/`:

```bash
# Run once — will fail at the diff step but generate the new output
tests/test.sh || true

# Accept the new output as the expected baseline
cp -r tests/output/* tests/expected/
# or selectively: cp tests/output/multi-cluster/kustomize/dev-output.yaml \
#                    tests/expected/multi-cluster/kustomize/dev-output.yaml
```


================================================
FILE: appco/README.md
================================================
# AppCo Example

This example will deploy the [Istio SUSE Application Collection](https://docs.apps.rancher.io/reference-guides/istio/). 
The app will be deployed into the `istio-system` namespace. Note that you must have create the `application-collection` secret into the `istio-system` namespace using the [AppCo Username](https://apps.rancher.io/settings/profile) as username and the [AppCo Access token](https://apps.rancher.io/settings/access-tokens) as password.

```yaml
kind: GitRepo
apiVersion: fleet.cattle.io/v1alpha1
metadata:
  name: appcotest
  namespace: fleet-local
spec:
  repo: https://github.com/rancher/fleet-examples
  branch: master
  paths:
  - appco
```

================================================
FILE: appco/fleet.yaml
================================================
defaultNamespace: istio-system
helm:
  releaseName: rancher-istio
  chart: "oci://dp.apps.rancher.io/charts/istio"
  force: false
  timeoutSeconds: 0
  targetNamespace: istio-system
  values:
    global:
      imagePullSecrets: [ "application-collection" ]
diff:
  comparePatches:
  - apiVersion: admissionregistration.k8s.io/v1
    kind: ValidatingWebhookConfiguration
    name: istio-validator-istio-system
    operations:
    - {"op": "remove", "path":"/webhooks"}
  - apiVersion: admissionregistration.k8s.io/v1
    kind: ValidatingWebhookConfiguration
    name: istiod-default-validator
    operations:
    - {"op": "remove", "path":"/webhooks"}


================================================
FILE: hardened/README.md
================================================
# Hardened Example

This example will deploy the [Kubernetes sample guestbook](https://github.com/kubernetes/examples/tree/master/guestbook/) application, with modifications to securityContext which allow its deployment on a hardened cluster. 
The app will be deployed into the `default` namespace. Note that you must have added the `default` namespace to the PSA to allow deployments to this namespace. 

```yaml
kind: GitRepo
apiVersion: fleet.cattle.io/v1alpha1
metadata:
  name: simple
  namespace: fleet-local
spec:
  repo: https://github.com/rancher/fleet-examples
  paths:
  - hardened
```


================================================
FILE: hardened/fleet.yaml
================================================
namespace: hardened-fleet-deployments

namespaceLabels:
  pod-security.kubernetes.io/enforce: baseline

================================================
FILE: hardened/frontend-deployment.yaml
================================================
apiVersion: apps/v1
kind: Deployment
metadata:
  name: frontend
spec:
  selector:
    matchLabels:
      app: guestbook
      tier: frontend
  replicas: 3
  template:
    metadata:
      labels:
        app: guestbook
        tier: frontend
    spec:
      containers:
      - name: php-redis
        securityContext:
          allowPrivilegeEscalation: false
          runAsNonRoot: true
          runAsUser: 1000
          seccompProfile:
            type: RuntimeDefault
          capabilities:
            drop: ["ALL"]
        image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 80


================================================
FILE: hardened/frontend-service.yaml
================================================
apiVersion: v1
kind: Service
metadata:
  name: frontend
  labels:
    app: guestbook
    tier: frontend
spec:
  type: NodePort
  ports:
  - port: 80
  selector:
    app: guestbook
    tier: frontend


================================================
FILE: hardened/redis-master-deployment.yaml
================================================
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-master
spec:
  selector:
    matchLabels:
      app: redis
      role: master
      tier: backend
  replicas: 1
  template:
    metadata:
      labels:
        app: redis
        role: master
        tier: backend
    spec:
      containers:
      - name: master
        image: redis:7-alpine
        securityContext:
          allowPrivilegeEscalation: false
          runAsNonRoot: true
          runAsUser: 1000
          seccompProfile:
            type: RuntimeDefault
          capabilities:
            drop: ["ALL"]
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 6379


================================================
FILE: hardened/redis-master-service.yaml
================================================
apiVersion: v1
kind: Service
metadata:
  name: redis-master
  labels:
    app: redis
    role: master
    tier: backend
spec:
  ports:
  - port: 6379
    targetPort: 6379
  selector:
    app: redis
    role: master
    tier: backend


================================================
FILE: hardened/redis-slave-deployment.yaml
================================================
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-slave
spec:
  selector:
    matchLabels:
      app: redis
      role: slave
      tier: backend
  replicas: 2
  template:
    metadata:
      labels:
        app: redis
        role: slave
        tier: backend
    spec:
      containers:
      - name: slave
        image: redis:7-alpine
        securityContext:
          allowPrivilegeEscalation: false
          runAsNonRoot: true
          runAsUser: 1000
          seccompProfile:
            type: RuntimeDefault
          capabilities:
            drop: ["ALL"]
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 6379


================================================
FILE: hardened/redis-slave-service.yaml
================================================
apiVersion: v1
kind: Service
metadata:
  name: redis-slave
  labels:
    app: redis
    role: slave
    tier: backend
spec:
  ports:
  - port: 6379
  selector:
    app: redis
    role: slave
    tier: backend


================================================
FILE: multi-cluster/helm/Chart.yaml
================================================
apiVersion: v2
name: guestbook
description: Sample application
version: 0.0.0
appVersion: 0.0.0


================================================
FILE: multi-cluster/helm/README.md
================================================
# Multi-Cluster Helm Example

This example will deploy the [Kubernetes sample guestbook](https://github.com/kubernetes/examples/tree/master/guestbook/) application as
packaged as a Helm chart.
The app will be deployed into the `fleet-mc-helm-example` namespace.

The application will be customized as follows per environment:

* Dev clusters: Only the redis leader is deployed and not the followers.
* Test clusters: Scale the front deployment to 3
* Prod clusters: Scale the front deployment to 3 and set the service type to LoadBalancer

```yaml
kind: GitRepo
apiVersion: fleet.cattle.io/v1alpha1
metadata:
  name: helm
  namespace: fleet-default
spec:
  repo: https://github.com/rancher/fleet-examples
  paths:
  - multi-cluster/helm
  targets:
  - name: dev
    clusterSelector:
      matchLabels:
        env: dev

  - name: test
    clusterSelector:
      matchLabels:
        env: test

  - name: prod
    clusterSelector:
      matchLabels:
        env: prod
```


================================================
FILE: multi-cluster/helm/fleet.yaml
================================================
namespace: fleet-mc-helm-example
targetCustomizations:
- name: dev
  helm:
    values:
      replication: false
  clusterSelector:
    matchLabels:
      env: dev

- name: test
  helm:
    values:
      replicas: 3
  clusterSelector:
    matchLabels:
      env: test

- name: prod
  helm:
    values:
      serviceType: LoadBalancer
      replicas: 3
  clusterSelector:
    matchLabels:
      env: prod


================================================
FILE: multi-cluster/helm/templates/frontend-deployment.yaml
================================================
apiVersion: apps/v1
kind: Deployment
metadata:
  name: frontend
spec:
  selector:
    matchLabels:
      app: guestbook
      tier: frontend
  replicas: {{ .Values.replicas }}
  template:
    metadata:
      labels:
        app: guestbook
        tier: frontend
    spec:
      containers:
      - name: php-redis
        image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 80


================================================
FILE: multi-cluster/helm/templates/frontend-service.yaml
================================================
apiVersion: v1
kind: Service
metadata:
  name: frontend
  labels:
    app: guestbook
    tier: frontend
spec:
  type: "{{ .Values.serviceType }}"
  ports:
  - port: 80
  selector:
    app: guestbook
    tier: frontend


================================================
FILE: multi-cluster/helm/templates/redis-master-deployment.yaml
================================================
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-master
spec:
  selector:
    matchLabels:
      app: redis
      role: master
      tier: backend
  replicas: 1
  template:
    metadata:
      labels:
        app: redis
        role: master
        tier: backend
    spec:
      containers:
      - name: master
        image: redis
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 6379


================================================
FILE: multi-cluster/helm/templates/redis-master-service.yaml
================================================
apiVersion: v1
kind: Service
metadata:
  name: redis-master
  labels:
    app: redis
    role: master
    tier: backend
spec:
  ports:
  - port: 6379
    targetPort: 6379
  selector:
    app: redis
    role: master
    tier: backend


================================================
FILE: multi-cluster/helm/templates/redis-slave-deployment.yaml
================================================
{{ if .Values.replication }}
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-slave
spec:
  selector:
    matchLabels:
      app: redis
      role: slave
      tier: backend
  replicas: 2
  template:
    metadata:
      labels:
        app: redis
        role: slave
        tier: backend
    spec:
      containers:
      - name: slave
        image: redis
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 6379
{{ end }}


================================================
FILE: multi-cluster/helm/templates/redis-slave-service.yaml
================================================
apiVersion: v1
kind: Service
metadata:
  name: redis-slave
  labels:
    app: redis
    role: slave
    tier: backend
spec:
  ports:
  - port: 6379
  selector:
    app: redis
    {{ if .Values.replication }}
    role: slave
    {{ else }}
    role: master
    {{ end }}
    tier: backend


================================================
FILE: multi-cluster/helm/values.yaml
================================================
replication: true
replicas: 1
serviceType: NodePort


================================================
FILE: multi-cluster/helm-external/README.md
================================================
# Multi-Cluster Helm External Example

This example will deploy the [Kubernetes sample guestbook](https://github.com/kubernetes/examples/tree/master/guestbook/) application as
packaged as a Helm chart downloaded from a third party source.
The app will be deployed into the `fleet-mc-helm-external-example` namespace.

The application will be customized as follows per environment:

* Dev clusters: Only the redis leader is deployed and not the followers.
* Test clusters: Scale the front deployment to 3
* Prod clusters: Scale the front deployment to 3 and set the service type to LoadBalancer

```yaml
kind: GitRepo
apiVersion: fleet.cattle.io/v1alpha1
metadata:
  name: helm-external
  namespace: fleet-default
spec:
  repo: https://github.com/rancher/fleet-examples
  paths:
  - multi-cluster/helm-external
  targets:
  - name: dev
    clusterSelector:
      matchLabels:
        env: dev

  - name: test
    clusterSelector:
      matchLabels:
        env: test

  - name: prod
    clusterSelector:
      matchLabels:
        env: prod
```


================================================
FILE: multi-cluster/helm-external/fleet.yaml
================================================
namespace: fleet-mc-helm-external-example
helm:
  chart: https://github.com/rancher/fleet-examples/releases/download/example/guestbook-0.0.1.tgz
targetCustomizations:
- name: dev
  helm:
    values:
      replication: false
  clusterSelector:
    matchLabels:
      env: dev

- name: test
  helm:
    values:
      replicas: 3
  clusterSelector:
    matchLabels:
      env: test

- name: prod
  helm:
    values:
      serviceType: LoadBalancer
      replicas: 3
  clusterSelector:
    matchLabels:
      env: prod


================================================
FILE: multi-cluster/helm-kustomize/README.md
================================================
# Multi-Cluster Helm Kustomize Example

This example will deploy the [Kubernetes sample guestbook](https://github.com/kubernetes/examples/tree/master/guestbook/) application as
packaged as a Helm chart downloaded from a third party source and will modify the helm chart using Kustomize.
The app will be deployed into the `fleet-mc-helm-kustomize-example` namespace.

The application will be customized as follows per environment:

* Dev clusters: Only the redis leader is deployed and not the followers.
* Test clusters: Scale the front deployment to 3
* Prod clusters: Scale the front deployment to 3 and set the service type to LoadBalancer

```yaml
kind: GitRepo
apiVersion: fleet.cattle.io/v1alpha1
metadata:
  name: helm-kustomize
  namespace: fleet-default
spec:
  repo: https://github.com/rancher/fleet-examples
  paths:
  - multi-cluster/helm-kustomize
  targets:
  - name: dev
    clusterSelector:
      matchLabels:
        env: dev

  - name: test
    clusterSelector:
      matchLabels:
        env: test

  - name: prod
    clusterSelector:
      matchLabels:
        env: prod
```


================================================
FILE: multi-cluster/helm-kustomize/fleet.yaml
================================================
namespace: fleet-mc-helm-kustomize-example
helm:
  chart: https://github.com/rancher/fleet-examples/releases/download/example/guestbook-0.0.1.tgz
targetCustomizations:
- name: dev
  clusterSelector:
    matchLabels:
      env: dev
  kustomize:
    dir: overlays/dev

- name: test
  clusterSelector:
    matchLabels:
      env: test
  kustomize:
    dir: overlays/test

- name: prod
  clusterSelector:
    matchLabels:
      env: prod
  kustomize:
    dir: overlays/prod


================================================
FILE: multi-cluster/helm-kustomize/overlays/dev/kustomization.yaml
================================================
patchesStrategicMerge:
- redis-slave-deployment.yaml
- redis-slave-service.yaml


================================================
FILE: multi-cluster/helm-kustomize/overlays/dev/redis-slave-deployment.yaml
================================================
kind: Deployment
apiVersion: apps/v1
metadata:
  name: redis-slave
spec:
  replicas: 0


================================================
FILE: multi-cluster/helm-kustomize/overlays/dev/redis-slave-service.yaml
================================================
kind: Service
apiVersion: v1
metadata:
  name: redis-slave
spec:
  selector:
    role: master


================================================
FILE: multi-cluster/helm-kustomize/overlays/prod/frontend-deployment.yaml
================================================
apiVersion: apps/v1
kind: Deployment
metadata:
  name: frontend
spec:
  replicas: 3


================================================
FILE: multi-cluster/helm-kustomize/overlays/prod/frontend-service.yaml
================================================
kind: Service
apiVersion: v1
metadata:
  name: frontend
spec:
  type: LoadBalancer


================================================
FILE: multi-cluster/helm-kustomize/overlays/prod/kustomization.yaml
================================================
patchesStrategicMerge:
- frontend-deployment.yaml
- frontend-service.yaml


================================================
FILE: multi-cluster/helm-kustomize/overlays/test/frontend-deployment.yaml
================================================
apiVersion: apps/v1
kind: Deployment
metadata:
  name: frontend
spec:
  replicas: 3


================================================
FILE: multi-cluster/helm-kustomize/overlays/test/kustomization.yaml
================================================
patchesStrategicMerge:
- frontend-deployment.yaml


================================================
FILE: multi-cluster/kustomize/README.md
================================================
# Multi-Cluster Kustomize Example

This example will deploy the [Kubernetes sample guestbook](https://github.com/kubernetes/examples/tree/master/guestbook/) application
using kustomize. The app will be deployed into the `fleet-mc-kustomize-example` namespace.

The application will be customized as follows per environment:

* Dev clusters: Only the redis leader is deployed and not the followers.
* Test clusters: Scale the front deployment to 3
* Prod clusters: Scale the front deployment to 3 and set the service type to LoadBalancer

```yaml
kind: GitRepo
apiVersion: fleet.cattle.io/v1alpha1
metadata:
  name: kustomize
  namespace: fleet-default
spec:
  repo: https://github.com/rancher/fleet-examples
  paths:
  - multi-cluster/kustomize
  targets:
  - name: dev
    clusterSelector:
      matchLabels:
        env: dev

  - name: test
    clusterSelector:
      matchLabels:
        env: test

  - name: prod
    clusterSelector:
      matchLabels:
        env: prod
```


================================================
FILE: multi-cluster/kustomize/base/frontend-deployment.yaml
================================================
apiVersion: apps/v1
kind: Deployment
metadata:
  name: frontend
spec:
  selector:
    matchLabels:
      app: guestbook
      tier: frontend
  replicas: 1
  template:
    metadata:
      labels:
        app: guestbook
        tier: frontend
    spec:
      containers:
      - name: php-redis
        image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 80


================================================
FILE: multi-cluster/kustomize/base/frontend-service.yaml
================================================
apiVersion: v1
kind: Service
metadata:
  name: frontend
  labels:
    app: guestbook
    tier: frontend
spec:
  type: NodePort
  ports:
  - port: 80
  selector:
    app: guestbook
    tier: frontend


================================================
FILE: multi-cluster/kustomize/base/kustomization.yaml
================================================
resources:
- frontend-deployment.yaml
- frontend-service.yaml
- redis-master-deployment.yaml
- redis-master-service.yaml
- redis-slave-deployment.yaml
- redis-slave-service.yaml


================================================
FILE: multi-cluster/kustomize/base/redis-master-deployment.yaml
================================================
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-master
spec:
  selector:
    matchLabels:
      app: redis
      role: master
      tier: backend
  replicas: 1
  template:
    metadata:
      labels:
        app: redis
        role: master
        tier: backend
    spec:
      containers:
      - name: master
        image: redis
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 6379


================================================
FILE: multi-cluster/kustomize/base/redis-master-service.yaml
================================================
apiVersion: v1
kind: Service
metadata:
  name: redis-master
  labels:
    app: redis
    role: master
    tier: backend
spec:
  ports:
  - port: 6379
    targetPort: 6379
  selector:
    app: redis
    role: master
    tier: backend


================================================
FILE: multi-cluster/kustomize/base/redis-slave-deployment.yaml
================================================
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-slave
spec:
  selector:
    matchLabels:
      app: redis
      role: slave
      tier: backend
  replicas: 2
  template:
    metadata:
      labels:
        app: redis
        role: slave
        tier: backend
    spec:
      containers:
      - name: slave
        image: redis
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 6379


================================================
FILE: multi-cluster/kustomize/base/redis-slave-service.yaml
================================================
apiVersion: v1
kind: Service
metadata:
  name: redis-slave
  labels:
    app: redis
    role: slave
    tier: backend
spec:
  ports:
  - port: 6379
  selector:
    app: redis
    role: slave
    tier: backend


================================================
FILE: multi-cluster/kustomize/fleet.yaml
================================================
namespace: fleet-mc-kustomize-example
targetCustomizations:
- name: dev
  clusterSelector:
    matchLabels:
      env: dev
  kustomize:
    dir: overlays/dev

- name: test
  clusterSelector:
    matchLabels:
      env: test
  kustomize:
    dir: overlays/test

- name: prod
  clusterSelector:
    matchLabels:
      env: prod
  kustomize:
    dir: overlays/prod


================================================
FILE: multi-cluster/kustomize/overlays/dev/kustomization.yaml
================================================
resources:
- ../../base
patchesStrategicMerge:
- redis-slave-deployment.yaml
- redis-slave-service.yaml


================================================
FILE: multi-cluster/kustomize/overlays/dev/redis-slave-deployment.yaml
================================================
kind: Deployment
apiVersion: apps/v1
metadata:
  name: redis-slave
spec:
  replicas: 0


================================================
FILE: multi-cluster/kustomize/overlays/dev/redis-slave-service.yaml
================================================
kind: Service
apiVersion: v1
metadata:
  name: redis-slave
spec:
  selector:
    role: master


================================================
FILE: multi-cluster/kustomize/overlays/prod/frontend-deployment.yaml
================================================
apiVersion: apps/v1
kind: Deployment
metadata:
  name: frontend
spec:
  replicas: 3


================================================
FILE: multi-cluster/kustomize/overlays/prod/frontend-service.yaml
================================================
kind: Service
apiVersion: v1
metadata:
  name: frontend
spec:
  type: LoadBalancer


================================================
FILE: multi-cluster/kustomize/overlays/prod/kustomization.yaml
================================================
resources:
- ../../base
patchesStrategicMerge:
- frontend-deployment.yaml
- frontend-service.yaml


================================================
FILE: multi-cluster/kustomize/overlays/test/frontend-deployment.yaml
================================================
apiVersion: apps/v1
kind: Deployment
metadata:
  name: frontend
spec:
  replicas: 3


================================================
FILE: multi-cluster/kustomize/overlays/test/kustomization.yaml
================================================
resources:
- ../../base
patchesStrategicMerge:
- frontend-deployment.yaml


================================================
FILE: multi-cluster/manifests/README.md
================================================
# Multi-Cluster Manifests Example

This example will deploy the [Kubernetes sample guestbook](https://github.com/kubernetes/examples/tree/master/guestbook/) application.
The app will be deployed into the `fleet-mc-manifest-example` namespace.

The application will be customized as follows per environment:

* Dev clusters: Only the redis leader is deployed and not the followers.
* Test clusters: Scale the front deployment to 3
* Prod clusters: Scale the front deployment to 3 and set the service type to LoadBalancer

```yaml
kind: GitRepo
apiVersion: fleet.cattle.io/v1alpha1
metadata:
  name: manifests
  namespace: fleet-default
spec:
  repo: https://github.com/rancher/fleet-examples
  paths:
  - multi-cluster/manifests
  targets:
  - name: dev
    clusterSelector:
      matchLabels:
        env: dev

  - name: test
    clusterSelector:
      matchLabels:
        env: test

  - name: prod
    clusterSelector:
      matchLabels:
        env: prod
```


================================================
FILE: multi-cluster/manifests/fleet.yaml
================================================
namespace: fleet-mc-manifest-example
targetCustomizations:
- name: dev
  clusterSelector:
    matchLabels:
      env: dev
  yaml:
    overlays:
    # Refers to overlays/noreplication folder
    - noreplication

- name: test
  clusterSelector:
    matchLabels:
      env: test
  yaml:
    overlays:
    # Refers to overlays/scale3 folder
    - scale3

- name: prod
  clusterSelector:
    matchLabels:
      env: prod
  yaml:
    # Refers to overlays/servicelb, scale3 folders
    overlays:
    - servicelb
    - scale3


================================================
FILE: multi-cluster/manifests/frontend-deployment.yaml
================================================
apiVersion: apps/v1
kind: Deployment
metadata:
  name: frontend
spec:
  selector:
    matchLabels:
      app: guestbook
      tier: frontend
  replicas: 1
  template:
    metadata:
      labels:
        app: guestbook
        tier: frontend
    spec:
      containers:
      - name: php-redis
        image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 80


================================================
FILE: multi-cluster/manifests/frontend-service.yaml
================================================
apiVersion: v1
kind: Service
metadata:
  name: frontend
  labels:
    app: guestbook
    tier: frontend
spec:
  type: NodePort
  ports:
  - port: 80
  selector:
    app: guestbook
    tier: frontend


================================================
FILE: multi-cluster/manifests/overlays/noreplication/redis-slave-deployment.yaml
================================================


================================================
FILE: multi-cluster/manifests/overlays/noreplication/redis-slave-service_patch.yaml
================================================
spec:
  selector:
    role: master


================================================
FILE: multi-cluster/manifests/overlays/scale3/frontend-deployment_patch.yaml
================================================
spec:
  replicas: 3


================================================
FILE: multi-cluster/manifests/overlays/servicelb/frontend-service_patch.yaml
================================================
spec:
  type: LoadBalancer


================================================
FILE: multi-cluster/manifests/redis-master-deployment.yaml
================================================
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-master
spec:
  selector:
    matchLabels:
      app: redis
      role: master
      tier: backend
  replicas: 1
  template:
    metadata:
      labels:
        app: redis
        role: master
        tier: backend
    spec:
      containers:
      - name: master
        image: redis
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 6379


================================================
FILE: multi-cluster/manifests/redis-master-service.yaml
================================================
apiVersion: v1
kind: Service
metadata:
  name: redis-master
  labels:
    app: redis
    role: master
    tier: backend
spec:
  ports:
  - port: 6379
    targetPort: 6379
  selector:
    app: redis
    role: master
    tier: backend


================================================
FILE: multi-cluster/manifests/redis-slave-deployment.yaml
================================================
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-slave
spec:
  selector:
    matchLabels:
      app: redis
      role: slave
      tier: backend
  replicas: 2
  template:
    metadata:
      labels:
        app: redis
        role: slave
        tier: backend
    spec:
      containers:
      - name: slave
        image: redis
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 6379


================================================
FILE: multi-cluster/manifests/redis-slave-service.yaml
================================================
apiVersion: v1
kind: Service
metadata:
  name: redis-slave
  labels:
    app: redis
    role: slave
    tier: backend
spec:
  ports:
  - port: 6379
  selector:
    app: redis
    role: slave
    tier: backend


================================================
FILE: multi-cluster/windows-helm/Chart.yaml
================================================
apiVersion: v2
name: windows-app
description: Sample Windows application
version: 0.0.0
appVersion: 0.0.0


================================================
FILE: multi-cluster/windows-helm/README.md
================================================
# Windows Helm Example

This example will deploy the [Windows application example](https://kubernetes.io/docs/setup/production-environment/windows/user-guide-windows-containers/) packaged as a Helm chart.
It must be deployed in a multi-cluster configuration, and requires Fleet v0.3.4+.
For more information, check out the [Fleet docs](https://rancher.com/docs/rancher/v2.x/en/deploy-across-clusters/fleet/).

## Preparing Your Downstream Cluster(s)

Clusters (`clusters.fleet.cattle.io`) must have the `windows.version` label in order for the example to be deployed.
You can determine the value for the `windows.version` label key based on the release version of your Windows node(s).

Description | Example
--- | ---
For Windows Server SAC nodes, the value will be the SAC release number (prepended with "win"). | 2004 SAC would result in `windows.version: win2004`
For Windows Server LTSC nodes, the value will be the SAC release number that the LTSC is based on (prepended with "win"). | 2019 LTSC would result in `windows.version: win1809`

## Creating the GitRepo

Create the following `GitRepo` in your local cluster to get started.

```yaml
kind: GitRepo
apiVersion: fleet.cattle.io/v1alpha1
metadata:
  name: helm
  namespace: fleet-default
spec:
  repo: https://github.com/rancher/fleet-examples
  paths:
  - multi-cluster/windows-helm
  targets:
  - name: win2004
    clusterSelector:
      matchLabels:
        windows.version: win2004
  - name: win1909
    clusterSelector:
      matchLabels:
        windows.version: win1909
  - name: win1903
    clusterSelector:
      matchLabels:
        windows.version: win1903
  - name: win1809
    clusterSelector:
      matchLabels:
        windows.version: win1809
```


================================================
FILE: multi-cluster/windows-helm/fleet.yaml
================================================
namespace: fleet-helm-windows-example
targetCustomizations:
- name: win2022
  helm:
    values:
      image:
        tag: ltsc2022
  clusterSelector:
    matchLabels:
      windows.version: win2022
- name: win2019
  helm:
    values:
      image:
        tag: ltsc2019
  clusterSelector:
    matchLabels:
      windows.version: win2019
- name: win2004
  helm:
    values:
      image:
        tag: 2004
  clusterSelector:
    matchLabels:
      windows.version: win2004
- name: win1909
  helm:
    values:
      image:
        tag: 1909
  clusterSelector:
    matchLabels:
      windows.version: win1909
- name: win1903
  helm:
    values:
      image:
        tag: 1903
  clusterSelector:
    matchLabels:
      windows.version: win1903
- name: win1809
  helm:
    values:
      image:
        tag: 1809
  clusterSelector:
    matchLabels:
      windows.version: win1809


================================================
FILE: multi-cluster/windows-helm/templates/windows.yaml
================================================
# Source: https://kubernetes.io/docs/setup/production-environment/windows/user-guide-windows-containers/
apiVersion: v1
kind: Service
metadata:
  name: win-webserver
  labels:
    app: win-webserver
spec:
  ports:
    # the port that this service should serve on
    - port: 80
      targetPort: 80
  selector:
    app: win-webserver
  type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: win-webserver
  name: win-webserver
spec:
  replicas: 2
  selector:
    matchLabels:
      app: win-webserver
  template:
    metadata:
      labels:
        app: win-webserver
      name: win-webserver
    spec:
      containers:
      - name: windowswebserver
        image: "mcr.microsoft.com/windows/servercore:{{ .Values.image.tag }}"
        command:
        - powershell.exe
        - -command
        - "<#code used from https://gist.github.com/19WAS85/5424431#> ; $$listener = New-Object System.Net.HttpListener ; $$listener.Prefixes.Add('http://*:80/') ; $$listener.Start() ; $$callerCounts = @{} ; Write-Host('Listening at http://*:80/') ; while ($$listener.IsListening) { ;$$context = $$listener.GetContext() ;$$requestUrl = $$context.Request.Url ;$$clientIP = $$context.Request.RemoteEndPoint.Address ;$$response = $$context.Response ;Write-Host '' ;Write-Host('> {0}' -f $$requestUrl) ;  ;$$count = 1 ;$$k=$$callerCounts.Get_Item($$clientIP) ;if ($$k -ne $$null) { $$count += $$k } ;$$callerCounts.Set_Item($$clientIP, $$count) ;$$ip=(Get-NetAdapter | Get-NetIpAddress); $$header='<html><body><H1>Windows Container Web Server</H1>' ;$$callerCountsString='' ;$$callerCounts.Keys | % { $$callerCountsString+='<p>IP {0} callerCount {1} ' -f $$ip[1].IPAddress,$$callerCounts.Item($$_) } ;$$footer='</body></html>' ;$$content='{0}{1}{2}' -f $$header,$$callerCountsString,$$footer ;Write-Output $$content ;$$buffer = [System.Text.Encoding]::UTF8.GetBytes($$content) ;$$response.ContentLength64 = $$buffer.Length ;$$response.OutputStream.Write($$buffer, 0, $$buffer.Length) ;$$response.Close() ;$$responseStatus = $$response.StatusCode ;Write-Host('< {0}' -f $$responseStatus)  } ; "
      nodeSelector:
        kubernetes.io/os: windows
      tolerations:
      - key: cattle.io/os
        operator: "Equal"
        value: "windows"
        effect: NoSchedule


================================================
FILE: multi-cluster/windows-helm/values.yaml
================================================
image:
  tag: ltsc2022


================================================
FILE: simple/README.md
================================================
# Simple Example

This example will deploy the [Kubernetes sample guestbook](https://github.com/kubernetes/examples/tree/master/guestbook/) application.
The app will be deployed into the `default` namespace.

```yaml
kind: GitRepo
apiVersion: fleet.cattle.io/v1alpha1
metadata:
  name: simple
  namespace: fleet-local
spec:
  repo: https://github.com/rancher/fleet-examples
  paths:
  - simple
```


================================================
FILE: simple/frontend-deployment.yaml
================================================
apiVersion: apps/v1
kind: Deployment
metadata:
  name: frontend
spec:
  selector:
    matchLabels:
      app: guestbook
      tier: frontend
  replicas: 3
  template:
    metadata:
      labels:
        app: guestbook
        tier: frontend
    spec:
      containers:
      - name: php-redis
        image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 80


================================================
FILE: simple/frontend-service.yaml
================================================
apiVersion: v1
kind: Service
metadata:
  name: frontend
  labels:
    app: guestbook
    tier: frontend
spec:
  type: NodePort
  ports:
  - port: 80
  selector:
    app: guestbook
    tier: frontend


================================================
FILE: simple/redis-master-deployment.yaml
================================================
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-master
spec:
  selector:
    matchLabels:
      app: redis
      role: master
      tier: backend
  replicas: 1
  template:
    metadata:
      labels:
        app: redis
        role: master
        tier: backend
    spec:
      containers:
      - name: master
        image: redis
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 6379


================================================
FILE: simple/redis-master-service.yaml
================================================
apiVersion: v1
kind: Service
metadata:
  name: redis-master
  labels:
    app: redis
    role: master
    tier: backend
spec:
  ports:
  - port: 6379
    targetPort: 6379
  selector:
    app: redis
    role: master
    tier: backend


================================================
FILE: simple/redis-slave-deployment.yaml
================================================
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-slave
spec:
  selector:
    matchLabels:
      app: redis
      role: slave
      tier: backend
  replicas: 2
  template:
    metadata:
      labels:
        app: redis
        role: slave
        tier: backend
    spec:
      containers:
      - name: slave
        image: redis
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 6379


================================================
FILE: simple/redis-slave-service.yaml
================================================
apiVersion: v1
kind: Service
metadata:
  name: redis-slave
  labels:
    app: redis
    role: slave
    tier: backend
spec:
  ports:
  - port: 6379
  selector:
    app: redis
    role: slave
    tier: backend


================================================
FILE: single-cluster/helm/Chart.yaml
================================================
apiVersion: v2
name: guestbook
description: Sample application
version: 0.0.0
appVersion: 0.0.0


================================================
FILE: single-cluster/helm/README.md
================================================
# Helm Example

This example will deploy the [Kubernetes sample guestbook](https://github.com/kubernetes/examples/tree/master/guestbook/) application as
packaged as a Helm chart.
The app will be deployed into the `fleet-helm-example` namespace.

```yaml
kind: GitRepo
apiVersion: fleet.cattle.io/v1alpha1
metadata:
  name: helm
  namespace: fleet-local
spec:
  repo: https://github.com/rancher/fleet-examples
  paths:
  - single-cluster/helm
```


================================================
FILE: single-cluster/helm/fleet.yaml
================================================
# This file and all contents in it are OPTIONAL.

# The namespace this chart will be installed and restricted to,
# if not specified the chart will be installed to "default"
namespace: fleet-helm-example

# Custom helm options
helm:
  # The release name to use. If empty a generated release name will be used
  releaseName: guestbook

  # The directory of the chart in the repo.  Also any valid go-getter supported
  # URL can be used there is specify where to download the chart from.
  # If repo below is set this value if the chart name in the repo
  chart: ""

  # An https to a valid Helm repository to download the chart from
  repo: ""

  # Used if repo is set to look up the version of the chart
  version: ""

  # Force recreate resource that can not be updated
  force: false

  # How long for helm to wait for the release to be active. If the value
  # is less that or equal to zero, we will not wait in Helm
  timeoutSeconds: 0

  # Custom values that will be passed as values.yaml to the installation
  values:
    replicas: 2


================================================
FILE: single-cluster/helm/templates/frontend-deployment.yaml
================================================
apiVersion: apps/v1
kind: Deployment
metadata:
  name: frontend
spec:
  selector:
    matchLabels:
      app: guestbook
      tier: frontend
  replicas: {{ .Values.replicas }}
  template:
    metadata:
      labels:
        app: guestbook
        tier: frontend
    spec:
      containers:
      - name: php-redis
        image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 80


================================================
FILE: single-cluster/helm/templates/frontend-service.yaml
================================================
apiVersion: v1
kind: Service
metadata:
  name: frontend
  labels:
    app: guestbook
    tier: frontend
spec:
  type: "{{ .Values.serviceType }}"
  ports:
  - port: 80
  selector:
    app: guestbook
    tier: frontend


================================================
FILE: single-cluster/helm/templates/redis-master-deployment.yaml
================================================
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-master
spec:
  selector:
    matchLabels:
      app: redis
      role: master
      tier: backend
  replicas: 1
  template:
    metadata:
      labels:
        app: redis
        role: master
        tier: backend
    spec:
      containers:
      - name: master
        image: redis
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 6379


================================================
FILE: single-cluster/helm/templates/redis-master-service.yaml
================================================
apiVersion: v1
kind: Service
metadata:
  name: redis-master
  labels:
    app: redis
    role: master
    tier: backend
spec:
  ports:
  - port: 6379
    targetPort: 6379
  selector:
    app: redis
    role: master
    tier: backend


================================================
FILE: single-cluster/helm/templates/redis-slave-deployment.yaml
================================================
{{ if .Values.replication }}
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-slave
spec:
  selector:
    matchLabels:
      app: redis
      role: slave
      tier: backend
  replicas: 2
  template:
    metadata:
      labels:
        app: redis
        role: slave
        tier: backend
    spec:
      containers:
      - name: slave
        image: redis
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 6379
{{ end }}


================================================
FILE: single-cluster/helm/templates/redis-slave-service.yaml
================================================
apiVersion: v1
kind: Service
metadata:
  name: redis-slave
  labels:
    app: redis
    role: slave
    tier: backend
spec:
  ports:
  - port: 6379
  selector:
    app: redis
    {{ if .Values.replication }}
    role: slave
    {{ else }}
    role: master
    {{ end }}
    tier: backend


================================================
FILE: single-cluster/helm/values.yaml
================================================
replication: true
replicas: 1
serviceType: NodePort


================================================
FILE: single-cluster/helm-kustomize/README.md
================================================
# Helm Kustomize Example

This example will deploy the [Kubernetes sample guestbook](https://github.com/kubernetes/examples/tree/master/guestbook/) application as
packaged as a Helm chart downloaded from a third party source and will modify the helm chart using Kustomize.
The app will be deployed into the `fleet-helm-kustomize-example` namespace.

```yaml
kind: GitRepo
apiVersion: fleet.cattle.io/v1alpha1
metadata:
  name: helm-kustomize
  namespace: fleet-local
spec:
  repo: https://github.com/rancher/fleet-examples
  paths:
  - single-cluster/helm-kustomize
```


================================================
FILE: single-cluster/helm-kustomize/fleet.yaml
================================================
# This file and all contents in it are OPTIONAL.
#
# Refer to ../helm/fleet.yaml and ../kustomize/fleet.yaml for the full reference
# of what can be included here.  All Helm and Kustomize options apply

namespace: fleet-helm-kustomize-example
helm:
  chart: https://github.com/rancher/fleet-examples/releases/download/example/guestbook-0.0.1.tgz
kustomize:
  dir: overlays/dev


================================================
FILE: single-cluster/helm-kustomize/overlays/dev/kustomization.yaml
================================================
patchesStrategicMerge:
- redis-slave-deployment.yaml
- redis-slave-service.yaml


================================================
FILE: single-cluster/helm-kustomize/overlays/dev/redis-slave-deployment.yaml
================================================
kind: Deployment
apiVersion: apps/v1
metadata:
  name: redis-slave
spec:
  replicas: 0


================================================
FILE: single-cluster/helm-kustomize/overlays/dev/redis-slave-service.yaml
================================================
kind: Service
apiVersion: v1
metadata:
  name: redis-slave
spec:
  selector:
    role: master


================================================
FILE: single-cluster/helm-multi-chart/README.md
================================================
# Helm Multi-Chart Example

This example will deploy the [Kubernetes sample guestbook](https://github.com/kubernetes/examples/tree/master/guestbook/) application 
packaged as a Helm chart into the `fleet-helm-example` namespace.
It will also deploy Rancher Monitoring helm charts into the `cattle-monitoring-system` namespace.

```yaml
kind: GitRepo
apiVersion: fleet.cattle.io/v1alpha1
metadata:
  name: helm
  namespace: fleet-local
spec:
  repo: https://github.com/rancher/fleet-examples
  paths:
  - single-cluster/helm-multi-chart
```


================================================
FILE: single-cluster/helm-multi-chart/guestbook/Chart.yaml
================================================
apiVersion: v2
name: guestbook
description: Sample application
version: 0.0.0
appVersion: 0.0.0


================================================
FILE: single-cluster/helm-multi-chart/guestbook/fleet.yaml
================================================
# This file and all contents in it are OPTIONAL.

# The namespace this chart will be installed to,
# if not specified the chart will be installed to "default"
namespace: fleet-multi-chart-helm-example

# Custom helm options
helm:
  # The release name to use. If empty a generated release name will be used
  releaseName: guestbook

  # The directory of the chart in the repo.  Also any valid go-getter supported
  # URL can be used there is specify where to download the chart from.
  # If repo below is set this value if the chart name in the repo
  chart: ""

  # An https to a valid Helm repository to download the chart from
  repo: ""

  # Used if repo is set to look up the version of the chart
  version: ""

  # Force recreate resource that can not be updated
  force: false

  # How long for helm to wait for the release to be active. If the value
  # is less that or equal to zero, we will not wait in Helm
  timeoutSeconds: 0

  # Custom values that will be passed as values.yaml to the installation
  values:
    replicas: 2


================================================
FILE: single-cluster/helm-multi-chart/guestbook/templates/frontend-deployment.yaml
================================================
apiVersion: apps/v1
kind: Deployment
metadata:
  name: frontend
spec:
  selector:
    matchLabels:
      app: guestbook
      tier: frontend
  replicas: {{ .Values.replicas }}
  template:
    metadata:
      labels:
        app: guestbook
        tier: frontend
    spec:
      containers:
      - name: php-redis
        image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 80


================================================
FILE: single-cluster/helm-multi-chart/guestbook/templates/frontend-service.yaml
================================================
apiVersion: v1
kind: Service
metadata:
  name: frontend
  labels:
    app: guestbook
    tier: frontend
spec:
  type: "{{ .Values.serviceType }}"
  ports:
  - port: 80
  selector:
    app: guestbook
    tier: frontend


================================================
FILE: single-cluster/helm-multi-chart/guestbook/templates/redis-master-deployment.yaml
================================================
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-master
spec:
  selector:
    matchLabels:
      app: redis
      role: master
      tier: backend
  replicas: 1
  template:
    metadata:
      labels:
        app: redis
        role: master
        tier: backend
    spec:
      containers:
      - name: master
        image: redis
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 6379


================================================
FILE: single-cluster/helm-multi-chart/guestbook/templates/redis-master-service.yaml
================================================
apiVersion: v1
kind: Service
metadata:
  name: redis-master
  labels:
    app: redis
    role: master
    tier: backend
spec:
  ports:
  - port: 6379
    targetPort: 6379
  selector:
    app: redis
    role: master
    tier: backend


================================================
FILE: single-cluster/helm-multi-chart/guestbook/templates/redis-slave-deployment.yaml
================================================
{{ if .Values.replication }}
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-slave
spec:
  selector:
    matchLabels:
      app: redis
      role: slave
      tier: backend
  replicas: 2
  template:
    metadata:
      labels:
        app: redis
        role: slave
        tier: backend
    spec:
      containers:
      - name: slave
        image: redis
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 6379
{{ end }}


================================================
FILE: single-cluster/helm-multi-chart/guestbook/templates/redis-slave-service.yaml
================================================
apiVersion: v1
kind: Service
metadata:
  name: redis-slave
  labels:
    app: redis
    role: slave
    tier: backend
spec:
  ports:
  - port: 6379
  selector:
    app: redis
    {{ if .Values.replication }}
    role: slave
    {{ else }}
    role: master
    {{ end }}
    tier: backend


================================================
FILE: single-cluster/helm-multi-chart/guestbook/values.yaml
================================================
replication: true
replicas: 1
serviceType: NodePort


================================================
FILE: single-cluster/helm-multi-chart/rancher-monitoring/fleet.yaml
================================================
defaultNamespace: cattle-monitoring-system
helm:
  releaseName: rancher-monitoring
  repo: https://charts.rancher.io
  chart: rancher-monitoring
  version: 104.1.0+up57.0.3
diff:
  comparePatches:
    - apiVersion: admissionregistration.k8s.io/v1
      kind: MutatingWebhookConfiguration
      name: rancher-monitoring-admission
      operations:
        - {"op":"remove", "path":"/webhooks/0/failurePolicy"}
    - apiVersion: admissionregistration.k8s.io/v1
      kind: ValidatingWebhookConfiguration
      name: rancher-monitoring-admission
      operations:
        - {"op":"remove", "path":"/webhooks/0/failurePolicy"}


================================================
FILE: single-cluster/helm-multi-chart/rancher-monitoring-crd/fleet.yaml
================================================
defaultNamespace: cattle-monitoring-system
helm:
  releaseName: rancher-monitoring-crd
  chart: rancher-monitoring-crd
  repo: https://charts.rancher.io
  version: 104.1.0+up57.0.3


================================================
FILE: single-cluster/helm-overlays/README.md
================================================
# Single Helm chart shared between 3 Bundles example

This example deploys the same Helm chart in 3 different Bundles with their own Helm values.
It also demonstrates how to use [user-driven scan](https://fleet.rancher.io/next/explanations/gitrepo-content#_alternative_scan_explicitly_defined_by_the_user).

```yaml
kind: GitRepo
apiVersion: fleet.cattle.io/v1alpha1
metadata:
  name: test-helm-overlays
  namespace: fleet-local
spec:
  repo: https://github.com/rancher/fleet-examples
  bundles:
    - base: single-cluster/helm-overlays
      options: overlays/development/fleet.yaml
    - base: single-cluster/helm-overlays
      options: overlays/test/test.yaml
    - base: single-cluster/helm-overlays
      options: overlays/production/prod.yaml
```


================================================
FILE: single-cluster/helm-overlays/overlays/development/development-values.yaml
================================================
name: development


================================================
FILE: single-cluster/helm-overlays/overlays/development/fleet.yaml
================================================
name: development-bundle
defaultNamespace: development
helm:
  chart: ./superconfigmap
  valuesFiles:
  - overlays/development/development-values.yaml


================================================
FILE: single-cluster/helm-overlays/overlays/production/prod.yaml
================================================
name: prod-bundle
defaultNamespace: production
helm:
  chart: ./superconfigmap
  values:
    name: production



================================================
FILE: single-cluster/helm-overlays/overlays/test/test-values.yaml
================================================
name: test-env


================================================
FILE: single-cluster/helm-overlays/overlays/test/test.yaml
================================================
name: test-bundle
defaultNamespace: test-env
helm:
  chart: ./superconfigmap
  valuesFiles:
  - overlays/test/test-values.yaml


================================================
FILE: single-cluster/helm-overlays/superconfigmap/Chart.yaml
================================================
apiVersion: v2
name: superconfigmap
description: A Helm chart that deploys a ConfigMap
type: application
version: 0.1.0


================================================
FILE: single-cluster/helm-overlays/superconfigmap/templates/configmap.yaml
================================================
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Values.name }}
data:
  test: {{ .Values.name }}


================================================
FILE: single-cluster/helm-overlays/superconfigmap/values.yaml
================================================
name: my-configmap


================================================
FILE: single-cluster/kustomize/README.md
================================================
# Kustomize Example

This example will deploy the [Kubernetes sample guestbook](https://github.com/kubernetes/examples/tree/master/guestbook/) application
using kustomize. The app will be deployed into the `fleet-kustomize-example` namespace.

```yaml
kind: GitRepo
apiVersion: fleet.cattle.io/v1alpha1
metadata:
  name: kustomize
  namespace: fleet-local
spec:
  repo: https://github.com/rancher/fleet-examples
  paths:
  - single-cluster/kustomize
```


================================================
FILE: single-cluster/kustomize/base/frontend-deployment.yaml
================================================
apiVersion: apps/v1
kind: Deployment
metadata:
  name: frontend
spec:
  selector:
    matchLabels:
      app: guestbook
      tier: frontend
  replicas: 1
  template:
    metadata:
      labels:
        app: guestbook
        tier: frontend
    spec:
      containers:
      - name: php-redis
        image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 80


================================================
FILE: single-cluster/kustomize/base/frontend-service.yaml
================================================
apiVersion: v1
kind: Service
metadata:
  name: frontend
  labels:
    app: guestbook
    tier: frontend
spec:
  type: NodePort
  ports:
  - port: 80
  selector:
    app: guestbook
    tier: frontend


================================================
FILE: single-cluster/kustomize/base/kustomization.yaml
================================================
resources:
- frontend-deployment.yaml
- frontend-service.yaml
- redis-master-deployment.yaml
- redis-master-service.yaml
- redis-slave-deployment.yaml
- redis-slave-service.yaml


================================================
FILE: single-cluster/kustomize/base/redis-master-deployment.yaml
================================================
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-master
spec:
  selector:
    matchLabels:
      app: redis
      role: master
      tier: backend
  replicas: 1
  template:
    metadata:
      labels:
        app: redis
        role: master
        tier: backend
    spec:
      containers:
      - name: master
        image: redis
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 6379


================================================
FILE: single-cluster/kustomize/base/redis-master-service.yaml
================================================
apiVersion: v1
kind: Service
metadata:
  name: redis-master
  labels:
    app: redis
    role: master
    tier: backend
spec:
  ports:
  - port: 6379
    targetPort: 6379
  selector:
    app: redis
    role: master
    tier: backend


================================================
FILE: single-cluster/kustomize/base/redis-slave-deployment.yaml
================================================
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-slave
spec:
  selector:
    matchLabels:
      app: redis
      role: slave
      tier: backend
  replicas: 2
  template:
    metadata:
      labels:
        app: redis
        role: slave
        tier: backend
    spec:
      containers:
      - name: slave
        image: redis
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 6379


================================================
FILE: single-cluster/kustomize/base/redis-slave-service.yaml
================================================
apiVersion: v1
kind: Service
metadata:
  name: redis-slave
  labels:
    app: redis
    role: slave
    tier: backend
spec:
  ports:
  - port: 6379
  selector:
    app: redis
    role: slave
    tier: backend


================================================
FILE: single-cluster/kustomize/fleet.yaml
================================================
# This file and all contents in it are OPTIONAL.

# The default namespace to apply to resources that are namespaced
# but do not specify a namespace.  In this example no resources
# are configured with a namespace so this default will apply
namespace: fleet-kustomize-example


kustomize:
  # To use a kustomization.yaml different from the one in the root folder
  dir: ""


================================================
FILE: single-cluster/kustomize/kustomization.yaml
================================================
bases:
- overlays/dev


================================================
FILE: single-cluster/kustomize/overlays/dev/kustomization.yaml
================================================
bases:
- ../../base
patchesStrategicMerge:
- redis-slave-deployment.yaml
- redis-slave-service.yaml


================================================
FILE: single-cluster/kustomize/overlays/dev/redis-slave-deployment.yaml
================================================
kind: Deployment
apiVersion: apps/v1
metadata:
  name: redis-slave
spec:
  replicas: 0


================================================
FILE: single-cluster/kustomize/overlays/dev/redis-slave-service.yaml
================================================
kind: Service
apiVersion: v1
metadata:
  name: redis-slave
spec:
  selector:
    role: master


================================================
FILE: single-cluster/manifests/README.md
================================================
# Manifests Example

This example will deploy the [Kubernetes sample guestbook](https://github.com/kubernetes/examples/tree/master/guestbook/) application.
The app will be deployed into the `fleet-manifest-example` namespace.

```yaml
kind: GitRepo
apiVersion: fleet.cattle.io/v1alpha1
metadata:
  name: manifests
  namespace: fleet-local
spec:
  repo: https://github.com/rancher/fleet-examples
  paths:
  - single-cluster/manifests
```


================================================
FILE: single-cluster/manifests/deployments/frontend-deployment.yaml
================================================
apiVersion: apps/v1
kind: Deployment
metadata:
  name: frontend
spec:
  selector:
    matchLabels:
      app: guestbook
      tier: frontend
  replicas: 1
  template:
    metadata:
      labels:
        app: guestbook
        tier: frontend
    spec:
      containers:
      - name: php-redis
        image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 80


================================================
FILE: single-cluster/manifests/deployments/redis-master-deployment.yaml
================================================
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-master
spec:
  selector:
    matchLabels:
      app: redis
      role: master
      tier: backend
  replicas: 1
  template:
    metadata:
      labels:
        app: redis
        role: master
        tier: backend
    spec:
      containers:
      - name: master
        image: redis
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 6379


================================================
FILE: single-cluster/manifests/deployments/redis-slave-deployment.yaml
================================================
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-slave
spec:
  selector:
    matchLabels:
      app: redis
      role: slave
      tier: backend
  replicas: 2
  template:
    metadata:
      labels:
        app: redis
        role: slave
        tier: backend
    spec:
      containers:
      - name: slave
        image: redis
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 6379


================================================
FILE: single-cluster/manifests/fleet.yaml
================================================
# This file and all contents in it are OPTIONAL.

# The default namespace to apply to resources that are namespaced
# but do not specify a namespace.  In this example no resources
# are configured with a namespace so this default will apply
namespace: fleet-manifest-example


================================================
FILE: single-cluster/manifests/services/frontend-service.yaml
================================================
apiVersion: v1
kind: Service
metadata:
  name: frontend
  labels:
    app: guestbook
    tier: frontend
spec:
  type: NodePort
  ports:
  - port: 80
  selector:
    app: guestbook
    tier: frontend


================================================
FILE: single-cluster/manifests/services/redis-master-service.yaml
================================================
apiVersion: v1
kind: Service
metadata:
  name: redis-master
  labels:
    app: redis
    role: master
    tier: backend
spec:
  ports:
  - port: 6379
    targetPort: 6379
  selector:
    app: redis
    role: master
    tier: backend


================================================
FILE: single-cluster/manifests/services/redis-slave-service.yaml
================================================
apiVersion: v1
kind: Service
metadata:
  name: redis-slave
  labels:
    app: redis
    role: slave
    tier: backend
spec:
  ports:
  - port: 6379
  selector:
    app: redis
    role: slave
    tier: backend


================================================
FILE: single-cluster/multi-gitrepo/README.md
================================================
# Multi-GitRepo example

This example will deploy the [Kubernetes sample guestbook](https://github.com/kubernetes/examples/tree/master/guestbook/) application using 2 different `GitRepo CRs`, splitting the frontend and the backend as different Helm charts.

The initial `GitRepo` will point to a folder containing 2 `GitRepo` resources that will be deployed in cascade. 

The app will be deployed into the `fleet-helm-example` namespace.

```yaml
kind: GitRepo
apiVersion: fleet.cattle.io/v1alpha1
metadata:
  name: multi-gitrepo
  namespace: fleet-local
spec:
  repo: https://github.com/rancher/fleet-examples
  paths:
  - single-cluster/multi-gitrepos/gitrepos
```



================================================
FILE: single-cluster/multi-gitrepo/frontend/Chart.yaml
================================================
apiVersion: v2
name: guestbook-frontend
description: Sample application frontend
version: 0.0.0
appVersion: 0.0.0


================================================
FILE: single-cluster/multi-gitrepo/frontend/README.md
================================================
# Multi-GitRepo example (frontend)

This example will deploy the [Kubernetes sample guestbook](https://github.com/kubernetes/examples/tree/master/guestbook/) frontend application packaged as a Helm chart.
The app will be deployed into the `fleet-helm-example` namespace.
It will be deployed as part of the [multi-gitrepo](https://github.com/rancher/fleet-examples/tree/master/single-cluster/multi-gitrepo) example.



================================================
FILE: single-cluster/multi-gitrepo/frontend/fleet.yaml
================================================
# This file and all contents in it are OPTIONAL.

# The namespace this chart will be installed and restricted to,
# if not specified the chart will be installed to "default"
namespace: fleet-helm-example

# Custom helm options
helm:
  # The release name to use. If empty a generated release name will be used
  releaseName: guestbook-frontend

  # The directory of the chart in the repo.  Also any valid go-getter supported
  # URL can be used there is specify where to download the chart from.
  # If repo below is set this value if the chart name in the repo
  chart: ""

  # An https to a valid Helm repository to download the chart from
  repo: ""

  # Used if repo is set to look up the version of the chart
  version: ""

  # Force recreate resource that can not be updated
  force: false

  # How long for helm to wait for the release to be active. If the value
  # is less that or equal to zero, we will not wait in Helm
  timeoutSeconds: 0

  # Custom values that will be passed as values.yaml to the installation
  values:
    replicas: 2


================================================
FILE: single-cluster/multi-gitrepo/frontend/templates/frontend-deployment.yaml
================================================
apiVersion: apps/v1
kind: Deployment
metadata:
  name: frontend
spec:
  selector:
    matchLabels:
      app: guestbook
      tier: frontend
  replicas: {{ .Values.replicas }}
  template:
    metadata:
      labels:
        app: guestbook
        tier: frontend
    spec:
      containers:
      - name: php-redis
        image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 80


================================================
FILE: single-cluster/multi-gitrepo/frontend/templates/frontend-service.yaml
================================================
apiVersion: v1
kind: Service
metadata:
  name: frontend
  labels:
    app: guestbook
    tier: frontend
spec:
  type: "{{ .Values.serviceType }}"
  ports:
  - port: 80
  selector:
    app: guestbook
    tier: frontend


================================================
FILE: single-cluster/multi-gitrepo/frontend/values.yaml
================================================
replication: true
replicas: 1
serviceType: NodePort


================================================
FILE: single-cluster/multi-gitrepo/gitrepos/README.md
================================================
# Multi-GitRepo example (gitrepos)

This folder contains the `GitRepo CRs` that will be deployed in the [multi-gitrepo](https://github.com/rancher/fleet-examples/tree/master/single-cluster/multi-gitrepo) example.



================================================
FILE: single-cluster/multi-gitrepo/gitrepos/frontend.yaml
================================================
kind: GitRepo
apiVersion: fleet.cattle.io/v1alpha1
metadata:
  name: multigitrepo-frontend
  namespace: fleet-local
spec:
  repo: https://github.com/0xavi0/fleet-examples
  branch: multi-gitrepo
  paths:
  - single-cluster/multi-gitrepo/frontend



================================================
FILE: single-cluster/multi-gitrepo/gitrepos/redis.yaml
================================================
kind: GitRepo
apiVersion: fleet.cattle.io/v1alpha1
metadata:
  name: multigitrepo-redis
  namespace: fleet-local
spec:
  repo: https://github.com/0xavi0/fleet-examples
  branch: multi-gitrepo
  paths:
  - single-cluster/multi-gitrepo/redis



================================================
FILE: single-cluster/multi-gitrepo/redis/Chart.yaml
================================================
apiVersion: v2
name: guestbook-redis
description: Sample application (redis)
version: 0.0.0
appVersion: 0.0.0


================================================
FILE: single-cluster/multi-gitrepo/redis/README.md
================================================
# Helm Example

This example will deploy the [Kubernetes sample guestbook](https://github.com/kubernetes/examples/tree/master/guestbook/) application backend packaged as a Helm chart.
The app will be deployed into the `fleet-helm-example` namespace.
It will be deployed as part of the [multi-gitrepo](https://github.com/rancher/fleet-examples/tree/master/single-cluster/multi-gitrepo) example.



================================================
FILE: single-cluster/multi-gitrepo/redis/fleet.yaml
================================================
# This file and all contents in it are OPTIONAL.

# The namespace this chart will be installed and restricted to,
# if not specified the chart will be installed to "default"
namespace: fleet-helm-example

# Custom helm options
helm:
  # The release name to use. If empty a generated release name will be used
  releaseName: guestbook-redis

  # The directory of the chart in the repo.  Also any valid go-getter supported
  # URL can be used there is specify where to download the chart from.
  # If repo below is set this value if the chart name in the repo
  chart: ""

  # An https to a valid Helm repository to download the chart from
  repo: ""

  # Used if repo is set to look up the version of the chart
  version: ""

  # Force recreate resource that can not be updated
  force: false

  # How long for helm to wait for the release to be active. If the value
  # is less that or equal to zero, we will not wait in Helm
  timeoutSeconds: 0

  # Custom values that will be passed as values.yaml to the installation
  values:
    replicas: 2


================================================
FILE: single-cluster/multi-gitrepo/redis/templates/redis-master-deployment.yaml
================================================
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-master
spec:
  selector:
    matchLabels:
      app: redis
      role: master
      tier: backend
  replicas: 1
  template:
    metadata:
      labels:
        app: redis
        role: master
        tier: backend
    spec:
      containers:
      - name: master
        image: registry.k8s.io/redis:e2e
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 6379


================================================
FILE: single-cluster/multi-gitrepo/redis/templates/redis-master-service.yaml
================================================
apiVersion: v1
kind: Service
metadata:
  name: redis-master
  labels:
    app: redis
    role: master
    tier: backend
spec:
  ports:
  - port: 6379
    targetPort: 6379
  selector:
    app: redis
    role: master
    tier: backend


================================================
FILE: single-cluster/multi-gitrepo/redis/templates/redis-slave-deployment.yaml
================================================
{{ if .Values.replication }}
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-slave
spec:
  selector:
    matchLabels:
      app: redis
      role: slave
      tier: backend
  replicas: 2
  template:
    metadata:
      labels:
        app: redis
        role: slave
        tier: backend
    spec:
      containers:
      - name: slave
        image: gcr.io/google_samples/gb-redisslave:v2
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 6379
{{ end }}


================================================
FILE: single-cluster/multi-gitrepo/redis/templates/redis-slave-service.yaml
================================================
apiVersion: v1
kind: Service
metadata:
  name: redis-slave
  labels:
    app: redis
    role: slave
    tier: backend
spec:
  ports:
  - port: 6379
  selector:
    app: redis
    {{ if .Values.replication }}
    role: slave
    {{ else }}
    role: master
    {{ end }}
    tier: backend


================================================
FILE: single-cluster/multi-gitrepo/redis/values.yaml
================================================
replication: true
replicas: 1
serviceType: NodePort


================================================
FILE: tests/expected/multi-cluster/helm/bundle.yaml
================================================
apiVersion: fleet.cattle.io/v1alpha1
kind: Bundle
metadata:
  labels:
    fleet.cattle.io/commit: fake
  name: test
  namespace: fleet-default
spec:
  namespace: fleet-mc-helm-example
  resources:
  - content: |
      apiVersion: v2
      name: guestbook
      description: Sample application
      version: 0.0.0
      appVersion: 0.0.0
    name: Chart.yaml
  - content: |
      # Multi-Cluster Helm Example

      This example will deploy the [Kubernetes sample guestbook](https://github.com/kubernetes/examples/tree/master/guestbook/) application as
      packaged as a Helm chart.
      The app will be deployed into the `fleet-mc-helm-example` namespace.

      The application will be customized as follows per environment:

      * Dev clusters: Only the redis leader is deployed and not the followers.
      * Test clusters: Scale the front deployment to 3
      * Prod clusters: Scale the front deployment to 3 and set the service type to LoadBalancer

      ```yaml
      kind: GitRepo
      apiVersion: fleet.cattle.io/v1alpha1
      metadata:
        name: helm
        namespace: fleet-default
      spec:
        repo: https://github.com/rancher/fleet-examples
        paths:
        - multi-cluster/helm
        targets:
        - name: dev
          clusterSelector:
            matchLabels:
              env: dev

        - name: test
          clusterSelector:
            matchLabels:
              env: test

        - name: prod
          clusterSelector:
            matchLabels:
              env: prod
      ```
    name: README.md
  - content: |
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: frontend
      spec:
        selector:
          matchLabels:
            app: guestbook
            tier: frontend
        replicas: {{ .Values.replicas }}
        template:
          metadata:
            labels:
              app: guestbook
              tier: frontend
          spec:
            containers:
            - name: php-redis
              image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5
              resources:
                requests:
                  cpu: 100m
                  memory: 100Mi
              ports:
              - containerPort: 80
    name: templates/frontend-deployment.yaml
  - content: |
      apiVersion: v1
      kind: Service
      metadata:
        name: frontend
        labels:
          app: guestbook
          tier: frontend
      spec:
        type: "{{ .Values.serviceType }}"
        ports:
        - port: 80
        selector:
          app: guestbook
          tier: frontend
    name: templates/frontend-service.yaml
  - content: |
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: redis-master
      spec:
        selector:
          matchLabels:
            app: redis
            role: master
            tier: backend
        replicas: 1
        template:
          metadata:
            labels:
              app: redis
              role: master
              tier: backend
          spec:
            containers:
            - name: master
              image: redis
              resources:
                requests:
                  cpu: 100m
                  memory: 100Mi
              ports:
              - containerPort: 6379
    name: templates/redis-master-deployment.yaml
  - content: |
      apiVersion: v1
      kind: Service
      metadata:
        name: redis-master
        labels:
          app: redis
          role: master
          tier: backend
      spec:
        ports:
        - port: 6379
          targetPort: 6379
        selector:
          app: redis
          role: master
          tier: backend
    name: templates/redis-master-service.yaml
  - content: |
      {{ if .Values.replication }}
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: redis-slave
      spec:
        selector:
          matchLabels:
            app: redis
            role: slave
            tier: backend
        replicas: 2
        template:
          metadata:
            labels:
              app: redis
              role: slave
              tier: backend
          spec:
            containers:
            - name: slave
              image: redis
              resources:
                requests:
                  cpu: 100m
                  memory: 100Mi
              ports:
              - containerPort: 6379
      {{ end }}
    name: templates/redis-slave-deployment.yaml
  - content: |
      apiVersion: v1
      kind: Service
      metadata:
        name: redis-slave
        labels:
          app: redis
          role: slave
          tier: backend
      spec:
        ports:
        - port: 6379
        selector:
          app: redis
          {{ if .Values.replication }}
          role: slave
          {{ else }}
          role: master
          {{ end }}
          tier: backend
    name: templates/redis-slave-service.yaml
  - content: |
      replication: true
      replicas: 1
      serviceType: NodePort
    name: values.yaml
  targets:
  - clusterSelector:
      matchLabels:
        env: dev
    helm:
      values:
        replication: false
    name: dev
  - clusterSelector:
      matchLabels:
        env: test
    helm:
      values:
        replicas: 3
    name: test
  - clusterSelector:
      matchLabels:
        env: prod
    helm:
      values:
        replicas: 3
        serviceType: LoadBalancer
    name: prod


================================================
FILE: tests/expected/multi-cluster/helm/dev-output.yaml
================================================
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: guestbook
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      tier: frontend
    name: frontend
    namespace: fleet-mc-helm-example
  spec:
    ports:
    - port: 80
    selector:
      app: guestbook
      tier: frontend
    type: NodePort
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: redis
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      role: master
      tier: backend
    name: redis-master
    namespace: fleet-mc-helm-example
  spec:
    ports:
    - port: 6379
      targetPort: 6379
    selector:
      app: redis
      role: master
      tier: backend
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: redis
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      role: slave
      tier: backend
    name: redis-slave
    namespace: fleet-mc-helm-example
  spec:
    ports:
    - port: 6379
    selector:
      app: redis
      role: master
      tier: backend
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: frontend
    namespace: fleet-mc-helm-example
  spec:
    replicas: 1
    selector:
      matchLabels:
        app: guestbook
        tier: frontend
    template:
      metadata:
        labels:
          app: guestbook
          tier: frontend
      spec:
        containers:
        - image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5
          name: php-redis
          ports:
          - containerPort: 80
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: redis-master
    namespace: fleet-mc-helm-example
  spec:
    replicas: 1
    selector:
      matchLabels:
        app: redis
        role: master
        tier: backend
    template:
      metadata:
        labels:
          app: redis
          role: master
          tier: backend
      spec:
        containers:
        - image: redis
          name: master
          ports:
          - containerPort: 6379
          resources:
            requests:
              cpu: 100m
              memory: 100Mi



================================================
FILE: tests/expected/multi-cluster/helm/prod-output.yaml
================================================
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: guestbook
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      tier: frontend
    name: frontend
    namespace: fleet-mc-helm-example
  spec:
    ports:
    - port: 80
    selector:
      app: guestbook
      tier: frontend
    type: LoadBalancer
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: redis
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      role: master
      tier: backend
    name: redis-master
    namespace: fleet-mc-helm-example
  spec:
    ports:
    - port: 6379
      targetPort: 6379
    selector:
      app: redis
      role: master
      tier: backend
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: redis
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      role: slave
      tier: backend
    name: redis-slave
    namespace: fleet-mc-helm-example
  spec:
    ports:
    - port: 6379
    selector:
      app: redis
      role: slave
      tier: backend
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: frontend
    namespace: fleet-mc-helm-example
  spec:
    replicas: 3
    selector:
      matchLabels:
        app: guestbook
        tier: frontend
    template:
      metadata:
        labels:
          app: guestbook
          tier: frontend
      spec:
        containers:
        - image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5
          name: php-redis
          ports:
          - containerPort: 80
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: redis-master
    namespace: fleet-mc-helm-example
  spec:
    replicas: 1
    selector:
      matchLabels:
        app: redis
        role: master
        tier: backend
    template:
      metadata:
        labels:
          app: redis
          role: master
          tier: backend
      spec:
        containers:
        - image: redis
          name: master
          ports:
          - containerPort: 6379
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: redis-slave
    namespace: fleet-mc-helm-example
  spec:
    replicas: 2
    selector:
      matchLabels:
        app: redis
        role: slave
        tier: backend
    template:
      metadata:
        labels:
          app: redis
          role: slave
          tier: backend
      spec:
        containers:
        - image: redis
          name: slave
          ports:
          - containerPort: 6379
          resources:
            requests:
              cpu: 100m
              memory: 100Mi



================================================
FILE: tests/expected/multi-cluster/helm/test-output.yaml
================================================
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: guestbook
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      tier: frontend
    name: frontend
    namespace: fleet-mc-helm-example
  spec:
    ports:
    - port: 80
    selector:
      app: guestbook
      tier: frontend
    type: NodePort
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: redis
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      role: master
      tier: backend
    name: redis-master
    namespace: fleet-mc-helm-example
  spec:
    ports:
    - port: 6379
      targetPort: 6379
    selector:
      app: redis
      role: master
      tier: backend
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: redis
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      role: slave
      tier: backend
    name: redis-slave
    namespace: fleet-mc-helm-example
  spec:
    ports:
    - port: 6379
    selector:
      app: redis
      role: slave
      tier: backend
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: frontend
    namespace: fleet-mc-helm-example
  spec:
    replicas: 3
    selector:
      matchLabels:
        app: guestbook
        tier: frontend
    template:
      metadata:
        labels:
          app: guestbook
          tier: frontend
      spec:
        containers:
        - image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5
          name: php-redis
          ports:
          - containerPort: 80
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: redis-master
    namespace: fleet-mc-helm-example
  spec:
    replicas: 1
    selector:
      matchLabels:
        app: redis
        role: master
        tier: backend
    template:
      metadata:
        labels:
          app: redis
          role: master
          tier: backend
      spec:
        containers:
        - image: redis
          name: master
          ports:
          - containerPort: 6379
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: redis-slave
    namespace: fleet-mc-helm-example
  spec:
    replicas: 2
    selector:
      matchLabels:
        app: redis
        role: slave
        tier: backend
    template:
      metadata:
        labels:
          app: redis
          role: slave
          tier: backend
      spec:
        containers:
        - image: redis
          name: slave
          ports:
          - containerPort: 6379
          resources:
            requests:
              cpu: 100m
              memory: 100Mi



================================================
FILE: tests/expected/multi-cluster/helm-external/bundle.yaml
================================================
apiVersion: fleet.cattle.io/v1alpha1
kind: Bundle
metadata:
  labels:
    fleet.cattle.io/commit: fake
  name: test
  namespace: fleet-default
spec:
  helm:
    chart: https://github.com/rancher/fleet-examples/releases/download/example/guestbook-0.0.1.tgz
  namespace: fleet-mc-helm-external-example
  resources:
  - content: |
      apiVersion: v2
      appVersion: 0.0.1
      description: Sample application
      name: guestbook
      version: 0.0.1
    name: .chart/ce648b1a536ac8c844ef58f2c3383e621a823acb2be15fa4b0d1cf053709a787/guestbook/Chart.yaml
  - content: |
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: frontend
      spec:
        selector:
          matchLabels:
            app: guestbook
            tier: frontend
        replicas: {{ .Values.replicas }}
        template:
          metadata:
            labels:
              app: guestbook
              tier: frontend
          spec:
            containers:
            - name: php-redis
              image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5
              resources:
                requests:
                  cpu: 100m
                  memory: 100Mi
              ports:
              - containerPort: 80
    name: .chart/ce648b1a536ac8c844ef58f2c3383e621a823acb2be15fa4b0d1cf053709a787/guestbook/templates/frontend-deployment.yaml
  - content: |
      apiVersion: v1
      kind: Service
      metadata:
        name: frontend
        labels:
          app: guestbook
          tier: frontend
      spec:
        type: "{{ .Values.serviceType }}"
        ports:
        - port: 80
        selector:
          app: guestbook
          tier: frontend
    name: .chart/ce648b1a536ac8c844ef58f2c3383e621a823acb2be15fa4b0d1cf053709a787/guestbook/templates/frontend-service.yaml
  - content: |
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: redis-master
      spec:
        selector:
          matchLabels:
            app: redis
            role: master
            tier: backend
        replicas: 1
        template:
          metadata:
            labels:
              app: redis
              role: master
              tier: backend
          spec:
            containers:
            - name: master
              image: redis
              resources:
                requests:
                  cpu: 100m
                  memory: 100Mi
              ports:
              - containerPort: 6379
    name: .chart/ce648b1a536ac8c844ef58f2c3383e621a823acb2be15fa4b0d1cf053709a787/guestbook/templates/redis-master-deployment.yaml
  - content: |
      apiVersion: v1
      kind: Service
      metadata:
        name: redis-master
        labels:
          app: redis
          role: master
          tier: backend
      spec:
        ports:
        - port: 6379
          targetPort: 6379
        selector:
          app: redis
          role: master
          tier: backend
    name: .chart/ce648b1a536ac8c844ef58f2c3383e621a823acb2be15fa4b0d1cf053709a787/guestbook/templates/redis-master-service.yaml
  - content: |
      {{ if .Values.replication }}
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: redis-slave
      spec:
        selector:
          matchLabels:
            app: redis
            role: slave
            tier: backend
        replicas: 2
        template:
          metadata:
            labels:
              app: redis
              role: slave
              tier: backend
          spec:
            containers:
            - name: slave
              image: redis
              resources:
                requests:
                  cpu: 100m
                  memory: 100Mi
              ports:
              - containerPort: 6379
      {{ end }}
    name: .chart/ce648b1a536ac8c844ef58f2c3383e621a823acb2be15fa4b0d1cf053709a787/guestbook/templates/redis-slave-deployment.yaml
  - content: |
      apiVersion: v1
      kind: Service
      metadata:
        name: redis-slave
        labels:
          app: redis
          role: slave
          tier: backend
      spec:
        ports:
        - port: 6379
        selector:
          app: redis
          {{ if .Values.replication }}
          role: slave
          {{ else }}
          role: master
          {{ end }}
          tier: backend
    name: .chart/ce648b1a536ac8c844ef58f2c3383e621a823acb2be15fa4b0d1cf053709a787/guestbook/templates/redis-slave-service.yaml
  - content: |
      replication: true
      replicas: 1
      serviceType: NodePort
    name: .chart/ce648b1a536ac8c844ef58f2c3383e621a823acb2be15fa4b0d1cf053709a787/guestbook/values.yaml
  - content: |
      # Multi-Cluster Helm External Example

      This example will deploy the [Kubernetes sample guestbook](https://github.com/kubernetes/examples/tree/master/guestbook/) application as
      packaged as a Helm chart downloaded from a third party source.
      The app will be deployed into the `fleet-mc-helm-external-example` namespace.

      The application will be customized as follows per environment:

      * Dev clusters: Only the redis leader is deployed and not the followers.
      * Test clusters: Scale the front deployment to 3
      * Prod clusters: Scale the front deployment to 3 and set the service type to LoadBalancer

      ```yaml
      kind: GitRepo
      apiVersion: fleet.cattle.io/v1alpha1
      metadata:
        name: helm-external
        namespace: fleet-default
      spec:
        repo: https://github.com/rancher/fleet-examples
        paths:
        - multi-cluster/helm-external
        targets:
        - name: dev
          clusterSelector:
            matchLabels:
              env: dev

        - name: test
          clusterSelector:
            matchLabels:
              env: test

        - name: prod
          clusterSelector:
            matchLabels:
              env: prod
      ```
    name: README.md
  targets:
  - clusterSelector:
      matchLabels:
        env: dev
    helm:
      chart: https://github.com/rancher/fleet-examples/releases/download/example/guestbook-0.0.1.tgz
      values:
        replication: false
    name: dev
  - clusterSelector:
      matchLabels:
        env: test
    helm:
      chart: https://github.com/rancher/fleet-examples/releases/download/example/guestbook-0.0.1.tgz
      values:
        replicas: 3
    name: test
  - clusterSelector:
      matchLabels:
        env: prod
    helm:
      chart: https://github.com/rancher/fleet-examples/releases/download/example/guestbook-0.0.1.tgz
      values:
        replicas: 3
        serviceType: LoadBalancer
    name: prod


================================================
FILE: tests/expected/multi-cluster/helm-external/dev-output.yaml
================================================
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: guestbook
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      tier: frontend
    name: frontend
    namespace: fleet-mc-helm-external-example
  spec:
    ports:
    - port: 80
    selector:
      app: guestbook
      tier: frontend
    type: NodePort
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: redis
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      role: master
      tier: backend
    name: redis-master
    namespace: fleet-mc-helm-external-example
  spec:
    ports:
    - port: 6379
      targetPort: 6379
    selector:
      app: redis
      role: master
      tier: backend
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: redis
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      role: slave
      tier: backend
    name: redis-slave
    namespace: fleet-mc-helm-external-example
  spec:
    ports:
    - port: 6379
    selector:
      app: redis
      role: master
      tier: backend
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: frontend
    namespace: fleet-mc-helm-external-example
  spec:
    replicas: 1
    selector:
      matchLabels:
        app: guestbook
        tier: frontend
    template:
      metadata:
        labels:
          app: guestbook
          tier: frontend
      spec:
        containers:
        - image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5
          name: php-redis
          ports:
          - containerPort: 80
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: redis-master
    namespace: fleet-mc-helm-external-example
  spec:
    replicas: 1
    selector:
      matchLabels:
        app: redis
        role: master
        tier: backend
    template:
      metadata:
        labels:
          app: redis
          role: master
          tier: backend
      spec:
        containers:
        - image: redis
          name: master
          ports:
          - containerPort: 6379
          resources:
            requests:
              cpu: 100m
              memory: 100Mi



================================================
FILE: tests/expected/multi-cluster/helm-external/prod-output.yaml
================================================
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: guestbook
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      tier: frontend
    name: frontend
    namespace: fleet-mc-helm-external-example
  spec:
    ports:
    - port: 80
    selector:
      app: guestbook
      tier: frontend
    type: LoadBalancer
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: redis
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      role: master
      tier: backend
    name: redis-master
    namespace: fleet-mc-helm-external-example
  spec:
    ports:
    - port: 6379
      targetPort: 6379
    selector:
      app: redis
      role: master
      tier: backend
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: redis
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      role: slave
      tier: backend
    name: redis-slave
    namespace: fleet-mc-helm-external-example
  spec:
    ports:
    - port: 6379
    selector:
      app: redis
      role: slave
      tier: backend
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: frontend
    namespace: fleet-mc-helm-external-example
  spec:
    replicas: 3
    selector:
      matchLabels:
        app: guestbook
        tier: frontend
    template:
      metadata:
        labels:
          app: guestbook
          tier: frontend
      spec:
        containers:
        - image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5
          name: php-redis
          ports:
          - containerPort: 80
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: redis-master
    namespace: fleet-mc-helm-external-example
  spec:
    replicas: 1
    selector:
      matchLabels:
        app: redis
        role: master
        tier: backend
    template:
      metadata:
        labels:
          app: redis
          role: master
          tier: backend
      spec:
        containers:
        - image: redis
          name: master
          ports:
          - containerPort: 6379
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: redis-slave
    namespace: fleet-mc-helm-external-example
  spec:
    replicas: 2
    selector:
      matchLabels:
        app: redis
        role: slave
        tier: backend
    template:
      metadata:
        labels:
          app: redis
          role: slave
          tier: backend
      spec:
        containers:
        - image: redis
          name: slave
          ports:
          - containerPort: 6379
          resources:
            requests:
              cpu: 100m
              memory: 100Mi



================================================
FILE: tests/expected/multi-cluster/helm-external/test-output.yaml
================================================
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: guestbook
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      tier: frontend
    name: frontend
    namespace: fleet-mc-helm-external-example
  spec:
    ports:
    - port: 80
    selector:
      app: guestbook
      tier: frontend
    type: NodePort
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: redis
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      role: master
      tier: backend
    name: redis-master
    namespace: fleet-mc-helm-external-example
  spec:
    ports:
    - port: 6379
      targetPort: 6379
    selector:
      app: redis
      role: master
      tier: backend
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: redis
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      role: slave
      tier: backend
    name: redis-slave
    namespace: fleet-mc-helm-external-example
  spec:
    ports:
    - port: 6379
    selector:
      app: redis
      role: slave
      tier: backend
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: frontend
    namespace: fleet-mc-helm-external-example
  spec:
    replicas: 3
    selector:
      matchLabels:
        app: guestbook
        tier: frontend
    template:
      metadata:
        labels:
          app: guestbook
          tier: frontend
      spec:
        containers:
        - image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5
          name: php-redis
          ports:
          - containerPort: 80
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: redis-master
    namespace: fleet-mc-helm-external-example
  spec:
    replicas: 1
    selector:
      matchLabels:
        app: redis
        role: master
        tier: backend
    template:
      metadata:
        labels:
          app: redis
          role: master
          tier: backend
      spec:
        containers:
        - image: redis
          name: master
          ports:
          - containerPort: 6379
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: redis-slave
    namespace: fleet-mc-helm-external-example
  spec:
    replicas: 2
    selector:
      matchLabels:
        app: redis
        role: slave
        tier: backend
    template:
      metadata:
        labels:
          app: redis
          role: slave
          tier: backend
      spec:
        containers:
        - image: redis
          name: slave
          ports:
          - containerPort: 6379
          resources:
            requests:
              cpu: 100m
              memory: 100Mi



================================================
FILE: tests/expected/multi-cluster/helm-kustomize/bundle.yaml
================================================
apiVersion: fleet.cattle.io/v1alpha1
kind: Bundle
metadata:
  labels:
    fleet.cattle.io/commit: fake
  name: test
  namespace: fleet-default
spec:
  helm:
    chart: https://github.com/rancher/fleet-examples/releases/download/example/guestbook-0.0.1.tgz
  namespace: fleet-mc-helm-kustomize-example
  resources:
  - content: |
      apiVersion: v2
      appVersion: 0.0.1
      description: Sample application
      name: guestbook
      version: 0.0.1
    name: .chart/ce648b1a536ac8c844ef58f2c3383e621a823acb2be15fa4b0d1cf053709a787/guestbook/Chart.yaml
  - content: |
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: frontend
      spec:
        selector:
          matchLabels:
            app: guestbook
            tier: frontend
        replicas: {{ .Values.replicas }}
        template:
          metadata:
            labels:
              app: guestbook
              tier: frontend
          spec:
            containers:
            - name: php-redis
              image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5
              resources:
                requests:
                  cpu: 100m
                  memory: 100Mi
              ports:
              - containerPort: 80
    name: .chart/ce648b1a536ac8c844ef58f2c3383e621a823acb2be15fa4b0d1cf053709a787/guestbook/templates/frontend-deployment.yaml
  - content: |
      apiVersion: v1
      kind: Service
      metadata:
        name: frontend
        labels:
          app: guestbook
          tier: frontend
      spec:
        type: "{{ .Values.serviceType }}"
        ports:
        - port: 80
        selector:
          app: guestbook
          tier: frontend
    name: .chart/ce648b1a536ac8c844ef58f2c3383e621a823acb2be15fa4b0d1cf053709a787/guestbook/templates/frontend-service.yaml
  - content: |
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: redis-master
      spec:
        selector:
          matchLabels:
            app: redis
            role: master
            tier: backend
        replicas: 1
        template:
          metadata:
            labels:
              app: redis
              role: master
              tier: backend
          spec:
            containers:
            - name: master
              image: redis
              resources:
                requests:
                  cpu: 100m
                  memory: 100Mi
              ports:
              - containerPort: 6379
    name: .chart/ce648b1a536ac8c844ef58f2c3383e621a823acb2be15fa4b0d1cf053709a787/guestbook/templates/redis-master-deployment.yaml
  - content: |
      apiVersion: v1
      kind: Service
      metadata:
        name: redis-master
        labels:
          app: redis
          role: master
          tier: backend
      spec:
        ports:
        - port: 6379
          targetPort: 6379
        selector:
          app: redis
          role: master
          tier: backend
    name: .chart/ce648b1a536ac8c844ef58f2c3383e621a823acb2be15fa4b0d1cf053709a787/guestbook/templates/redis-master-service.yaml
  - content: |
      {{ if .Values.replication }}
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: redis-slave
      spec:
        selector:
          matchLabels:
            app: redis
            role: slave
            tier: backend
        replicas: 2
        template:
          metadata:
            labels:
              app: redis
              role: slave
              tier: backend
          spec:
            containers:
            - name: slave
              image: redis
              resources:
                requests:
                  cpu: 100m
                  memory: 100Mi
              ports:
              - containerPort: 6379
      {{ end }}
    name: .chart/ce648b1a536ac8c844ef58f2c3383e621a823acb2be15fa4b0d1cf053709a787/guestbook/templates/redis-slave-deployment.yaml
  - content: |
      apiVersion: v1
      kind: Service
      metadata:
        name: redis-slave
        labels:
          app: redis
          role: slave
          tier: backend
      spec:
        ports:
        - port: 6379
        selector:
          app: redis
          {{ if .Values.replication }}
          role: slave
          {{ else }}
          role: master
          {{ end }}
          tier: backend
    name: .chart/ce648b1a536ac8c844ef58f2c3383e621a823acb2be15fa4b0d1cf053709a787/guestbook/templates/redis-slave-service.yaml
  - content: |
      replication: true
      replicas: 1
      serviceType: NodePort
    name: .chart/ce648b1a536ac8c844ef58f2c3383e621a823acb2be15fa4b0d1cf053709a787/guestbook/values.yaml
  - content: |
      # Multi-Cluster Helm Kustomize Example

      This example will deploy the [Kubernetes sample guestbook](https://github.com/kubernetes/examples/tree/master/guestbook/) application as
      packaged as a Helm chart downloaded from a third party source and will modify the helm chart using Kustomize.
      The app will be deployed into the `fleet-mc-helm-kustomize-example` namespace.

      The application will be customized as follows per environment:

      * Dev clusters: Only the redis leader is deployed and not the followers.
      * Test clusters: Scale the front deployment to 3
      * Prod clusters: Scale the front deployment to 3 and set the service type to LoadBalancer

      ```yaml
      kind: GitRepo
      apiVersion: fleet.cattle.io/v1alpha1
      metadata:
        name: helm-kustomize
        namespace: fleet-default
      spec:
        repo: https://github.com/rancher/fleet-examples
        paths:
        - multi-cluster/helm-kustomize
        targets:
        - name: dev
          clusterSelector:
            matchLabels:
              env: dev

        - name: test
          clusterSelector:
            matchLabels:
              env: test

        - name: prod
          clusterSelector:
            matchLabels:
              env: prod
      ```
    name: README.md
  - content: |
      patchesStrategicMerge:
      - redis-slave-deployment.yaml
      - redis-slave-service.yaml
    name: overlays/dev/kustomization.yaml
  - content: |
      kind: Deployment
      apiVersion: apps/v1
      metadata:
        name: redis-slave
      spec:
        replicas: 0
    name: overlays/dev/redis-slave-deployment.yaml
  - content: |
      kind: Service
      apiVersion: v1
      metadata:
        name: redis-slave
      spec:
        selector:
          role: master
    name: overlays/dev/redis-slave-service.yaml
  - content: |
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: frontend
      spec:
        replicas: 3
    name: overlays/prod/frontend-deployment.yaml
  - content: |
      kind: Service
      apiVersion: v1
      metadata:
        name: frontend
      spec:
        type: LoadBalancer
    name: overlays/prod/frontend-service.yaml
  - content: |
      patchesStrategicMerge:
      - frontend-deployment.yaml
      - frontend-service.yaml
    name: overlays/prod/kustomization.yaml
  - content: |
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: frontend
      spec:
        replicas: 3
    name: overlays/test/frontend-deployment.yaml
  - content: |
      patchesStrategicMerge:
      - frontend-deployment.yaml
    name: overlays/test/kustomization.yaml
  targets:
  - clusterSelector:
      matchLabels:
        env: dev
    kustomize:
      dir: overlays/dev
    name: dev
  - clusterSelector:
      matchLabels:
        env: test
    kustomize:
      dir: overlays/test
    name: test
  - clusterSelector:
      matchLabels:
        env: prod
    kustomize:
      dir: overlays/prod
    name: prod


================================================
FILE: tests/expected/multi-cluster/helm-kustomize/dev-output.yaml
================================================
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: guestbook
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      tier: frontend
    name: frontend
    namespace: fleet-mc-helm-kustomize-example
  spec:
    ports:
    - port: 80
    selector:
      app: guestbook
      tier: frontend
    type: NodePort
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: redis
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      role: master
      tier: backend
    name: redis-master
    namespace: fleet-mc-helm-kustomize-example
  spec:
    ports:
    - port: 6379
      targetPort: 6379
    selector:
      app: redis
      role: master
      tier: backend
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: redis
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      role: slave
      tier: backend
    name: redis-slave
    namespace: fleet-mc-helm-kustomize-example
  spec:
    ports:
    - port: 6379
    selector:
      app: redis
      role: master
      tier: backend
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: frontend
    namespace: fleet-mc-helm-kustomize-example
  spec:
    replicas: 1
    selector:
      matchLabels:
        app: guestbook
        tier: frontend
    template:
      metadata:
        labels:
          app: guestbook
          tier: frontend
      spec:
        containers:
        - image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5
          name: php-redis
          ports:
          - containerPort: 80
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: redis-master
    namespace: fleet-mc-helm-kustomize-example
  spec:
    replicas: 1
    selector:
      matchLabels:
        app: redis
        role: master
        tier: backend
    template:
      metadata:
        labels:
          app: redis
          role: master
          tier: backend
      spec:
        containers:
        - image: redis
          name: master
          ports:
          - containerPort: 6379
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: redis-slave
    namespace: fleet-mc-helm-kustomize-example
  spec:
    replicas: 0
    selector:
      matchLabels:
        app: redis
        role: slave
        tier: backend
    template:
      metadata:
        labels:
          app: redis
          role: slave
          tier: backend
      spec:
        containers:
        - image: redis
          name: slave
          ports:
          - containerPort: 6379
          resources:
            requests:
              cpu: 100m
              memory: 100Mi



================================================
FILE: tests/expected/multi-cluster/helm-kustomize/prod-output.yaml
================================================
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: guestbook
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      tier: frontend
    name: frontend
    namespace: fleet-mc-helm-kustomize-example
  spec:
    ports:
    - port: 80
    selector:
      app: guestbook
      tier: frontend
    type: LoadBalancer
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: redis
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      role: master
      tier: backend
    name: redis-master
    namespace: fleet-mc-helm-kustomize-example
  spec:
    ports:
    - port: 6379
      targetPort: 6379
    selector:
      app: redis
      role: master
      tier: backend
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: redis
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      role: slave
      tier: backend
    name: redis-slave
    namespace: fleet-mc-helm-kustomize-example
  spec:
    ports:
    - port: 6379
    selector:
      app: redis
      role: slave
      tier: backend
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: frontend
    namespace: fleet-mc-helm-kustomize-example
  spec:
    replicas: 3
    selector:
      matchLabels:
        app: guestbook
        tier: frontend
    template:
      metadata:
        labels:
          app: guestbook
          tier: frontend
      spec:
        containers:
        - image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5
          name: php-redis
          ports:
          - containerPort: 80
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: redis-master
    namespace: fleet-mc-helm-kustomize-example
  spec:
    replicas: 1
    selector:
      matchLabels:
        app: redis
        role: master
        tier: backend
    template:
      metadata:
        labels:
          app: redis
          role: master
          tier: backend
      spec:
        containers:
        - image: redis
          name: master
          ports:
          - containerPort: 6379
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: redis-slave
    namespace: fleet-mc-helm-kustomize-example
  spec:
    replicas: 2
    selector:
      matchLabels:
        app: redis
        role: slave
        tier: backend
    template:
      metadata:
        labels:
          app: redis
          role: slave
          tier: backend
      spec:
        containers:
        - image: redis
          name: slave
          ports:
          - containerPort: 6379
          resources:
            requests:
              cpu: 100m
              memory: 100Mi



================================================
FILE: tests/expected/multi-cluster/helm-kustomize/test-output.yaml
================================================
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: guestbook
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      tier: frontend
    name: frontend
    namespace: fleet-mc-helm-kustomize-example
  spec:
    ports:
    - port: 80
    selector:
      app: guestbook
      tier: frontend
    type: NodePort
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: redis
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      role: master
      tier: backend
    name: redis-master
    namespace: fleet-mc-helm-kustomize-example
  spec:
    ports:
    - port: 6379
      targetPort: 6379
    selector:
      app: redis
      role: master
      tier: backend
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: redis
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      role: slave
      tier: backend
    name: redis-slave
    namespace: fleet-mc-helm-kustomize-example
  spec:
    ports:
    - port: 6379
    selector:
      app: redis
      role: slave
      tier: backend
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: frontend
    namespace: fleet-mc-helm-kustomize-example
  spec:
    replicas: 3
    selector:
      matchLabels:
        app: guestbook
        tier: frontend
    template:
      metadata:
        labels:
          app: guestbook
          tier: frontend
      spec:
        containers:
        - image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5
          name: php-redis
          ports:
          - containerPort: 80
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: redis-master
    namespace: fleet-mc-helm-kustomize-example
  spec:
    replicas: 1
    selector:
      matchLabels:
        app: redis
        role: master
        tier: backend
    template:
      metadata:
        labels:
          app: redis
          role: master
          tier: backend
      spec:
        containers:
        - image: redis
          name: master
          ports:
          - containerPort: 6379
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: redis-slave
    namespace: fleet-mc-helm-kustomize-example
  spec:
    replicas: 2
    selector:
      matchLabels:
        app: redis
        role: slave
        tier: backend
    template:
      metadata:
        labels:
          app: redis
          role: slave
          tier: backend
      spec:
        containers:
        - image: redis
          name: slave
          ports:
          - containerPort: 6379
          resources:
            requests:
              cpu: 100m
              memory: 100Mi



================================================
FILE: tests/expected/multi-cluster/kustomize/bundle.yaml
================================================
apiVersion: fleet.cattle.io/v1alpha1
kind: Bundle
metadata:
  labels:
    fleet.cattle.io/commit: fake
  name: test
  namespace: fleet-default
spec:
  namespace: fleet-mc-kustomize-example
  resources:
  - content: |
      # Multi-Cluster Kustomize Example

      This example will deploy the [Kubernetes sample guestbook](https://github.com/kubernetes/examples/tree/master/guestbook/) application
      using kustomize. The app will be deployed into the `fleet-mc-kustomize-example` namespace.

      The application will be customized as follows per environment:

      * Dev clusters: Only the redis leader is deployed and not the followers.
      * Test clusters: Scale the front deployment to 3
      * Prod clusters: Scale the front deployment to 3 and set the service type to LoadBalancer

      ```yaml
      kind: GitRepo
      apiVersion: fleet.cattle.io/v1alpha1
      metadata:
        name: kustomize
        namespace: fleet-default
      spec:
        repo: https://github.com/rancher/fleet-examples
        paths:
        - multi-cluster/kustomize
        targets:
        - name: dev
          clusterSelector:
            matchLabels:
              env: dev

        - name: test
          clusterSelector:
            matchLabels:
              env: test

        - name: prod
          clusterSelector:
            matchLabels:
              env: prod
      ```
    name: README.md
  - content: |
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: frontend
      spec:
        selector:
          matchLabels:
            app: guestbook
            tier: frontend
        replicas: 1
        template:
          metadata:
            labels:
              app: guestbook
              tier: frontend
          spec:
            containers:
            - name: php-redis
              image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5
              resources:
                requests:
                  cpu: 100m
                  memory: 100Mi
              ports:
              - containerPort: 80
    name: base/frontend-deployment.yaml
  - content: |
      apiVersion: v1
      kind: Service
      metadata:
        name: frontend
        labels:
          app: guestbook
          tier: frontend
      spec:
        type: NodePort
        ports:
        - port: 80
        selector:
          app: guestbook
          tier: frontend
    name: base/frontend-service.yaml
  - content: |
      resources:
      - frontend-deployment.yaml
      - frontend-service.yaml
      - redis-master-deployment.yaml
      - redis-master-service.yaml
      - redis-slave-deployment.yaml
      - redis-slave-service.yaml
    name: base/kustomization.yaml
  - content: |
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: redis-master
      spec:
        selector:
          matchLabels:
            app: redis
            role: master
            tier: backend
        replicas: 1
        template:
          metadata:
            labels:
              app: redis
              role: master
              tier: backend
          spec:
            containers:
            - name: master
              image: redis
              resources:
                requests:
                  cpu: 100m
                  memory: 100Mi
              ports:
              - containerPort: 6379
    name: base/redis-master-deployment.yaml
  - content: |
      apiVersion: v1
      kind: Service
      metadata:
        name: redis-master
        labels:
          app: redis
          role: master
          tier: backend
      spec:
        ports:
        - port: 6379
          targetPort: 6379
        selector:
          app: redis
          role: master
          tier: backend
    name: base/redis-master-service.yaml
  - content: |
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: redis-slave
      spec:
        selector:
          matchLabels:
            app: redis
            role: slave
            tier: backend
        replicas: 2
        template:
          metadata:
            labels:
              app: redis
              role: slave
              tier: backend
          spec:
            containers:
            - name: slave
              image: redis
              resources:
                requests:
                  cpu: 100m
                  memory: 100Mi
              ports:
              - containerPort: 6379
    name: base/redis-slave-deployment.yaml
  - content: |
      apiVersion: v1
      kind: Service
      metadata:
        name: redis-slave
        labels:
          app: redis
          role: slave
          tier: backend
      spec:
        ports:
        - port: 6379
        selector:
          app: redis
          role: slave
          tier: backend
    name: base/redis-slave-service.yaml
  - content: |
      resources:
      - ../../base
      patchesStrategicMerge:
      - redis-slave-deployment.yaml
      - redis-slave-service.yaml
    name: overlays/dev/kustomization.yaml
  - content: |
      kind: Deployment
      apiVersion: apps/v1
      metadata:
        name: redis-slave
      spec:
        replicas: 0
    name: overlays/dev/redis-slave-deployment.yaml
  - content: |
      kind: Service
      apiVersion: v1
      metadata:
        name: redis-slave
      spec:
        selector:
          role: master
    name: overlays/dev/redis-slave-service.yaml
  - content: |
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: frontend
      spec:
        replicas: 3
    name: overlays/prod/frontend-deployment.yaml
  - content: |
      kind: Service
      apiVersion: v1
      metadata:
        name: frontend
      spec:
        type: LoadBalancer
    name: overlays/prod/frontend-service.yaml
  - content: |
      resources:
      - ../../base
      patchesStrategicMerge:
      - frontend-deployment.yaml
      - frontend-service.yaml
    name: overlays/prod/kustomization.yaml
  - content: |
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: frontend
      spec:
        replicas: 3
    name: overlays/test/frontend-deployment.yaml
  - content: |
      resources:
      - ../../base
      patchesStrategicMerge:
      - frontend-deployment.yaml
    name: overlays/test/kustomization.yaml
  targets:
  - clusterSelector:
      matchLabels:
        env: dev
    kustomize:
      dir: overlays/dev
    name: dev
  - clusterSelector:
      matchLabels:
        env: test
    kustomize:
      dir: overlays/test
    name: test
  - clusterSelector:
      matchLabels:
        env: prod
    kustomize:
      dir: overlays/prod
    name: prod


================================================
FILE: tests/expected/multi-cluster/kustomize/dev-output.yaml
================================================
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: frontend
    namespace: fleet-mc-kustomize-example
  spec:
    replicas: 1
    selector:
      matchLabels:
        app: guestbook
        tier: frontend
    template:
      metadata:
        labels:
          app: guestbook
          tier: frontend
      spec:
        containers:
        - image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5
          name: php-redis
          ports:
          - containerPort: 80
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: guestbook
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      tier: frontend
    name: frontend
    namespace: fleet-mc-kustomize-example
  spec:
    ports:
    - port: 80
    selector:
      app: guestbook
      tier: frontend
    type: NodePort
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: redis-master
    namespace: fleet-mc-kustomize-example
  spec:
    replicas: 1
    selector:
      matchLabels:
        app: redis
        role: master
        tier: backend
    template:
      metadata:
        labels:
          app: redis
          role: master
          tier: backend
      spec:
        containers:
        - image: redis
          name: master
          ports:
          - containerPort: 6379
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: redis
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      role: master
      tier: backend
    name: redis-master
    namespace: fleet-mc-kustomize-example
  spec:
    ports:
    - port: 6379
      targetPort: 6379
    selector:
      app: redis
      role: master
      tier: backend
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: redis-slave
    namespace: fleet-mc-kustomize-example
  spec:
    replicas: 0
    selector:
      matchLabels:
        app: redis
        role: slave
        tier: backend
    template:
      metadata:
        labels:
          app: redis
          role: slave
          tier: backend
      spec:
        containers:
        - image: redis
          name: slave
          ports:
          - containerPort: 6379
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: redis
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      role: slave
      tier: backend
    name: redis-slave
    namespace: fleet-mc-kustomize-example
  spec:
    ports:
    - port: 6379
    selector:
      app: redis
      role: master
      tier: backend



================================================
FILE: tests/expected/multi-cluster/kustomize/prod-output.yaml
================================================
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: frontend
    namespace: fleet-mc-kustomize-example
  spec:
    replicas: 3
    selector:
      matchLabels:
        app: guestbook
        tier: frontend
    template:
      metadata:
        labels:
          app: guestbook
          tier: frontend
      spec:
        containers:
        - image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5
          name: php-redis
          ports:
          - containerPort: 80
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: guestbook
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      tier: frontend
    name: frontend
    namespace: fleet-mc-kustomize-example
  spec:
    ports:
    - port: 80
    selector:
      app: guestbook
      tier: frontend
    type: LoadBalancer
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: redis-master
    namespace: fleet-mc-kustomize-example
  spec:
    replicas: 1
    selector:
      matchLabels:
        app: redis
        role: master
        tier: backend
    template:
      metadata:
        labels:
          app: redis
          role: master
          tier: backend
      spec:
        containers:
        - image: redis
          name: master
          ports:
          - containerPort: 6379
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: redis
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      role: master
      tier: backend
    name: redis-master
    namespace: fleet-mc-kustomize-example
  spec:
    ports:
    - port: 6379
      targetPort: 6379
    selector:
      app: redis
      role: master
      tier: backend
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: redis-slave
    namespace: fleet-mc-kustomize-example
  spec:
    replicas: 2
    selector:
      matchLabels:
        app: redis
        role: slave
        tier: backend
    template:
      metadata:
        labels:
          app: redis
          role: slave
          tier: backend
      spec:
        containers:
        - image: redis
          name: slave
          ports:
          - containerPort: 6379
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: redis
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      role: slave
      tier: backend
    name: redis-slave
    namespace: fleet-mc-kustomize-example
  spec:
    ports:
    - port: 6379
    selector:
      app: redis
      role: slave
      tier: backend



================================================
FILE: tests/expected/multi-cluster/kustomize/test-output.yaml
================================================
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: frontend
    namespace: fleet-mc-kustomize-example
  spec:
    replicas: 3
    selector:
      matchLabels:
        app: guestbook
        tier: frontend
    template:
      metadata:
        labels:
          app: guestbook
          tier: frontend
      spec:
        containers:
        - image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5
          name: php-redis
          ports:
          - containerPort: 80
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: guestbook
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      tier: frontend
    name: frontend
    namespace: fleet-mc-kustomize-example
  spec:
    ports:
    - port: 80
    selector:
      app: guestbook
      tier: frontend
    type: NodePort
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: redis-master
    namespace: fleet-mc-kustomize-example
  spec:
    replicas: 1
    selector:
      matchLabels:
        app: redis
        role: master
        tier: backend
    template:
      metadata:
        labels:
          app: redis
          role: master
          tier: backend
      spec:
        containers:
        - image: redis
          name: master
          ports:
          - containerPort: 6379
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: redis
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      role: master
      tier: backend
    name: redis-master
    namespace: fleet-mc-kustomize-example
  spec:
    ports:
    - port: 6379
      targetPort: 6379
    selector:
      app: redis
      role: master
      tier: backend
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: redis-slave
    namespace: fleet-mc-kustomize-example
  spec:
    replicas: 2
    selector:
      matchLabels:
        app: redis
        role: slave
        tier: backend
    template:
      metadata:
        labels:
          app: redis
          role: slave
          tier: backend
      spec:
        containers:
        - image: redis
          name: slave
          ports:
          - containerPort: 6379
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: redis
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      role: slave
      tier: backend
    name: redis-slave
    namespace: fleet-mc-kustomize-example
  spec:
    ports:
    - port: 6379
    selector:
      app: redis
      role: slave
      tier: backend



================================================
FILE: tests/expected/multi-cluster/manifests/bundle.yaml
================================================
apiVersion: fleet.cattle.io/v1alpha1
kind: Bundle
metadata:
  labels:
    fleet.cattle.io/commit: fake
  name: test
  namespace: fleet-default
spec:
  namespace: fleet-mc-manifest-example
  resources:
  - content: |
      # Multi-Cluster Manifests Example

      This example will deploy the [Kubernetes sample guestbook](https://github.com/kubernetes/examples/tree/master/guestbook/) application.
      The app will be deployed into the `fleet-mc-manifest-example` namespace.

      The application will be customized as follows per environment:

      * Dev clusters: Only the redis leader is deployed and not the followers.
      * Test clusters: Scale the front deployment to 3
      * Prod clusters: Scale the front deployment to 3 and set the service type to LoadBalancer

      ```yaml
      kind: GitRepo
      apiVersion: fleet.cattle.io/v1alpha1
      metadata:
        name: manifests
        namespace: fleet-default
      spec:
        repo: https://github.com/rancher/fleet-examples
        paths:
        - multi-cluster/manifests
        targets:
        - name: dev
          clusterSelector:
            matchLabels:
              env: dev

        - name: test
          clusterSelector:
            matchLabels:
              env: test

        - name: prod
          clusterSelector:
            matchLabels:
              env: prod
      ```
    name: README.md
  - content: |
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: frontend
      spec:
        selector:
          matchLabels:
            app: guestbook
            tier: frontend
        replicas: 1
        template:
          metadata:
            labels:
              app: guestbook
              tier: frontend
          spec:
            containers:
            - name: php-redis
              image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5
              resources:
                requests:
                  cpu: 100m
                  memory: 100Mi
              ports:
              - containerPort: 80
    name: frontend-deployment.yaml
  - content: |
      apiVersion: v1
      kind: Service
      metadata:
        name: frontend
        labels:
          app: guestbook
          tier: frontend
      spec:
        type: NodePort
        ports:
        - port: 80
        selector:
          app: guestbook
          tier: frontend
    name: frontend-service.yaml
  - name: overlays/noreplication/redis-slave-deployment.yaml
  - content: |
      spec:
        selector:
          role: master
    name: overlays/noreplication/redis-slave-service_patch.yaml
  - content: |
      spec:
        replicas: 3
    name: overlays/scale3/frontend-deployment_patch.yaml
  - content: |
      spec:
        type: LoadBalancer
    name: overlays/servicelb/frontend-service_patch.yaml
  - content: |
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: redis-master
      spec:
        selector:
          matchLabels:
            app: redis
            role: master
            tier: backend
        replicas: 1
        template:
          metadata:
            labels:
              app: redis
              role: master
              tier: backend
          spec:
            containers:
            - name: master
              image: redis
              resources:
                requests:
                  cpu: 100m
                  memory: 100Mi
              ports:
              - containerPort: 6379
    name: redis-master-deployment.yaml
  - content: |
      apiVersion: v1
      kind: Service
      metadata:
        name: redis-master
        labels:
          app: redis
          role: master
          tier: backend
      spec:
        ports:
        - port: 6379
          targetPort: 6379
        selector:
          app: redis
          role: master
          tier: backend
    name: redis-master-service.yaml
  - content: |
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: redis-slave
      spec:
        selector:
          matchLabels:
            app: redis
            role: slave
            tier: backend
        replicas: 2
        template:
          metadata:
            labels:
              app: redis
              role: slave
              tier: backend
          spec:
            containers:
            - name: slave
              image: redis
              resources:
                requests:
                  cpu: 100m
                  memory: 100Mi
              ports:
              - containerPort: 6379
    name: redis-slave-deployment.yaml
  - content: |
      apiVersion: v1
      kind: Service
      metadata:
        name: redis-slave
        labels:
          app: redis
          role: slave
          tier: backend
      spec:
        ports:
        - port: 6379
        selector:
          app: redis
          role: slave
          tier: backend
    name: redis-slave-service.yaml
  targets:
  - clusterSelector:
      matchLabels:
        env: dev
    name: dev
    yaml:
      overlays:
      - noreplication
  - clusterSelector:
      matchLabels:
        env: test
    name: test
    yaml:
      overlays:
      - scale3
  - clusterSelector:
      matchLabels:
        env: prod
    name: prod
    yaml:
      overlays:
      - servicelb
      - scale3


================================================
FILE: tests/expected/multi-cluster/manifests/dev-output.yaml
================================================
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: frontend
    namespace: fleet-mc-manifest-example
  spec:
    replicas: 1
    selector:
      matchLabels:
        app: guestbook
        tier: frontend
    template:
      metadata:
        labels:
          app: guestbook
          tier: frontend
      spec:
        containers:
        - image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5
          name: php-redis
          ports:
          - containerPort: 80
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: guestbook
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      tier: frontend
    name: frontend
    namespace: fleet-mc-manifest-example
  spec:
    ports:
    - port: 80
    selector:
      app: guestbook
      tier: frontend
    type: NodePort
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: redis-master
    namespace: fleet-mc-manifest-example
  spec:
    replicas: 1
    selector:
      matchLabels:
        app: redis
        role: master
        tier: backend
    template:
      metadata:
        labels:
          app: redis
          role: master
          tier: backend
      spec:
        containers:
        - image: redis
          name: master
          ports:
          - containerPort: 6379
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: redis
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      role: master
      tier: backend
    name: redis-master
    namespace: fleet-mc-manifest-example
  spec:
    ports:
    - port: 6379
      targetPort: 6379
    selector:
      app: redis
      role: master
      tier: backend
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: redis
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      role: slave
      tier: backend
    name: redis-slave
    namespace: fleet-mc-manifest-example
  spec:
    ports:
    - port: 6379
    selector:
      app: redis
      role: master
      tier: backend



================================================
FILE: tests/expected/multi-cluster/manifests/prod-output.yaml
================================================
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: frontend
    namespace: fleet-mc-manifest-example
  spec:
    replicas: 3
    selector:
      matchLabels:
        app: guestbook
        tier: frontend
    template:
      metadata:
        labels:
          app: guestbook
          tier: frontend
      spec:
        containers:
        - image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5
          name: php-redis
          ports:
          - containerPort: 80
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: guestbook
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      tier: frontend
    name: frontend
    namespace: fleet-mc-manifest-example
  spec:
    ports:
    - port: 80
    selector:
      app: guestbook
      tier: frontend
    type: LoadBalancer
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: redis-master
    namespace: fleet-mc-manifest-example
  spec:
    replicas: 1
    selector:
      matchLabels:
        app: redis
        role: master
        tier: backend
    template:
      metadata:
        labels:
          app: redis
          role: master
          tier: backend
      spec:
        containers:
        - image: redis
          name: master
          ports:
          - containerPort: 6379
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: redis
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      role: master
      tier: backend
    name: redis-master
    namespace: fleet-mc-manifest-example
  spec:
    ports:
    - port: 6379
      targetPort: 6379
    selector:
      app: redis
      role: master
      tier: backend
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: redis-slave
    namespace: fleet-mc-manifest-example
  spec:
    replicas: 2
    selector:
      matchLabels:
        app: redis
        role: slave
        tier: backend
    template:
      metadata:
        labels:
          app: redis
          role: slave
          tier: backend
      spec:
        containers:
        - image: redis
          name: slave
          ports:
          - containerPort: 6379
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: redis
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      role: slave
      tier: backend
    name: redis-slave
    namespace: fleet-mc-manifest-example
  spec:
    ports:
    - port: 6379
    selector:
      app: redis
      role: slave
      tier: backend



================================================
FILE: tests/expected/multi-cluster/manifests/test-output.yaml
================================================
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: frontend
    namespace: fleet-mc-manifest-example
  spec:
    replicas: 3
    selector:
      matchLabels:
        app: guestbook
        tier: frontend
    template:
      metadata:
        labels:
          app: guestbook
          tier: frontend
      spec:
        containers:
        - image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5
          name: php-redis
          ports:
          - containerPort: 80
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: guestbook
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      tier: frontend
    name: frontend
    namespace: fleet-mc-manifest-example
  spec:
    ports:
    - port: 80
    selector:
      app: guestbook
      tier: frontend
    type: NodePort
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: redis-master
    namespace: fleet-mc-manifest-example
  spec:
    replicas: 1
    selector:
      matchLabels:
        app: redis
        role: master
        tier: backend
    template:
      metadata:
        labels:
          app: redis
          role: master
          tier: backend
      spec:
        containers:
        - image: redis
          name: master
          ports:
          - containerPort: 6379
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: redis
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      role: master
      tier: backend
    name: redis-master
    namespace: fleet-mc-manifest-example
  spec:
    ports:
    - port: 6379
      targetPort: 6379
    selector:
      app: redis
      role: master
      tier: backend
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: redis-slave
    namespace: fleet-mc-manifest-example
  spec:
    replicas: 2
    selector:
      matchLabels:
        app: redis
        role: slave
        tier: backend
    template:
      metadata:
        labels:
          app: redis
          role: slave
          tier: backend
      spec:
        containers:
        - image: redis
          name: slave
          ports:
          - containerPort: 6379
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: redis
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      role: slave
      tier: backend
    name: redis-slave
    namespace: fleet-mc-manifest-example
  spec:
    ports:
    - port: 6379
    selector:
      app: redis
      role: slave
      tier: backend



================================================
FILE: tests/expected/single-cluster/helm/bundle.yaml
================================================
apiVersion: fleet.cattle.io/v1alpha1
kind: Bundle
metadata:
  labels:
    fleet.cattle.io/commit: fake
  name: test
  namespace: fleet-local
spec:
  helm:
    releaseName: guestbook
    values:
      replicas: 2
  namespace: fleet-helm-example
  resources:
  - content: |
      apiVersion: v2
      name: guestbook
      description: Sample application
      version: 0.0.0
      appVersion: 0.0.0
    name: Chart.yaml
  - content: |
      # Helm Example

      This example will deploy the [Kubernetes sample guestbook](https://github.com/kubernetes/examples/tree/master/guestbook/) application as
      packaged as a Helm chart.
      The app will be deployed into the `fleet-helm-example` namespace.

      ```yaml
      kind: GitRepo
      apiVersion: fleet.cattle.io/v1alpha1
      metadata:
        name: helm
        namespace: fleet-local
      spec:
        repo: https://github.com/rancher/fleet-examples
        paths:
        - single-cluster/helm
      ```
    name: README.md
  - content: |
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: frontend
      spec:
        selector:
          matchLabels:
            app: guestbook
            tier: frontend
        replicas: {{ .Values.replicas }}
        template:
          metadata:
            labels:
              app: guestbook
              tier: frontend
          spec:
            containers:
            - name: php-redis
              image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5
              resources:
                requests:
                  cpu: 100m
                  memory: 100Mi
              ports:
              - containerPort: 80
    name: templates/frontend-deployment.yaml
  - content: |
      apiVersion: v1
      kind: Service
      metadata:
        name: frontend
        labels:
          app: guestbook
          tier: frontend
      spec:
        type: "{{ .Values.serviceType }}"
        ports:
        - port: 80
        selector:
          app: guestbook
          tier: frontend
    name: templates/frontend-service.yaml
  - content: |
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: redis-master
      spec:
        selector:
          matchLabels:
            app: redis
            role: master
            tier: backend
        replicas: 1
        template:
          metadata:
            labels:
              app: redis
              role: master
              tier: backend
          spec:
            containers:
            - name: master
              image: redis
              resources:
                requests:
                  cpu: 100m
                  memory: 100Mi
              ports:
              - containerPort: 6379
    name: templates/redis-master-deployment.yaml
  - content: |
      apiVersion: v1
      kind: Service
      metadata:
        name: redis-master
        labels:
          app: redis
          role: master
          tier: backend
      spec:
        ports:
        - port: 6379
          targetPort: 6379
        selector:
          app: redis
          role: master
          tier: backend
    name: templates/redis-master-service.yaml
  - content: |
      {{ if .Values.replication }}
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: redis-slave
      spec:
        selector:
          matchLabels:
            app: redis
            role: slave
            tier: backend
        replicas: 2
        template:
          metadata:
            labels:
              app: redis
              role: slave
              tier: backend
          spec:
            containers:
            - name: slave
              image: redis
              resources:
                requests:
                  cpu: 100m
                  memory: 100Mi
              ports:
              - containerPort: 6379
      {{ end }}
    name: templates/redis-slave-deployment.yaml
  - content: |
      apiVersion: v1
      kind: Service
      metadata:
        name: redis-slave
        labels:
          app: redis
          role: slave
          tier: backend
      spec:
        ports:
        - port: 6379
        selector:
          app: redis
          {{ if .Values.replication }}
          role: slave
          {{ else }}
          role: master
          {{ end }}
          tier: backend
    name: templates/redis-slave-service.yaml
  - content: |
      replication: true
      replicas: 1
      serviceType: NodePort
    name: values.yaml
  targets:
  - clusterGroup: default
    name: default


================================================
FILE: tests/expected/single-cluster/helm/local-output.yaml
================================================
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: guestbook
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      tier: frontend
    name: frontend
    namespace: fleet-helm-example
  spec:
    ports:
    - port: 80
    selector:
      app: guestbook
      tier: frontend
    type: NodePort
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: redis
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      role: master
      tier: backend
    name: redis-master
    namespace: fleet-helm-example
  spec:
    ports:
    - port: 6379
      targetPort: 6379
    selector:
      app: redis
      role: master
      tier: backend
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: redis
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      role: slave
      tier: backend
    name: redis-slave
    namespace: fleet-helm-example
  spec:
    ports:
    - port: 6379
    selector:
      app: redis
      role: slave
      tier: backend
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: frontend
    namespace: fleet-helm-example
  spec:
    replicas: 2
    selector:
      matchLabels:
        app: guestbook
        tier: frontend
    template:
      metadata:
        labels:
          app: guestbook
          tier: frontend
      spec:
        containers:
        - image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5
          name: php-redis
          ports:
          - containerPort: 80
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: redis-master
    namespace: fleet-helm-example
  spec:
    replicas: 1
    selector:
      matchLabels:
        app: redis
        role: master
        tier: backend
    template:
      metadata:
        labels:
          app: redis
          role: master
          tier: backend
      spec:
        containers:
        - image: redis
          name: master
          ports:
          - containerPort: 6379
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: redis-slave
    namespace: fleet-helm-example
  spec:
    replicas: 2
    selector:
      matchLabels:
        app: redis
        role: slave
        tier: backend
    template:
      metadata:
        labels:
          app: redis
          role: slave
          tier: backend
      spec:
        containers:
        - image: redis
          name: slave
          ports:
          - containerPort: 6379
          resources:
            requests:
              cpu: 100m
              memory: 100Mi



================================================
FILE: tests/expected/single-cluster/helm-kustomize/bundle.yaml
================================================
apiVersion: fleet.cattle.io/v1alpha1
kind: Bundle
metadata:
  labels:
    fleet.cattle.io/commit: fake
  name: test
  namespace: fleet-local
spec:
  helm:
    chart: https://github.com/rancher/fleet-examples/releases/download/example/guestbook-0.0.1.tgz
  kustomize:
    dir: overlays/dev
  namespace: fleet-helm-kustomize-example
  resources:
  - content: |
      apiVersion: v2
      appVersion: 0.0.1
      description: Sample application
      name: guestbook
      version: 0.0.1
    name: .chart/ce648b1a536ac8c844ef58f2c3383e621a823acb2be15fa4b0d1cf053709a787/guestbook/Chart.yaml
  - content: |
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: frontend
      spec:
        selector:
          matchLabels:
            app: guestbook
            tier: frontend
        replicas: {{ .Values.replicas }}
        template:
          metadata:
            labels:
              app: guestbook
              tier: frontend
          spec:
            containers:
            - name: php-redis
              image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5
              resources:
                requests:
                  cpu: 100m
                  memory: 100Mi
              ports:
              - containerPort: 80
    name: .chart/ce648b1a536ac8c844ef58f2c3383e621a823acb2be15fa4b0d1cf053709a787/guestbook/templates/frontend-deployment.yaml
  - content: |
      apiVersion: v1
      kind: Service
      metadata:
        name: frontend
        labels:
          app: guestbook
          tier: frontend
      spec:
        type: "{{ .Values.serviceType }}"
        ports:
        - port: 80
        selector:
          app: guestbook
          tier: frontend
    name: .chart/ce648b1a536ac8c844ef58f2c3383e621a823acb2be15fa4b0d1cf053709a787/guestbook/templates/frontend-service.yaml
  - content: |
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: redis-master
      spec:
        selector:
          matchLabels:
            app: redis
            role: master
            tier: backend
        replicas: 1
        template:
          metadata:
            labels:
              app: redis
              role: master
              tier: backend
          spec:
            containers:
            - name: master
              image: redis
              resources:
                requests:
                  cpu: 100m
                  memory: 100Mi
              ports:
              - containerPort: 6379
    name: .chart/ce648b1a536ac8c844ef58f2c3383e621a823acb2be15fa4b0d1cf053709a787/guestbook/templates/redis-master-deployment.yaml
  - content: |
      apiVersion: v1
      kind: Service
      metadata:
        name: redis-master
        labels:
          app: redis
          role: master
          tier: backend
      spec:
        ports:
        - port: 6379
          targetPort: 6379
        selector:
          app: redis
          role: master
          tier: backend
    name: .chart/ce648b1a536ac8c844ef58f2c3383e621a823acb2be15fa4b0d1cf053709a787/guestbook/templates/redis-master-service.yaml
  - content: |
      {{ if .Values.replication }}
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: redis-slave
      spec:
        selector:
          matchLabels:
            app: redis
            role: slave
            tier: backend
        replicas: 2
        template:
          metadata:
            labels:
              app: redis
              role: slave
              tier: backend
          spec:
            containers:
            - name: slave
              image: redis
              resources:
                requests:
                  cpu: 100m
                  memory: 100Mi
              ports:
              - containerPort: 6379
      {{ end }}
    name: .chart/ce648b1a536ac8c844ef58f2c3383e621a823acb2be15fa4b0d1cf053709a787/guestbook/templates/redis-slave-deployment.yaml
  - content: |
      apiVersion: v1
      kind: Service
      metadata:
        name: redis-slave
        labels:
          app: redis
          role: slave
          tier: backend
      spec:
        ports:
        - port: 6379
        selector:
          app: redis
          {{ if .Values.replication }}
          role: slave
          {{ else }}
          role: master
          {{ end }}
          tier: backend
    name: .chart/ce648b1a536ac8c844ef58f2c3383e621a823acb2be15fa4b0d1cf053709a787/guestbook/templates/redis-slave-service.yaml
  - content: |
      replication: true
      replicas: 1
      serviceType: NodePort
    name: .chart/ce648b1a536ac8c844ef58f2c3383e621a823acb2be15fa4b0d1cf053709a787/guestbook/values.yaml
  - content: |
      # Helm Kustomize Example

      This example will deploy the [Kubernetes sample guestbook](https://github.com/kubernetes/examples/tree/master/guestbook/) application as
      packaged as a Helm chart downloaded from a third party source and will modify the helm chart using Kustomize.
      The app will be deployed into the `fleet-helm-kustomize-example` namespace.

      ```yaml
      kind: GitRepo
      apiVersion: fleet.cattle.io/v1alpha1
      metadata:
        name: helm-kustomize
        namespace: fleet-local
      spec:
        repo: https://github.com/rancher/fleet-examples
        paths:
        - single-cluster/helm-kustomize
      ```
    name: README.md
  - content: |
      patchesStrategicMerge:
      - redis-slave-deployment.yaml
      - redis-slave-service.yaml
    name: overlays/dev/kustomization.yaml
  - content: |
      kind: Deployment
      apiVersion: apps/v1
      metadata:
        name: redis-slave
      spec:
        replicas: 0
    name: overlays/dev/redis-slave-deployment.yaml
  - content: |
      kind: Service
      apiVersion: v1
      metadata:
        name: redis-slave
      spec:
        selector:
          role: master
    name: overlays/dev/redis-slave-service.yaml
  targets:
  - clusterGroup: default
    name: default


================================================
FILE: tests/expected/single-cluster/helm-kustomize/local-output.yaml
================================================
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: guestbook
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      tier: frontend
    name: frontend
    namespace: fleet-helm-kustomize-example
  spec:
    ports:
    - port: 80
    selector:
      app: guestbook
      tier: frontend
    type: NodePort
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: redis
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      role: master
      tier: backend
    name: redis-master
    namespace: fleet-helm-kustomize-example
  spec:
    ports:
    - port: 6379
      targetPort: 6379
    selector:
      app: redis
      role: master
      tier: backend
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      app: redis
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
      role: slave
      tier: backend
    name: redis-slave
    namespace: fleet-helm-kustomize-example
  spec:
    ports:
    - port: 6379
    selector:
      app: redis
      role: master
      tier: backend
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: frontend
    namespace: fleet-helm-kustomize-example
  spec:
    replicas: 1
    selector:
      matchLabels:
        app: guestbook
        tier: frontend
    template:
      metadata:
        labels:
          app: guestbook
          tier: frontend
      spec:
        containers:
        - image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5
          name: php-redis
          ports:
          - containerPort: 80
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: redis-master
    namespace: fleet-helm-kustomize-example
  spec:
    replicas: 1
    selector:
      matchLabels:
        app: redis
        role: master
        tier: backend
    template:
      metadata:
        labels:
          app: redis
          role: master
          tier: backend
      spec:
        containers:
        - image: redis
          name: master
          ports:
          - containerPort: 6379
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      objectset.rio.cattle.io/id: -test
    labels:
      objectset.rio.cattle.io/hash: c0fae66aeeea5c9703d7410307d74609c272103d
    name: redis-slave
    namespace: fleet-helm-kustomize-example
  spec:
    replicas: 0
    selector:
      matchLabels:
        app: redis
        role: slave
        tier: backend
    template:
      metadata:
        labels:
          app: redis
          role: slave
          tier: backend
      spec:
        containers:
        - image: redis
          name: slave
          ports:
          - containerPort: 6379
          resources:
            requests:
              cpu: 100m
              memory: 100Mi



================================================
FILE: tests/expected/single-cluster/helm-multi-chart/bundle.yaml
================================================
apiVersion: fleet.cattle.io/v1alpha1
kind: Bundle
metadata:
  labels:
    fleet.cattle.io/commit: fake
  name: test-guestbook
  namespace: fleet-local
spec:
  helm:
    releaseName: guestbook
    values:
      replicas: 2
  namespace: fleet-multi-chart-helm-example
  resources:
  - content: |
      apiVersion: v2
      name: guestbook
      description: Sample application
      version: 0.0.0
      appVersion: 0.0.0
    name: Chart.yaml
  - content: |
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: frontend
      spec:
        selector:
          matchLabels:
            app: guestbook
            tier: frontend
        replicas: {{ .Values.replicas }}
        template:
          metadata:
            labels:
              app: guestbook
              tier: frontend
          spec:
            containers:
            - name: php-redis
              image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5
              resources:
                requests:
                  cpu: 100m
                  memory: 100Mi
              ports:
              - containerPort: 80
    name: templates/frontend-deployment.yaml
  - content: |
      apiVersion: v1
      kind: Service
      metadata:
        name: frontend
        labels:
          app: guestbook
          tier: frontend
      spec:
        type: "{{ .Values.serviceType }}"
        ports:
        - port: 80
        selector:
          app: guestbook
          tier: frontend
    name: templates/frontend-service.yaml
  - content: |
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: redis-master
      spec:
        selector:
          matchLabels:
            app: redis
            role: master
            tier: backend
        replicas: 1
        template:
          metadata:
            labels:
              app: redis
              role: master
              tier: backend
          spec:
            containers:
            - name: master
              image: redis
              resources:
                requests:
                  cpu: 100m
                  memory: 100Mi
              ports:
              - containerPort: 6379
    name: templates/redis-master-deployment.yaml
  - content: |
      apiVersion: v1
      kind: Service
      metadata:
        name: redis-master
        labels:
          app: redis
          role: master
          tier: backend
      spec:
        ports:
        - port: 6379
          targetPort: 6379
        selector:
          app: redis
          role: master
          tier: backend
    name: templates/redis-master-service.yaml
  - content: |
      {{ if .Values.replication }}
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: redis-slave
      spec:
        selector:
          matchLabels:
            app: redis
            role: slave
            tier: backend
        replicas: 2
        template:
          metadata:
            labels:
              app: redis
              role: slave
              tier: backend
          spec:
            containers:
            - name: slave
              image: redis
              resources:
                requests:
                  cpu: 100m
                  memory: 100Mi
              ports:
              - containerPort: 6379
      {{ end }}
    name: templates/redis-slave-deployment.yaml
  - content: |
      apiVersion: v1
      kind: Service
      metadata:
        name: redis-slave
        labels:
          app: redis
          role: slave
          tier: backend
      spec:
        ports:
        - port: 6379
        selector:
          app: redis
          {{ if .Values.replication }}
          role: slave
          {{ else }}
          role: master
          {{ end }}
          tier: backend
    name: templates/redis-slave-service.yaml
  - content: |
      replication: true
      replicas: 1
      serviceType: NodePort
    name: values.yaml
  targets:
  - clusterGroup: default
    name: default
apiVersion: fleet.cattle.io/v1alpha1
kind: Bundle
metadata:
  labels:
    fleet.cattle.io/commit: fake
  name: test-rancher-monitoring-crd
  namespace: fleet-local
spec:
  defaultNamespace: cattle-monitoring-system
  helm:
    chart: rancher-monitoring-crd
    releaseName: rancher-monitoring-crd
    repo: https://charts.rancher.io
    version: 104.1.0+up57.0.3
  resources:
  - content: |
      annotations:
        catalog.cattle.io/certified: rancher
        catalog.cattle.io/hidden: "true"
        catalog.cattle.io/namespace: cattle-monitoring-system
        catalog.cattle.io/release-name: rancher-monitoring-crd
      apiVersion: v2
      description: Installs the CRDs for rancher-monitoring.
      name: rancher-monitoring-crd
      type: application
      version: 104.1.0+up57.0.3
    name: .chart/d3a4cfa505831addcdfc1a2905b51d9ef0361c86f3f673591705813f87b63a4e/rancher-monitoring-crd/Chart.yaml
  - content: |-
      # rancher-monitoring-crd
      A Rancher chart that installs the CRDs used by rancher-monitoring.

      ## How does this chart work?

      This chart marshalls all of the CRD files placed in the `crd-manifest` directory into a ConfigMap that is installed onto a cluster alongside relevant RBAC (ServiceAccount, ClusterRoleBinding, ClusterRole, and PodSecurityPolicy).

      Once the relevant dependent resourcees are installed / upgraded / rolled back, this chart executes a post-install / post-upgrade / post-rollback Job that:
      - Patches any existing versions of the CRDs contained within the `crd-manifest` on the cluster to set `spec.preserveUnknownFields=false`; this step is required since, based on [Kubernetes docs](https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#field-pruning) and a [known workaround](https://github.com/kubernetes-sigs/controller-tools/issues/476#issuecomment-691519936), such CRDs cannot be upgraded normally from `apiextensions.k8s.io/v1beta1` to `apiextensions.k8s.io/v1`.
      - Runs a `kubectl apply` on the CRDs that are contained within the crd-manifest ConfigMap to upgrade CRDs in the cluster

      On an uninstall, this chart executes a separate post-delete Job that:
      - Patches any existing versions of the CRDs contained within `crd-manifest` on the cluster to set `metadata.finalizers=[]`
      - Runs a `kubectl delete` on the CRDs that are contained within the crd-manifest ConfigMap to clean up the CRDs from the cluster

      Note: If the relevant CRDs already existed in the cluster at the time of install, this chart will absorb ownership of the lifecycle of those CRDs; therefore, on a `helm uninstall`, those CRDs will also be removed from the cluster alongside this chart.

      ## Why can't we just place the CRDs in the templates/ directory of the main chart?

      In Helm today, you cannot declare a CRD and declare a resource of that CRD's kind in templates/ without encountering a failure on render.

      ## [Helm 3] Why can't we just place the CRDs in the crds/ directory of the main chart?

      The Helm 3 `crds/` directory only supports the installation of CRDs, but does not support the upgrade and removal of CRDs, unlike what this chart facilitiates.
    name: .chart/d3a4cfa505831addcdfc1a2905b51d9ef0361c86f3f673591705813f87b63a4e/rancher-monitoring-crd/README.md
  - content: H4sIAAAAAAAA/4ybVVCdy/L2cYeFu7u7+8Ld3d2CBncnuDsEd3cNECC4wwKCe3B3CPBV9tn/U2fffLXfi7l8qqve6elf9zNDEgMH9tf3cdbzyXOvrZV1feYZy4tad4KjOv0si3Kqcsb2tmtP9pTG9brp6/653SouORk8l2wDGG2Cz+dpp0BsR0y6JChSeQyB5scvP8xTcgja/Uc2xwhd6eLR86K3zhDjExIS+l5u5O8/Do39vdd/94VuCX7sehr7PS9mGAe871ZvEYp87MawJASG9q4TSCJXhP34zTMy4pmL3Y537D/96MmD+vghDRF3r/2BtxPrnLUHMQOnrMNWysFmtCvYPcNz9xK42PM+Y+z3/Ps5w7hl+WMoBmfG+DeMf6Ls79HlD3XOjCZMGmlpwq04a43palmqu1V5tVGXgZvi5ObcUb7KH5FpYeZjXoeX2CN79UaxCQmjvrkZeMc+VqlXd7TW0GmxC2bcSrg0ChX1v0Htt8J4cVL528kByh0FNbzAjpL9HsrwlwzcrfcvuOoeLV7vY0xM8xh3TejJBxkSDdE0+7EKtkAqyyEaviTeIfR8vxBUZgTqxpdWlQ8JGeSMZkYKP06Koae27ERZyeZU57h1fx8XwYD35yedvt0ITiPk5vuarFhlVHpnJSWV5St+ml0M1WQJVa69GnpllUdxmNpiYnl289yuwASVEdBpXyYfv8PsjdpC0UemKlnfufc2F5aaiIYV1ojuodfd1lCuy7OH5BrcjmBWNgBOb7IK6bauXQQoQ1lDSSPTZ7AbVpJPalGuTkGwUmkgOKLLNzKDPG2h9Nm+txSnlLeH9+P9tnqpHk0uSoaXqdQoe2qHTFxiKEr0s9KspFBg7RdAkh4hv+G8mVaxlM30xWRkGH5AWqmN2ORN0h3qnJkSjUYy5g65JHSKm5xsNKW4HcEthLUMYzhlJ+4yr3xduuISg12BCwJ+nyHBejB+nzdCqd3rGtlKFmXlV/YfZTLTlaK5qblwapmQc2KxIPEOUfsb5eRRti5yg0KXYgWdRlIDciV0boajvk/rYnFK/pyDyT/jmiH0fpqyOGsliQsx8RmRK4G0VTQ5r46lf+D2mOaS6imsyE41WGl0LeQ3CNYj0GdIv5AuyFLh4UjT6SaeycyuwN1aKFHJWgyNoTEfy6QY2aCwTi8odx7g7BZIVhtUIdNROtW3C0tCMhSgoBVBmL5W4Q3ZFS3Wg84Meru6pC4WfNiWrI1nXk8kG/UguExbMtEdsV3GdetcksmZ8JhK3qWTVdVqlPsqqPnS7DY+NNHIFvXi5uSn0Bd7a8cx5ZPj57yDjXZzLVgaSX2NwbgWzEqoue3hs9f93kw5PsWJ8MavNhvlnG1XUUYZivpv2hbNRPCxS/QodlopK2Ym8hmpDG+oK7ZwBc55DR8py7tyt9rwr3v5IbueWv6Ito9y1rVKPXK14ptJdXHjKR8zMO+mI8TpAeLlJdq/ISFIvGvuTBKBXq6ZT5gS3ATc1wcWp6rueJD2umuapvpqmYLRWU4mHrC4FOqMCIpP+dhEigSyLav7WZIsCHiTcmIJJywu4rOKX0VrIvg2vTLoUb7J/sIvPKxmW1zHwjl1o+AbQd9hNPc8lV4NsqCtp3TZ35ySDc7MxbgICO18oaDhNSyiW5wnMURTy+9pm09qkiA85rFlE2BXeKxo/RQv3Er5XnJ0WlAZiId8tDH/Vn7fqrGmmEk3ykA2R8gSmU3ZvIPEUhJuhN/MKqSTlI6EfouXZGV0R619yfVL38HETx41Sykt9qR/sbvLQ6irc/IXRabrtzO/AaSDuFUv4EJJvkaun7uzLhB1j9b62yaez0VLlSjP/hHC74WimSR1aDS6MgVZgR6ZtxT2dovMPYv7yIYFi+8cp4a3qvn0pRqV5kUBcTqmtHyoETlRvSwvPE3gcQ96TMffxQ0xV2U11GNxMq28ktHcpA/WnSd5viL5Eb0/wVrKffNiE27T/50Op/E5OTEVMxqWBU46w0Jqs7i8Ev1dblA537thno5eh43cmy7j7bY4CFNTWPAKjf9JJJD3SvAGdmvrY/k17oPoXep7p0bBechVOIiwatNgUD1tYZeLzupzQEjeZYhGnRZXyFIoyS8JxIhfurO5qeNUPvxDWaQzqLfnvEotB1zkl2n0lXGh5cna+yu4XxcJziQ4kmsfrsm6KhNAioMIVVCyaExhlLxEX2ruwxpjt905SuD1giTq29AETD8Rt6TK+WvpmYhQDRvdj+YiW7rfJgVkmVvsYbNLI1rT6FNDKVbbyzUr1C9GX3qeMo8esWAUaWa6ybTYRycCTSGLoCVi/KEk5AUrSfUiaFAlJoYp/IssUYEf1XKkBgu5uTjJV9DTYlPvPJ8uudZrhrmX5oM1k3m3zGGnWkVX51suyUL0usspc5s0bMBlXYuOT3L193a4iClOW51LHEw9Adf52M9OLkYCTpzBoHhzZ0ikMwm+b4lElC3pm08z7N0DUyLnokXtS2O/LcUkhCwKaUJQchNZVfN2S714/AcRVqqN3VE923yqheCtvWwDA6NidEVcwJvn3laoPd6OIebIx+iBOFAub/rc99ucxR4CdMvFmYl4TAju+I13o1WzlVyiS0TH4Ht+miXxXa390Cbj177Z2s/wL+s8SBaULd4+mHcdfGp2GC8HBGJiZszF0oGlmy9YsSKiElwkZ+3BjKV2+T7cBjlrpzirh65O0hzbGqtoXtYrdb+TTTZ501tEP3BwsH7J8zRA4cid8eItUfmssura6YbmJV8jEenYw87cXVbnOmdvTzZB3o7eQuYvBqHuwXm
Download .txt
gitextract_cvr35o8c/

├── .github/
│   ├── scripts/
│   │   └── install-k3d.sh
│   └── workflows/
│       ├── ci.yml
│       └── fossa.yml
├── .gitignore
├── CODEOWNERS
├── CONTRIBUTING.md
├── README.md
├── appco/
│   ├── README.md
│   └── fleet.yaml
├── hardened/
│   ├── README.md
│   ├── fleet.yaml
│   ├── frontend-deployment.yaml
│   ├── frontend-service.yaml
│   ├── redis-master-deployment.yaml
│   ├── redis-master-service.yaml
│   ├── redis-slave-deployment.yaml
│   └── redis-slave-service.yaml
├── multi-cluster/
│   ├── helm/
│   │   ├── Chart.yaml
│   │   ├── README.md
│   │   ├── fleet.yaml
│   │   ├── templates/
│   │   │   ├── frontend-deployment.yaml
│   │   │   ├── frontend-service.yaml
│   │   │   ├── redis-master-deployment.yaml
│   │   │   ├── redis-master-service.yaml
│   │   │   ├── redis-slave-deployment.yaml
│   │   │   └── redis-slave-service.yaml
│   │   └── values.yaml
│   ├── helm-external/
│   │   ├── README.md
│   │   └── fleet.yaml
│   ├── helm-kustomize/
│   │   ├── README.md
│   │   ├── fleet.yaml
│   │   └── overlays/
│   │       ├── dev/
│   │       │   ├── kustomization.yaml
│   │       │   ├── redis-slave-deployment.yaml
│   │       │   └── redis-slave-service.yaml
│   │       ├── prod/
│   │       │   ├── frontend-deployment.yaml
│   │       │   ├── frontend-service.yaml
│   │       │   └── kustomization.yaml
│   │       └── test/
│   │           ├── frontend-deployment.yaml
│   │           └── kustomization.yaml
│   ├── kustomize/
│   │   ├── README.md
│   │   ├── base/
│   │   │   ├── frontend-deployment.yaml
│   │   │   ├── frontend-service.yaml
│   │   │   ├── kustomization.yaml
│   │   │   ├── redis-master-deployment.yaml
│   │   │   ├── redis-master-service.yaml
│   │   │   ├── redis-slave-deployment.yaml
│   │   │   └── redis-slave-service.yaml
│   │   ├── fleet.yaml
│   │   └── overlays/
│   │       ├── dev/
│   │       │   ├── kustomization.yaml
│   │       │   ├── redis-slave-deployment.yaml
│   │       │   └── redis-slave-service.yaml
│   │       ├── prod/
│   │       │   ├── frontend-deployment.yaml
│   │       │   ├── frontend-service.yaml
│   │       │   └── kustomization.yaml
│   │       └── test/
│   │           ├── frontend-deployment.yaml
│   │           └── kustomization.yaml
│   ├── manifests/
│   │   ├── README.md
│   │   ├── fleet.yaml
│   │   ├── frontend-deployment.yaml
│   │   ├── frontend-service.yaml
│   │   ├── overlays/
│   │   │   ├── noreplication/
│   │   │   │   ├── redis-slave-deployment.yaml
│   │   │   │   └── redis-slave-service_patch.yaml
│   │   │   ├── scale3/
│   │   │   │   └── frontend-deployment_patch.yaml
│   │   │   └── servicelb/
│   │   │       └── frontend-service_patch.yaml
│   │   ├── redis-master-deployment.yaml
│   │   ├── redis-master-service.yaml
│   │   ├── redis-slave-deployment.yaml
│   │   └── redis-slave-service.yaml
│   └── windows-helm/
│       ├── Chart.yaml
│       ├── README.md
│       ├── fleet.yaml
│       ├── templates/
│       │   └── windows.yaml
│       └── values.yaml
├── simple/
│   ├── README.md
│   ├── frontend-deployment.yaml
│   ├── frontend-service.yaml
│   ├── redis-master-deployment.yaml
│   ├── redis-master-service.yaml
│   ├── redis-slave-deployment.yaml
│   └── redis-slave-service.yaml
├── single-cluster/
│   ├── helm/
│   │   ├── Chart.yaml
│   │   ├── README.md
│   │   ├── fleet.yaml
│   │   ├── templates/
│   │   │   ├── frontend-deployment.yaml
│   │   │   ├── frontend-service.yaml
│   │   │   ├── redis-master-deployment.yaml
│   │   │   ├── redis-master-service.yaml
│   │   │   ├── redis-slave-deployment.yaml
│   │   │   └── redis-slave-service.yaml
│   │   └── values.yaml
│   ├── helm-kustomize/
│   │   ├── README.md
│   │   ├── fleet.yaml
│   │   └── overlays/
│   │       └── dev/
│   │           ├── kustomization.yaml
│   │           ├── redis-slave-deployment.yaml
│   │           └── redis-slave-service.yaml
│   ├── helm-multi-chart/
│   │   ├── README.md
│   │   ├── guestbook/
│   │   │   ├── Chart.yaml
│   │   │   ├── fleet.yaml
│   │   │   ├── templates/
│   │   │   │   ├── frontend-deployment.yaml
│   │   │   │   ├── frontend-service.yaml
│   │   │   │   ├── redis-master-deployment.yaml
│   │   │   │   ├── redis-master-service.yaml
│   │   │   │   ├── redis-slave-deployment.yaml
│   │   │   │   └── redis-slave-service.yaml
│   │   │   └── values.yaml
│   │   ├── rancher-monitoring/
│   │   │   └── fleet.yaml
│   │   └── rancher-monitoring-crd/
│   │       └── fleet.yaml
│   ├── helm-overlays/
│   │   ├── README.md
│   │   ├── overlays/
│   │   │   ├── development/
│   │   │   │   ├── development-values.yaml
│   │   │   │   └── fleet.yaml
│   │   │   ├── production/
│   │   │   │   └── prod.yaml
│   │   │   └── test/
│   │   │       ├── test-values.yaml
│   │   │       └── test.yaml
│   │   └── superconfigmap/
│   │       ├── Chart.yaml
│   │       ├── templates/
│   │       │   └── configmap.yaml
│   │       └── values.yaml
│   ├── kustomize/
│   │   ├── README.md
│   │   ├── base/
│   │   │   ├── frontend-deployment.yaml
│   │   │   ├── frontend-service.yaml
│   │   │   ├── kustomization.yaml
│   │   │   ├── redis-master-deployment.yaml
│   │   │   ├── redis-master-service.yaml
│   │   │   ├── redis-slave-deployment.yaml
│   │   │   └── redis-slave-service.yaml
│   │   ├── fleet.yaml
│   │   ├── kustomization.yaml
│   │   └── overlays/
│   │       └── dev/
│   │           ├── kustomization.yaml
│   │           ├── redis-slave-deployment.yaml
│   │           └── redis-slave-service.yaml
│   ├── manifests/
│   │   ├── README.md
│   │   ├── deployments/
│   │   │   ├── frontend-deployment.yaml
│   │   │   ├── redis-master-deployment.yaml
│   │   │   └── redis-slave-deployment.yaml
│   │   ├── fleet.yaml
│   │   └── services/
│   │       ├── frontend-service.yaml
│   │       ├── redis-master-service.yaml
│   │       └── redis-slave-service.yaml
│   └── multi-gitrepo/
│       ├── README.md
│       ├── frontend/
│       │   ├── Chart.yaml
│       │   ├── README.md
│       │   ├── fleet.yaml
│       │   ├── templates/
│       │   │   ├── frontend-deployment.yaml
│       │   │   └── frontend-service.yaml
│       │   └── values.yaml
│       ├── gitrepos/
│       │   ├── README.md
│       │   ├── frontend.yaml
│       │   └── redis.yaml
│       └── redis/
│           ├── Chart.yaml
│           ├── README.md
│           ├── fleet.yaml
│           ├── templates/
│           │   ├── redis-master-deployment.yaml
│           │   ├── redis-master-service.yaml
│           │   ├── redis-slave-deployment.yaml
│           │   └── redis-slave-service.yaml
│           └── values.yaml
└── tests/
    ├── expected/
    │   ├── multi-cluster/
    │   │   ├── helm/
    │   │   │   ├── bundle.yaml
    │   │   │   ├── dev-output.yaml
    │   │   │   ├── prod-output.yaml
    │   │   │   └── test-output.yaml
    │   │   ├── helm-external/
    │   │   │   ├── bundle.yaml
    │   │   │   ├── dev-output.yaml
    │   │   │   ├── prod-output.yaml
    │   │   │   └── test-output.yaml
    │   │   ├── helm-kustomize/
    │   │   │   ├── bundle.yaml
    │   │   │   ├── dev-output.yaml
    │   │   │   ├── prod-output.yaml
    │   │   │   └── test-output.yaml
    │   │   ├── kustomize/
    │   │   │   ├── bundle.yaml
    │   │   │   ├── dev-output.yaml
    │   │   │   ├── prod-output.yaml
    │   │   │   └── test-output.yaml
    │   │   └── manifests/
    │   │       ├── bundle.yaml
    │   │       ├── dev-output.yaml
    │   │       ├── prod-output.yaml
    │   │       └── test-output.yaml
    │   └── single-cluster/
    │       ├── helm/
    │       │   ├── bundle.yaml
    │       │   └── local-output.yaml
    │       ├── helm-kustomize/
    │       │   ├── bundle.yaml
    │       │   └── local-output.yaml
    │       ├── helm-multi-chart/
    │       │   ├── bundle.yaml
    │       │   └── local-output.yaml
    │       ├── kustomize/
    │       │   ├── bundle.yaml
    │       │   └── local-output.yaml
    │       └── manifests/
    │           ├── bundle.yaml
    │           └── local-output.yaml
    ├── setup-cluster.yaml
    └── test.sh
Condensed preview — 187 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (3,788K chars).
[
  {
    "path": ".github/scripts/install-k3d.sh",
    "chars": 1198,
    "preview": "#!/bin/bash\n\n# Install k3d from a pinned release, verifying the SHA-256 checksum before\n# placing the binary on PATH.\n#\n"
  },
  {
    "path": ".github/workflows/ci.yml",
    "chars": 4079,
    "preview": "name: CI\n\non:\n  schedule:\n    - cron: '0 5 * * *'\n  pull_request:\n  workflow_dispatch:\n\njobs:\n  test:\n    runs-on: ubunt"
  },
  {
    "path": ".github/workflows/fossa.yml",
    "chars": 1024,
    "preview": "name: FOSSA Scanning\n\non:\n  push:\n    branches: [\"main\", \"master\", \"release/**\"]\n  workflow_dispatch:\n\npermissions:\n  co"
  },
  {
    "path": ".gitignore",
    "chars": 14,
    "preview": "tests/output/\n"
  },
  {
    "path": "CODEOWNERS",
    "chars": 91,
    "preview": "# Order is important. The last matching pattern has the most precedence.\n\n* @rancher/fleet\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 245,
    "preview": "Examples added to this repo should have a README and need to be added to the overview table in the top level README.\nExa"
  },
  {
    "path": "README.md",
    "chars": 4297,
    "preview": "# Fleet Examples\n\nThis repository contains examples of how to use Fleet using different approaches.\nThe repo is broken u"
  },
  {
    "path": "appco/README.md",
    "chars": 678,
    "preview": "# AppCo Example\n\nThis example will deploy the [Istio SUSE Application Collection](https://docs.apps.rancher.io/reference"
  },
  {
    "path": "appco/fleet.yaml",
    "chars": 651,
    "preview": "defaultNamespace: istio-system\nhelm:\n  releaseName: rancher-istio\n  chart: \"oci://dp.apps.rancher.io/charts/istio\"\n  for"
  },
  {
    "path": "hardened/README.md",
    "chars": 597,
    "preview": "# Hardened Example\n\nThis example will deploy the [Kubernetes sample guestbook](https://github.com/kubernetes/examples/tr"
  },
  {
    "path": "hardened/fleet.yaml",
    "chars": 102,
    "preview": "namespace: hardened-fleet-deployments\n\nnamespaceLabels:\n  pod-security.kubernetes.io/enforce: baseline"
  },
  {
    "path": "hardened/frontend-deployment.yaml",
    "chars": 732,
    "preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: frontend\nspec:\n  selector:\n    matchLabels:\n      app: guestbook\n"
  },
  {
    "path": "hardened/frontend-service.yaml",
    "chars": 199,
    "preview": "apiVersion: v1\nkind: Service\nmetadata:\n  name: frontend\n  labels:\n    app: guestbook\n    tier: frontend\nspec:\n  type: No"
  },
  {
    "path": "hardened/redis-master-deployment.yaml",
    "chars": 717,
    "preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: redis-master\nspec:\n  selector:\n    matchLabels:\n      app: redis\n"
  },
  {
    "path": "hardened/redis-master-service.yaml",
    "chars": 233,
    "preview": "apiVersion: v1\nkind: Service\nmetadata:\n  name: redis-master\n  labels:\n    app: redis\n    role: master\n    tier: backend\n"
  },
  {
    "path": "hardened/redis-slave-deployment.yaml",
    "chars": 713,
    "preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: redis-slave\nspec:\n  selector:\n    matchLabels:\n      app: redis\n "
  },
  {
    "path": "hardened/redis-slave-service.yaml",
    "chars": 209,
    "preview": "apiVersion: v1\nkind: Service\nmetadata:\n  name: redis-slave\n  labels:\n    app: redis\n    role: slave\n    tier: backend\nsp"
  },
  {
    "path": "multi-cluster/helm/Chart.yaml",
    "chars": 96,
    "preview": "apiVersion: v2\nname: guestbook\ndescription: Sample application\nversion: 0.0.0\nappVersion: 0.0.0\n"
  },
  {
    "path": "multi-cluster/helm/README.md",
    "chars": 971,
    "preview": "# Multi-Cluster Helm Example\n\nThis example will deploy the [Kubernetes sample guestbook](https://github.com/kubernetes/e"
  },
  {
    "path": "multi-cluster/helm/fleet.yaml",
    "chars": 403,
    "preview": "namespace: fleet-mc-helm-example\ntargetCustomizations:\n- name: dev\n  helm:\n    values:\n      replication: false\n  cluste"
  },
  {
    "path": "multi-cluster/helm/templates/frontend-deployment.yaml",
    "chars": 522,
    "preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: frontend\nspec:\n  selector:\n    matchLabels:\n      app: guestbook\n"
  },
  {
    "path": "multi-cluster/helm/templates/frontend-service.yaml",
    "chars": 218,
    "preview": "apiVersion: v1\nkind: Service\nmetadata:\n  name: frontend\n  labels:\n    app: guestbook\n    tier: frontend\nspec:\n  type: \"{"
  },
  {
    "path": "multi-cluster/helm/templates/redis-master-deployment.yaml",
    "chars": 477,
    "preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: redis-master\nspec:\n  selector:\n    matchLabels:\n      app: redis\n"
  },
  {
    "path": "multi-cluster/helm/templates/redis-master-service.yaml",
    "chars": 233,
    "preview": "apiVersion: v1\nkind: Service\nmetadata:\n  name: redis-master\n  labels:\n    app: redis\n    role: master\n    tier: backend\n"
  },
  {
    "path": "multi-cluster/helm/templates/redis-slave-deployment.yaml",
    "chars": 512,
    "preview": "{{ if .Values.replication }}\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: redis-slave\nspec:\n  selector:\n    ma"
  },
  {
    "path": "multi-cluster/helm/templates/redis-slave-service.yaml",
    "chars": 288,
    "preview": "apiVersion: v1\nkind: Service\nmetadata:\n  name: redis-slave\n  labels:\n    app: redis\n    role: slave\n    tier: backend\nsp"
  },
  {
    "path": "multi-cluster/helm/values.yaml",
    "chars": 52,
    "preview": "replication: true\nreplicas: 1\nserviceType: NodePort\n"
  },
  {
    "path": "multi-cluster/helm-external/README.md",
    "chars": 1044,
    "preview": "# Multi-Cluster Helm External Example\n\nThis example will deploy the [Kubernetes sample guestbook](https://github.com/kub"
  },
  {
    "path": "multi-cluster/helm-external/fleet.yaml",
    "chars": 515,
    "preview": "namespace: fleet-mc-helm-external-example\nhelm:\n  chart: https://github.com/rancher/fleet-examples/releases/download/exa"
  },
  {
    "path": "multi-cluster/helm-kustomize/README.md",
    "chars": 1095,
    "preview": "# Multi-Cluster Helm Kustomize Example\n\nThis example will deploy the [Kubernetes sample guestbook](https://github.com/ku"
  },
  {
    "path": "multi-cluster/helm-kustomize/fleet.yaml",
    "chars": 470,
    "preview": "namespace: fleet-mc-helm-kustomize-example\nhelm:\n  chart: https://github.com/rancher/fleet-examples/releases/download/ex"
  },
  {
    "path": "multi-cluster/helm-kustomize/overlays/dev/kustomization.yaml",
    "chars": 80,
    "preview": "patchesStrategicMerge:\n- redis-slave-deployment.yaml\n- redis-slave-service.yaml\n"
  },
  {
    "path": "multi-cluster/helm-kustomize/overlays/dev/redis-slave-deployment.yaml",
    "chars": 87,
    "preview": "kind: Deployment\napiVersion: apps/v1\nmetadata:\n  name: redis-slave\nspec:\n  replicas: 0\n"
  },
  {
    "path": "multi-cluster/helm-kustomize/overlays/dev/redis-slave-service.yaml",
    "chars": 94,
    "preview": "kind: Service\napiVersion: v1\nmetadata:\n  name: redis-slave\nspec:\n  selector:\n    role: master\n"
  },
  {
    "path": "multi-cluster/helm-kustomize/overlays/prod/frontend-deployment.yaml",
    "chars": 84,
    "preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: frontend\nspec:\n  replicas: 3\n"
  },
  {
    "path": "multi-cluster/helm-kustomize/overlays/prod/frontend-service.yaml",
    "chars": 83,
    "preview": "kind: Service\napiVersion: v1\nmetadata:\n  name: frontend\nspec:\n  type: LoadBalancer\n"
  },
  {
    "path": "multi-cluster/helm-kustomize/overlays/prod/kustomization.yaml",
    "chars": 74,
    "preview": "patchesStrategicMerge:\n- frontend-deployment.yaml\n- frontend-service.yaml\n"
  },
  {
    "path": "multi-cluster/helm-kustomize/overlays/test/frontend-deployment.yaml",
    "chars": 84,
    "preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: frontend\nspec:\n  replicas: 3\n"
  },
  {
    "path": "multi-cluster/helm-kustomize/overlays/test/kustomization.yaml",
    "chars": 50,
    "preview": "patchesStrategicMerge:\n- frontend-deployment.yaml\n"
  },
  {
    "path": "multi-cluster/kustomize/README.md",
    "chars": 979,
    "preview": "# Multi-Cluster Kustomize Example\n\nThis example will deploy the [Kubernetes sample guestbook](https://github.com/kuberne"
  },
  {
    "path": "multi-cluster/kustomize/base/frontend-deployment.yaml",
    "chars": 501,
    "preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: frontend\nspec:\n  selector:\n    matchLabels:\n      app: guestbook\n"
  },
  {
    "path": "multi-cluster/kustomize/base/frontend-service.yaml",
    "chars": 199,
    "preview": "apiVersion: v1\nkind: Service\nmetadata:\n  name: frontend\n  labels:\n    app: guestbook\n    tier: frontend\nspec:\n  type: No"
  },
  {
    "path": "multi-cluster/kustomize/base/kustomization.yaml",
    "chars": 178,
    "preview": "resources:\n- frontend-deployment.yaml\n- frontend-service.yaml\n- redis-master-deployment.yaml\n- redis-master-service.yaml"
  },
  {
    "path": "multi-cluster/kustomize/base/redis-master-deployment.yaml",
    "chars": 477,
    "preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: redis-master\nspec:\n  selector:\n    matchLabels:\n      app: redis\n"
  },
  {
    "path": "multi-cluster/kustomize/base/redis-master-service.yaml",
    "chars": 233,
    "preview": "apiVersion: v1\nkind: Service\nmetadata:\n  name: redis-master\n  labels:\n    app: redis\n    role: master\n    tier: backend\n"
  },
  {
    "path": "multi-cluster/kustomize/base/redis-slave-deployment.yaml",
    "chars": 473,
    "preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: redis-slave\nspec:\n  selector:\n    matchLabels:\n      app: redis\n "
  },
  {
    "path": "multi-cluster/kustomize/base/redis-slave-service.yaml",
    "chars": 209,
    "preview": "apiVersion: v1\nkind: Service\nmetadata:\n  name: redis-slave\n  labels:\n    app: redis\n    role: slave\n    tier: backend\nsp"
  },
  {
    "path": "multi-cluster/kustomize/fleet.yaml",
    "chars": 362,
    "preview": "namespace: fleet-mc-kustomize-example\ntargetCustomizations:\n- name: dev\n  clusterSelector:\n    matchLabels:\n      env: d"
  },
  {
    "path": "multi-cluster/kustomize/overlays/dev/kustomization.yaml",
    "chars": 104,
    "preview": "resources:\n- ../../base\npatchesStrategicMerge:\n- redis-slave-deployment.yaml\n- redis-slave-service.yaml\n"
  },
  {
    "path": "multi-cluster/kustomize/overlays/dev/redis-slave-deployment.yaml",
    "chars": 87,
    "preview": "kind: Deployment\napiVersion: apps/v1\nmetadata:\n  name: redis-slave\nspec:\n  replicas: 0\n"
  },
  {
    "path": "multi-cluster/kustomize/overlays/dev/redis-slave-service.yaml",
    "chars": 94,
    "preview": "kind: Service\napiVersion: v1\nmetadata:\n  name: redis-slave\nspec:\n  selector:\n    role: master\n"
  },
  {
    "path": "multi-cluster/kustomize/overlays/prod/frontend-deployment.yaml",
    "chars": 84,
    "preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: frontend\nspec:\n  replicas: 3\n"
  },
  {
    "path": "multi-cluster/kustomize/overlays/prod/frontend-service.yaml",
    "chars": 83,
    "preview": "kind: Service\napiVersion: v1\nmetadata:\n  name: frontend\nspec:\n  type: LoadBalancer\n"
  },
  {
    "path": "multi-cluster/kustomize/overlays/prod/kustomization.yaml",
    "chars": 98,
    "preview": "resources:\n- ../../base\npatchesStrategicMerge:\n- frontend-deployment.yaml\n- frontend-service.yaml\n"
  },
  {
    "path": "multi-cluster/kustomize/overlays/test/frontend-deployment.yaml",
    "chars": 84,
    "preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: frontend\nspec:\n  replicas: 3\n"
  },
  {
    "path": "multi-cluster/kustomize/overlays/test/kustomization.yaml",
    "chars": 74,
    "preview": "resources:\n- ../../base\npatchesStrategicMerge:\n- frontend-deployment.yaml\n"
  },
  {
    "path": "multi-cluster/manifests/README.md",
    "chars": 962,
    "preview": "# Multi-Cluster Manifests Example\n\nThis example will deploy the [Kubernetes sample guestbook](https://github.com/kuberne"
  },
  {
    "path": "multi-cluster/manifests/fleet.yaml",
    "chars": 518,
    "preview": "namespace: fleet-mc-manifest-example\ntargetCustomizations:\n- name: dev\n  clusterSelector:\n    matchLabels:\n      env: de"
  },
  {
    "path": "multi-cluster/manifests/frontend-deployment.yaml",
    "chars": 501,
    "preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: frontend\nspec:\n  selector:\n    matchLabels:\n      app: guestbook\n"
  },
  {
    "path": "multi-cluster/manifests/frontend-service.yaml",
    "chars": 199,
    "preview": "apiVersion: v1\nkind: Service\nmetadata:\n  name: frontend\n  labels:\n    app: guestbook\n    tier: frontend\nspec:\n  type: No"
  },
  {
    "path": "multi-cluster/manifests/overlays/noreplication/redis-slave-deployment.yaml",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "multi-cluster/manifests/overlays/noreplication/redis-slave-service_patch.yaml",
    "chars": 35,
    "preview": "spec:\n  selector:\n    role: master\n"
  },
  {
    "path": "multi-cluster/manifests/overlays/scale3/frontend-deployment_patch.yaml",
    "chars": 20,
    "preview": "spec:\n  replicas: 3\n"
  },
  {
    "path": "multi-cluster/manifests/overlays/servicelb/frontend-service_patch.yaml",
    "chars": 27,
    "preview": "spec:\n  type: LoadBalancer\n"
  },
  {
    "path": "multi-cluster/manifests/redis-master-deployment.yaml",
    "chars": 477,
    "preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: redis-master\nspec:\n  selector:\n    matchLabels:\n      app: redis\n"
  },
  {
    "path": "multi-cluster/manifests/redis-master-service.yaml",
    "chars": 233,
    "preview": "apiVersion: v1\nkind: Service\nmetadata:\n  name: redis-master\n  labels:\n    app: redis\n    role: master\n    tier: backend\n"
  },
  {
    "path": "multi-cluster/manifests/redis-slave-deployment.yaml",
    "chars": 473,
    "preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: redis-slave\nspec:\n  selector:\n    matchLabels:\n      app: redis\n "
  },
  {
    "path": "multi-cluster/manifests/redis-slave-service.yaml",
    "chars": 209,
    "preview": "apiVersion: v1\nkind: Service\nmetadata:\n  name: redis-slave\n  labels:\n    app: redis\n    role: slave\n    tier: backend\nsp"
  },
  {
    "path": "multi-cluster/windows-helm/Chart.yaml",
    "chars": 106,
    "preview": "apiVersion: v2\nname: windows-app\ndescription: Sample Windows application\nversion: 0.0.0\nappVersion: 0.0.0\n"
  },
  {
    "path": "multi-cluster/windows-helm/README.md",
    "chars": 1725,
    "preview": "# Windows Helm Example\n\nThis example will deploy the [Windows application example](https://kubernetes.io/docs/setup/prod"
  },
  {
    "path": "multi-cluster/windows-helm/fleet.yaml",
    "chars": 872,
    "preview": "namespace: fleet-helm-windows-example\ntargetCustomizations:\n- name: win2022\n  helm:\n    values:\n      image:\n        tag"
  },
  {
    "path": "multi-cluster/windows-helm/templates/windows.yaml",
    "chars": 2289,
    "preview": "# Source: https://kubernetes.io/docs/setup/production-environment/windows/user-guide-windows-containers/\napiVersion: v1\n"
  },
  {
    "path": "multi-cluster/windows-helm/values.yaml",
    "chars": 23,
    "preview": "image:\n  tag: ltsc2022\n"
  },
  {
    "path": "simple/README.md",
    "chars": 398,
    "preview": "# Simple Example\n\nThis example will deploy the [Kubernetes sample guestbook](https://github.com/kubernetes/examples/tree"
  },
  {
    "path": "simple/frontend-deployment.yaml",
    "chars": 501,
    "preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: frontend\nspec:\n  selector:\n    matchLabels:\n      app: guestbook\n"
  },
  {
    "path": "simple/frontend-service.yaml",
    "chars": 199,
    "preview": "apiVersion: v1\nkind: Service\nmetadata:\n  name: frontend\n  labels:\n    app: guestbook\n    tier: frontend\nspec:\n  type: No"
  },
  {
    "path": "simple/redis-master-deployment.yaml",
    "chars": 477,
    "preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: redis-master\nspec:\n  selector:\n    matchLabels:\n      app: redis\n"
  },
  {
    "path": "simple/redis-master-service.yaml",
    "chars": 233,
    "preview": "apiVersion: v1\nkind: Service\nmetadata:\n  name: redis-master\n  labels:\n    app: redis\n    role: master\n    tier: backend\n"
  },
  {
    "path": "simple/redis-slave-deployment.yaml",
    "chars": 473,
    "preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: redis-slave\nspec:\n  selector:\n    matchLabels:\n      app: redis\n "
  },
  {
    "path": "simple/redis-slave-service.yaml",
    "chars": 209,
    "preview": "apiVersion: v1\nkind: Service\nmetadata:\n  name: redis-slave\n  labels:\n    app: redis\n    role: slave\n    tier: backend\nsp"
  },
  {
    "path": "single-cluster/helm/Chart.yaml",
    "chars": 96,
    "preview": "apiVersion: v2\nname: guestbook\ndescription: Sample application\nversion: 0.0.0\nappVersion: 0.0.0\n"
  },
  {
    "path": "single-cluster/helm/README.md",
    "chars": 446,
    "preview": "# Helm Example\n\nThis example will deploy the [Kubernetes sample guestbook](https://github.com/kubernetes/examples/tree/m"
  },
  {
    "path": "single-cluster/helm/fleet.yaml",
    "chars": 1040,
    "preview": "# This file and all contents in it are OPTIONAL.\n\n# The namespace this chart will be installed and restricted to,\n# if n"
  },
  {
    "path": "single-cluster/helm/templates/frontend-deployment.yaml",
    "chars": 522,
    "preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: frontend\nspec:\n  selector:\n    matchLabels:\n      app: guestbook\n"
  },
  {
    "path": "single-cluster/helm/templates/frontend-service.yaml",
    "chars": 218,
    "preview": "apiVersion: v1\nkind: Service\nmetadata:\n  name: frontend\n  labels:\n    app: guestbook\n    tier: frontend\nspec:\n  type: \"{"
  },
  {
    "path": "single-cluster/helm/templates/redis-master-deployment.yaml",
    "chars": 477,
    "preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: redis-master\nspec:\n  selector:\n    matchLabels:\n      app: redis\n"
  },
  {
    "path": "single-cluster/helm/templates/redis-master-service.yaml",
    "chars": 233,
    "preview": "apiVersion: v1\nkind: Service\nmetadata:\n  name: redis-master\n  labels:\n    app: redis\n    role: master\n    tier: backend\n"
  },
  {
    "path": "single-cluster/helm/templates/redis-slave-deployment.yaml",
    "chars": 512,
    "preview": "{{ if .Values.replication }}\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: redis-slave\nspec:\n  selector:\n    ma"
  },
  {
    "path": "single-cluster/helm/templates/redis-slave-service.yaml",
    "chars": 288,
    "preview": "apiVersion: v1\nkind: Service\nmetadata:\n  name: redis-slave\n  labels:\n    app: redis\n    role: slave\n    tier: backend\nsp"
  },
  {
    "path": "single-cluster/helm/values.yaml",
    "chars": 52,
    "preview": "replication: true\nreplicas: 1\nserviceType: NodePort\n"
  },
  {
    "path": "single-cluster/helm-kustomize/README.md",
    "chars": 570,
    "preview": "# Helm Kustomize Example\n\nThis example will deploy the [Kubernetes sample guestbook](https://github.com/kubernetes/examp"
  },
  {
    "path": "single-cluster/helm-kustomize/fleet.yaml",
    "chars": 377,
    "preview": "# This file and all contents in it are OPTIONAL.\n#\n# Refer to ../helm/fleet.yaml and ../kustomize/fleet.yaml for the ful"
  },
  {
    "path": "single-cluster/helm-kustomize/overlays/dev/kustomization.yaml",
    "chars": 80,
    "preview": "patchesStrategicMerge:\n- redis-slave-deployment.yaml\n- redis-slave-service.yaml\n"
  },
  {
    "path": "single-cluster/helm-kustomize/overlays/dev/redis-slave-deployment.yaml",
    "chars": 87,
    "preview": "kind: Deployment\napiVersion: apps/v1\nmetadata:\n  name: redis-slave\nspec:\n  replicas: 0\n"
  },
  {
    "path": "single-cluster/helm-kustomize/overlays/dev/redis-slave-service.yaml",
    "chars": 94,
    "preview": "kind: Service\napiVersion: v1\nmetadata:\n  name: redis-slave\nspec:\n  selector:\n    role: master\n"
  },
  {
    "path": "single-cluster/helm-multi-chart/README.md",
    "chars": 540,
    "preview": "# Helm Multi-Chart Example\n\nThis example will deploy the [Kubernetes sample guestbook](https://github.com/kubernetes/exa"
  },
  {
    "path": "single-cluster/helm-multi-chart/guestbook/Chart.yaml",
    "chars": 96,
    "preview": "apiVersion: v2\nname: guestbook\ndescription: Sample application\nversion: 0.0.0\nappVersion: 0.0.0\n"
  },
  {
    "path": "single-cluster/helm-multi-chart/guestbook/fleet.yaml",
    "chars": 1037,
    "preview": "# This file and all contents in it are OPTIONAL.\n\n# The namespace this chart will be installed to,\n# if not specified th"
  },
  {
    "path": "single-cluster/helm-multi-chart/guestbook/templates/frontend-deployment.yaml",
    "chars": 522,
    "preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: frontend\nspec:\n  selector:\n    matchLabels:\n      app: guestbook\n"
  },
  {
    "path": "single-cluster/helm-multi-chart/guestbook/templates/frontend-service.yaml",
    "chars": 218,
    "preview": "apiVersion: v1\nkind: Service\nmetadata:\n  name: frontend\n  labels:\n    app: guestbook\n    tier: frontend\nspec:\n  type: \"{"
  },
  {
    "path": "single-cluster/helm-multi-chart/guestbook/templates/redis-master-deployment.yaml",
    "chars": 477,
    "preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: redis-master\nspec:\n  selector:\n    matchLabels:\n      app: redis\n"
  },
  {
    "path": "single-cluster/helm-multi-chart/guestbook/templates/redis-master-service.yaml",
    "chars": 233,
    "preview": "apiVersion: v1\nkind: Service\nmetadata:\n  name: redis-master\n  labels:\n    app: redis\n    role: master\n    tier: backend\n"
  },
  {
    "path": "single-cluster/helm-multi-chart/guestbook/templates/redis-slave-deployment.yaml",
    "chars": 512,
    "preview": "{{ if .Values.replication }}\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: redis-slave\nspec:\n  selector:\n    ma"
  },
  {
    "path": "single-cluster/helm-multi-chart/guestbook/templates/redis-slave-service.yaml",
    "chars": 288,
    "preview": "apiVersion: v1\nkind: Service\nmetadata:\n  name: redis-slave\n  labels:\n    app: redis\n    role: slave\n    tier: backend\nsp"
  },
  {
    "path": "single-cluster/helm-multi-chart/guestbook/values.yaml",
    "chars": 52,
    "preview": "replication: true\nreplicas: 1\nserviceType: NodePort\n"
  },
  {
    "path": "single-cluster/helm-multi-chart/rancher-monitoring/fleet.yaml",
    "chars": 623,
    "preview": "defaultNamespace: cattle-monitoring-system\nhelm:\n  releaseName: rancher-monitoring\n  repo: https://charts.rancher.io\n  c"
  },
  {
    "path": "single-cluster/helm-multi-chart/rancher-monitoring-crd/fleet.yaml",
    "chars": 181,
    "preview": "defaultNamespace: cattle-monitoring-system\nhelm:\n  releaseName: rancher-monitoring-crd\n  chart: rancher-monitoring-crd\n "
  },
  {
    "path": "single-cluster/helm-overlays/README.md",
    "chars": 754,
    "preview": "# Single Helm chart shared between 3 Bundles example\n\nThis example deploys the same Helm chart in 3 different Bundles wi"
  },
  {
    "path": "single-cluster/helm-overlays/overlays/development/development-values.yaml",
    "chars": 18,
    "preview": "name: development\n"
  },
  {
    "path": "single-cluster/helm-overlays/overlays/development/fleet.yaml",
    "chars": 151,
    "preview": "name: development-bundle\ndefaultNamespace: development\nhelm:\n  chart: ./superconfigmap\n  valuesFiles:\n  - overlays/devel"
  },
  {
    "path": "single-cluster/helm-overlays/overlays/production/prod.yaml",
    "chars": 111,
    "preview": "name: prod-bundle\ndefaultNamespace: production\nhelm:\n  chart: ./superconfigmap\n  values:\n    name: production\n\n"
  },
  {
    "path": "single-cluster/helm-overlays/overlays/test/test-values.yaml",
    "chars": 15,
    "preview": "name: test-env\n"
  },
  {
    "path": "single-cluster/helm-overlays/overlays/test/test.yaml",
    "chars": 127,
    "preview": "name: test-bundle\ndefaultNamespace: test-env\nhelm:\n  chart: ./superconfigmap\n  valuesFiles:\n  - overlays/test/test-value"
  },
  {
    "path": "single-cluster/helm-overlays/superconfigmap/Chart.yaml",
    "chars": 120,
    "preview": "apiVersion: v2\nname: superconfigmap\ndescription: A Helm chart that deploys a ConfigMap\ntype: application\nversion: 0.1.0\n"
  },
  {
    "path": "single-cluster/helm-overlays/superconfigmap/templates/configmap.yaml",
    "chars": 101,
    "preview": "apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ .Values.name }}\ndata:\n  test: {{ .Values.name }}\n"
  },
  {
    "path": "single-cluster/helm-overlays/superconfigmap/values.yaml",
    "chars": 19,
    "preview": "name: my-configmap\n"
  },
  {
    "path": "single-cluster/kustomize/README.md",
    "chars": 454,
    "preview": "# Kustomize Example\n\nThis example will deploy the [Kubernetes sample guestbook](https://github.com/kubernetes/examples/t"
  },
  {
    "path": "single-cluster/kustomize/base/frontend-deployment.yaml",
    "chars": 501,
    "preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: frontend\nspec:\n  selector:\n    matchLabels:\n      app: guestbook\n"
  },
  {
    "path": "single-cluster/kustomize/base/frontend-service.yaml",
    "chars": 199,
    "preview": "apiVersion: v1\nkind: Service\nmetadata:\n  name: frontend\n  labels:\n    app: guestbook\n    tier: frontend\nspec:\n  type: No"
  },
  {
    "path": "single-cluster/kustomize/base/kustomization.yaml",
    "chars": 178,
    "preview": "resources:\n- frontend-deployment.yaml\n- frontend-service.yaml\n- redis-master-deployment.yaml\n- redis-master-service.yaml"
  },
  {
    "path": "single-cluster/kustomize/base/redis-master-deployment.yaml",
    "chars": 477,
    "preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: redis-master\nspec:\n  selector:\n    matchLabels:\n      app: redis\n"
  },
  {
    "path": "single-cluster/kustomize/base/redis-master-service.yaml",
    "chars": 233,
    "preview": "apiVersion: v1\nkind: Service\nmetadata:\n  name: redis-master\n  labels:\n    app: redis\n    role: master\n    tier: backend\n"
  },
  {
    "path": "single-cluster/kustomize/base/redis-slave-deployment.yaml",
    "chars": 473,
    "preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: redis-slave\nspec:\n  selector:\n    matchLabels:\n      app: redis\n "
  },
  {
    "path": "single-cluster/kustomize/base/redis-slave-service.yaml",
    "chars": 209,
    "preview": "apiVersion: v1\nkind: Service\nmetadata:\n  name: redis-slave\n  labels:\n    app: redis\n    role: slave\n    tier: backend\nsp"
  },
  {
    "path": "single-cluster/kustomize/fleet.yaml",
    "chars": 373,
    "preview": "# This file and all contents in it are OPTIONAL.\n\n# The default namespace to apply to resources that are namespaced\n# bu"
  },
  {
    "path": "single-cluster/kustomize/kustomization.yaml",
    "chars": 22,
    "preview": "bases:\n- overlays/dev\n"
  },
  {
    "path": "single-cluster/kustomize/overlays/dev/kustomization.yaml",
    "chars": 100,
    "preview": "bases:\n- ../../base\npatchesStrategicMerge:\n- redis-slave-deployment.yaml\n- redis-slave-service.yaml\n"
  },
  {
    "path": "single-cluster/kustomize/overlays/dev/redis-slave-deployment.yaml",
    "chars": 87,
    "preview": "kind: Deployment\napiVersion: apps/v1\nmetadata:\n  name: redis-slave\nspec:\n  replicas: 0\n"
  },
  {
    "path": "single-cluster/kustomize/overlays/dev/redis-slave-service.yaml",
    "chars": 94,
    "preview": "kind: Service\napiVersion: v1\nmetadata:\n  name: redis-slave\nspec:\n  selector:\n    role: master\n"
  },
  {
    "path": "single-cluster/manifests/README.md",
    "chars": 437,
    "preview": "# Manifests Example\n\nThis example will deploy the [Kubernetes sample guestbook](https://github.com/kubernetes/examples/t"
  },
  {
    "path": "single-cluster/manifests/deployments/frontend-deployment.yaml",
    "chars": 501,
    "preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: frontend\nspec:\n  selector:\n    matchLabels:\n      app: guestbook\n"
  },
  {
    "path": "single-cluster/manifests/deployments/redis-master-deployment.yaml",
    "chars": 477,
    "preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: redis-master\nspec:\n  selector:\n    matchLabels:\n      app: redis\n"
  },
  {
    "path": "single-cluster/manifests/deployments/redis-slave-deployment.yaml",
    "chars": 473,
    "preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: redis-slave\nspec:\n  selector:\n    matchLabels:\n      app: redis\n "
  },
  {
    "path": "single-cluster/manifests/fleet.yaml",
    "chars": 275,
    "preview": "# This file and all contents in it are OPTIONAL.\n\n# The default namespace to apply to resources that are namespaced\n# bu"
  },
  {
    "path": "single-cluster/manifests/services/frontend-service.yaml",
    "chars": 199,
    "preview": "apiVersion: v1\nkind: Service\nmetadata:\n  name: frontend\n  labels:\n    app: guestbook\n    tier: frontend\nspec:\n  type: No"
  },
  {
    "path": "single-cluster/manifests/services/redis-master-service.yaml",
    "chars": 233,
    "preview": "apiVersion: v1\nkind: Service\nmetadata:\n  name: redis-master\n  labels:\n    app: redis\n    role: master\n    tier: backend\n"
  },
  {
    "path": "single-cluster/manifests/services/redis-slave-service.yaml",
    "chars": 209,
    "preview": "apiVersion: v1\nkind: Service\nmetadata:\n  name: redis-slave\n  labels:\n    app: redis\n    role: slave\n    tier: backend\nsp"
  },
  {
    "path": "single-cluster/multi-gitrepo/README.md",
    "chars": 668,
    "preview": "# Multi-GitRepo example\n\nThis example will deploy the [Kubernetes sample guestbook](https://github.com/kubernetes/exampl"
  },
  {
    "path": "single-cluster/multi-gitrepo/frontend/Chart.yaml",
    "chars": 114,
    "preview": "apiVersion: v2\nname: guestbook-frontend\ndescription: Sample application frontend\nversion: 0.0.0\nappVersion: 0.0.0\n"
  },
  {
    "path": "single-cluster/multi-gitrepo/frontend/README.md",
    "chars": 416,
    "preview": "# Multi-GitRepo example (frontend)\n\nThis example will deploy the [Kubernetes sample guestbook](https://github.com/kubern"
  },
  {
    "path": "single-cluster/multi-gitrepo/frontend/fleet.yaml",
    "chars": 1049,
    "preview": "# This file and all contents in it are OPTIONAL.\n\n# The namespace this chart will be installed and restricted to,\n# if n"
  },
  {
    "path": "single-cluster/multi-gitrepo/frontend/templates/frontend-deployment.yaml",
    "chars": 522,
    "preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: frontend\nspec:\n  selector:\n    matchLabels:\n      app: guestbook\n"
  },
  {
    "path": "single-cluster/multi-gitrepo/frontend/templates/frontend-service.yaml",
    "chars": 218,
    "preview": "apiVersion: v1\nkind: Service\nmetadata:\n  name: frontend\n  labels:\n    app: guestbook\n    tier: frontend\nspec:\n  type: \"{"
  },
  {
    "path": "single-cluster/multi-gitrepo/frontend/values.yaml",
    "chars": 52,
    "preview": "replication: true\nreplicas: 1\nserviceType: NodePort\n"
  },
  {
    "path": "single-cluster/multi-gitrepo/gitrepos/README.md",
    "chars": 214,
    "preview": "# Multi-GitRepo example (gitrepos)\n\nThis folder contains the `GitRepo CRs` that will be deployed in the [multi-gitrepo]("
  },
  {
    "path": "single-cluster/multi-gitrepo/gitrepos/frontend.yaml",
    "chars": 247,
    "preview": "kind: GitRepo\napiVersion: fleet.cattle.io/v1alpha1\nmetadata:\n  name: multigitrepo-frontend\n  namespace: fleet-local\nspec"
  },
  {
    "path": "single-cluster/multi-gitrepo/gitrepos/redis.yaml",
    "chars": 241,
    "preview": "kind: GitRepo\napiVersion: fleet.cattle.io/v1alpha1\nmetadata:\n  name: multigitrepo-redis\n  namespace: fleet-local\nspec:\n "
  },
  {
    "path": "single-cluster/multi-gitrepo/redis/Chart.yaml",
    "chars": 110,
    "preview": "apiVersion: v2\nname: guestbook-redis\ndescription: Sample application (redis)\nversion: 0.0.0\nappVersion: 0.0.0\n"
  },
  {
    "path": "single-cluster/multi-gitrepo/redis/README.md",
    "chars": 395,
    "preview": "# Helm Example\n\nThis example will deploy the [Kubernetes sample guestbook](https://github.com/kubernetes/examples/tree/m"
  },
  {
    "path": "single-cluster/multi-gitrepo/redis/fleet.yaml",
    "chars": 1046,
    "preview": "# This file and all contents in it are OPTIONAL.\n\n# The namespace this chart will be installed and restricted to,\n# if n"
  },
  {
    "path": "single-cluster/multi-gitrepo/redis/templates/redis-master-deployment.yaml",
    "chars": 497,
    "preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: redis-master\nspec:\n  selector:\n    matchLabels:\n      app: redis\n"
  },
  {
    "path": "single-cluster/multi-gitrepo/redis/templates/redis-master-service.yaml",
    "chars": 233,
    "preview": "apiVersion: v1\nkind: Service\nmetadata:\n  name: redis-master\n  labels:\n    app: redis\n    role: master\n    tier: backend\n"
  },
  {
    "path": "single-cluster/multi-gitrepo/redis/templates/redis-slave-deployment.yaml",
    "chars": 545,
    "preview": "{{ if .Values.replication }}\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: redis-slave\nspec:\n  selector:\n    ma"
  },
  {
    "path": "single-cluster/multi-gitrepo/redis/templates/redis-slave-service.yaml",
    "chars": 288,
    "preview": "apiVersion: v1\nkind: Service\nmetadata:\n  name: redis-slave\n  labels:\n    app: redis\n    role: slave\n    tier: backend\nsp"
  },
  {
    "path": "single-cluster/multi-gitrepo/redis/values.yaml",
    "chars": 52,
    "preview": "replication: true\nreplicas: 1\nserviceType: NodePort\n"
  },
  {
    "path": "tests/expected/multi-cluster/helm/bundle.yaml",
    "chars": 5460,
    "preview": "apiVersion: fleet.cattle.io/v1alpha1\nkind: Bundle\nmetadata:\n  labels:\n    fleet.cattle.io/commit: fake\n  name: test\n  na"
  },
  {
    "path": "tests/expected/multi-cluster/helm/dev-output.yaml",
    "chars": 2694,
    "preview": "- apiVersion: v1\n  kind: Service\n  metadata:\n    annotations:\n      objectset.rio.cattle.io/id: -test\n    labels:\n      "
  },
  {
    "path": "tests/expected/multi-cluster/helm/prod-output.yaml",
    "chars": 3407,
    "preview": "- apiVersion: v1\n  kind: Service\n  metadata:\n    annotations:\n      objectset.rio.cattle.io/id: -test\n    labels:\n      "
  },
  {
    "path": "tests/expected/multi-cluster/helm/test-output.yaml",
    "chars": 3403,
    "preview": "- apiVersion: v1\n  kind: Service\n  metadata:\n    annotations:\n      objectset.rio.cattle.io/id: -test\n    labels:\n      "
  },
  {
    "path": "tests/expected/multi-cluster/helm-external/bundle.yaml",
    "chars": 6608,
    "preview": "apiVersion: fleet.cattle.io/v1alpha1\nkind: Bundle\nmetadata:\n  labels:\n    fleet.cattle.io/commit: fake\n  name: test\n  na"
  },
  {
    "path": "tests/expected/multi-cluster/helm-external/dev-output.yaml",
    "chars": 2739,
    "preview": "- apiVersion: v1\n  kind: Service\n  metadata:\n    annotations:\n      objectset.rio.cattle.io/id: -test\n    labels:\n      "
  },
  {
    "path": "tests/expected/multi-cluster/helm-external/prod-output.yaml",
    "chars": 3461,
    "preview": "- apiVersion: v1\n  kind: Service\n  metadata:\n    annotations:\n      objectset.rio.cattle.io/id: -test\n    labels:\n      "
  },
  {
    "path": "tests/expected/multi-cluster/helm-external/test-output.yaml",
    "chars": 3457,
    "preview": "- apiVersion: v1\n  kind: Service\n  metadata:\n    annotations:\n      objectset.rio.cattle.io/id: -test\n    labels:\n      "
  },
  {
    "path": "tests/expected/multi-cluster/helm-kustomize/bundle.yaml",
    "chars": 7664,
    "preview": "apiVersion: fleet.cattle.io/v1alpha1\nkind: Bundle\nmetadata:\n  labels:\n    fleet.cattle.io/commit: fake\n  name: test\n  na"
  },
  {
    "path": "tests/expected/multi-cluster/helm-kustomize/dev-output.yaml",
    "chars": 3464,
    "preview": "- apiVersion: v1\n  kind: Service\n  metadata:\n    annotations:\n      objectset.rio.cattle.io/id: -test\n    labels:\n      "
  },
  {
    "path": "tests/expected/multi-cluster/helm-kustomize/prod-output.yaml",
    "chars": 3467,
    "preview": "- apiVersion: v1\n  kind: Service\n  metadata:\n    annotations:\n      objectset.rio.cattle.io/id: -test\n    labels:\n      "
  },
  {
    "path": "tests/expected/multi-cluster/helm-kustomize/test-output.yaml",
    "chars": 3463,
    "preview": "- apiVersion: v1\n  kind: Service\n  metadata:\n    annotations:\n      objectset.rio.cattle.io/id: -test\n    labels:\n      "
  },
  {
    "path": "tests/expected/multi-cluster/kustomize/bundle.yaml",
    "chars": 6658,
    "preview": "apiVersion: fleet.cattle.io/v1alpha1\nkind: Bundle\nmetadata:\n  labels:\n    fleet.cattle.io/commit: fake\n  name: test\n  na"
  },
  {
    "path": "tests/expected/multi-cluster/kustomize/dev-output.yaml",
    "chars": 3434,
    "preview": "- apiVersion: apps/v1\n  kind: Deployment\n  metadata:\n    annotations:\n      objectset.rio.cattle.io/id: -test\n    labels"
  },
  {
    "path": "tests/expected/multi-cluster/kustomize/prod-output.yaml",
    "chars": 3437,
    "preview": "- apiVersion: apps/v1\n  kind: Deployment\n  metadata:\n    annotations:\n      objectset.rio.cattle.io/id: -test\n    labels"
  },
  {
    "path": "tests/expected/multi-cluster/kustomize/test-output.yaml",
    "chars": 3433,
    "preview": "- apiVersion: apps/v1\n  kind: Deployment\n  metadata:\n    annotations:\n      objectset.rio.cattle.io/id: -test\n    labels"
  },
  {
    "path": "tests/expected/multi-cluster/manifests/bundle.yaml",
    "chars": 5309,
    "preview": "apiVersion: fleet.cattle.io/v1alpha1\nkind: Bundle\nmetadata:\n  labels:\n    fleet.cattle.io/commit: fake\n  name: test\n  na"
  },
  {
    "path": "tests/expected/multi-cluster/manifests/dev-output.yaml",
    "chars": 2714,
    "preview": "- apiVersion: apps/v1\n  kind: Deployment\n  metadata:\n    annotations:\n      objectset.rio.cattle.io/id: -test\n    labels"
  },
  {
    "path": "tests/expected/multi-cluster/manifests/prod-output.yaml",
    "chars": 3431,
    "preview": "- apiVersion: apps/v1\n  kind: Deployment\n  metadata:\n    annotations:\n      objectset.rio.cattle.io/id: -test\n    labels"
  },
  {
    "path": "tests/expected/multi-cluster/manifests/test-output.yaml",
    "chars": 3427,
    "preview": "- apiVersion: apps/v1\n  kind: Deployment\n  metadata:\n    annotations:\n      objectset.rio.cattle.io/id: -test\n    labels"
  },
  {
    "path": "tests/expected/single-cluster/helm/bundle.yaml",
    "chars": 4547,
    "preview": "apiVersion: fleet.cattle.io/v1alpha1\nkind: Bundle\nmetadata:\n  labels:\n    fleet.cattle.io/commit: fake\n  name: test\n  na"
  },
  {
    "path": "tests/expected/single-cluster/helm/local-output.yaml",
    "chars": 3385,
    "preview": "- apiVersion: v1\n  kind: Service\n  metadata:\n    annotations:\n      objectset.rio.cattle.io/id: -test\n    labels:\n      "
  },
  {
    "path": "tests/expected/single-cluster/helm-kustomize/bundle.yaml",
    "chars": 5957,
    "preview": "apiVersion: fleet.cattle.io/v1alpha1\nkind: Bundle\nmetadata:\n  labels:\n    fleet.cattle.io/commit: fake\n  name: test\n  na"
  },
  {
    "path": "tests/expected/single-cluster/helm-kustomize/local-output.yaml",
    "chars": 3446,
    "preview": "- apiVersion: v1\n  kind: Service\n  metadata:\n    annotations:\n      objectset.rio.cattle.io/id: -test\n    labels:\n      "
  },
  {
    "path": "tests/expected/single-cluster/helm-multi-chart/bundle.yaml",
    "chars": 1424089,
    "preview": "apiVersion: fleet.cattle.io/v1alpha1\nkind: Bundle\nmetadata:\n  labels:\n    fleet.cattle.io/commit: fake\n  name: test-gues"
  },
  {
    "path": "tests/expected/single-cluster/helm-multi-chart/local-output.yaml",
    "chars": 2006402,
    "preview": "- apiVersion: v1\n  kind: Namespace\n  metadata:\n    annotations:\n      helm.sh/resource-policy: keep\n      objectset.rio."
  },
  {
    "path": "tests/expected/single-cluster/kustomize/bundle.yaml",
    "chars": 4934,
    "preview": "apiVersion: fleet.cattle.io/v1alpha1\nkind: Bundle\nmetadata:\n  labels:\n    fleet.cattle.io/commit: fake\n  name: test\n  na"
  },
  {
    "path": "tests/expected/single-cluster/kustomize/local-output.yaml",
    "chars": 3416,
    "preview": "- apiVersion: apps/v1\n  kind: Deployment\n  metadata:\n    annotations:\n      objectset.rio.cattle.io/id: -test\n    labels"
  },
  {
    "path": "tests/expected/single-cluster/manifests/bundle.yaml",
    "chars": 4011,
    "preview": "apiVersion: fleet.cattle.io/v1alpha1\nkind: Bundle\nmetadata:\n  labels:\n    fleet.cattle.io/commit: fake\n  name: test\n  na"
  },
  {
    "path": "tests/expected/single-cluster/manifests/local-output.yaml",
    "chars": 3409,
    "preview": "- apiVersion: apps/v1\n  kind: Deployment\n  metadata:\n    annotations:\n      objectset.rio.cattle.io/id: -test\n    labels"
  },
  {
    "path": "tests/setup-cluster.yaml",
    "chars": 1125,
    "preview": "# Minimal Fleet cluster objects for the test k3d cluster.\n#\n# single-cluster examples target the fleet-local namespace. "
  },
  {
    "path": "tests/test.sh",
    "chars": 3342,
    "preview": "#!/usr/bin/env bash\nset -euo pipefail\n\n# Ensure yq is available for YAML normalization\nif ! command -v yq &>/dev/null; t"
  }
]

About this extraction

This page contains the full source code of the rancher/fleet-examples GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 187 files (3.4 MB), approximately 913.4k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!