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.
[](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
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.