Add workload customization to docs

Signed-off-by: Stefan Prodan <stefan.prodan@gmail.com>
This commit is contained in:
Stefan Prodan 2024-04-10 17:43:38 +03:00
parent e4067d90a5
commit 49d584bba9
No known key found for this signature in database
GPG key ID: 3299AEB0E4085BAF
4 changed files with 74 additions and 1 deletions

View file

@ -1,5 +1,9 @@
# flux2-hub-spoke-example # flux2-hub-spoke-example
[![test](https://github.com/fluxcd/flux2-hub-spoke-example/workflows/test/badge.svg)](https://github.com/fluxcd/flux2-hub-spoke-example/actions)
[![e2e](https://github.com/fluxcd/flux2-hub-spoke-example/workflows/e2e/badge.svg)](https://github.com/fluxcd/flux2-hub-spoke-example/actions)
[![license](https://img.shields.io/github/license/fluxcd/flux2-hub-spoke-example.svg)](https://github.com/fluxcd/flux2-hub-spoke-example/blob/main/LICENSE)
This repository showcases how to run Flux on a central Kubernetes cluster This repository showcases how to run Flux on a central Kubernetes cluster
and have it manage the GitOps continuous delivery of apps and infrastructure and have it manage the GitOps continuous delivery of apps and infrastructure
workloads on multiple clusters. workloads on multiple clusters.
@ -127,6 +131,62 @@ ingress-nginx ingress-nginx-controller-55474d95c5-mq8mj 1/1
podinfo podinfo-66f4ccb98c-bt99t 1/1 podinfo podinfo-66f4ccb98c-bt99t 1/1
``` ```
## Customize the workloads
Assuming you want to ship workloads to the production cluster with a different configuration,
you can employ Kustomize patches in the `clusters/production` overlay and change the Flux HelmRelease values.
For example, to change the number of replicas for `ingress-nginx` in the production cluster,
you can create a patch file in `clusters/production/infra-controllers/ingress-nginx-values.yaml`:
```yaml
apiVersion: helm.toolkit.fluxcd.io/v2beta2
kind: HelmRelease
metadata:
name: ingress-nginx
spec:
values:
controller:
replicaCount: 2
```
And then apply the patch to the `ingress-nginx` HelmRelease in the
`clusters/production/infra-controllers/kustomization.yaml` file with:
```yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../../deploy/infra-controllers
patches:
- target:
kind: HelmRelease
name: ingress-nginx
path: ingress-nginx-values.yaml
```
Verify that the patch is correctly applied with:
```shell
kustomize build ./clusters/production/infra-controllers/
```
After you commit the changes to the repository, Flux will automatically apply the changes.
You can trigger a manual reconciliation with:
```shell
flux -n production reconcile ks infra-controllers --with-source
```
To verify the number of pods, you can list the deployments in the production cluster:
```console
kubectl --context kind-flux-production -n ingress-nginx get deploy
NAME READY UP-TO-DATE
ingress-nginx-controller 2/2 2
```
## Testing ## Testing
After making changes to the manifests, you can validate them locally with [kubeconform](https://github.com/yannh/kubeconform) by running: After making changes to the manifests, you can validate them locally with [kubeconform](https://github.com/yannh/kubeconform) by running:

View file

@ -5,7 +5,7 @@ metadata:
spec: spec:
chart: chart:
spec: spec:
version: ">=1.0.0-alpha" version: ">=1.0.0"
test: test:
enable: false enable: false
values: values:

View file

@ -0,0 +1,8 @@
apiVersion: helm.toolkit.fluxcd.io/v2beta2
kind: HelmRelease
metadata:
name: ingress-nginx
spec:
values:
controller:
replicaCount: 2

View file

@ -2,3 +2,8 @@ apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization kind: Kustomization
resources: resources:
- ../../../deploy/infra-controllers - ../../../deploy/infra-controllers
patches:
- target:
kind: HelmRelease
name: ingress-nginx
path: ingress-nginx-values.yaml