| 
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -57,7 +57,7 @@ You can choose what components to install and for which cluster with:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				```sh
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				flux bootstrap <GIT-PROVIDER> \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --components=source-controller,kustomize-controller,helm-controller,notification-controller \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --path=my-cluster \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --path=clusters/my-cluster \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --version=latest
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				```
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -71,15 +71,16 @@ If you wish to install a specific version, use the Flux
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				With `--path` you can configure the directory which will be used to reconcile the target cluster.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				To control multiple clusters from the same Git repository, you have to set a unique path per
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				cluster e.g. `staging-cluster` and `production-cluster`:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				cluster e.g. `clusters/staging` and `clusters/production`:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				```sh
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				├── staging-cluster # <- path=staging-cluster
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				./clusters/
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				├── staging # <- path=clusters/staging
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				│   └── flux-system # <- namespace dir generated by bootstrap
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				│       ├── gotk-components.yaml
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				│       ├── gotk-sync.yaml
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				│       └── kustomization.yaml
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				└── production-cluster # <- path=production-cluster
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				└── production-cluster # <- path=clusters/production
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    └── flux-system
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				```
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -87,6 +88,9 @@ cluster e.g. `staging-cluster` and `production-cluster`:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    If you wish to change the branch to something else than main, create the repository manually,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    push a branch to origin and then use `flux bootstrap <GIT-PROVIDER> --branch=your-branch`.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				For examples on how you can structure your Git repository see:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				* [flux2-kustomize-helm-example](https://github.com/fluxcd/flux2-kustomize-helm-example)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				### GitHub and GitHub Enterprise
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				Generate a [personal access token](https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line)
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -104,7 +108,7 @@ Run the bootstrap for a repository on your personal GitHub account:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				flux bootstrap github \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --owner=my-github-username \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --repository=my-repository \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --path=my-cluster \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --path=clusters/my-cluster \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --personal
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				```
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -116,7 +120,7 @@ flux bootstrap github \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --repository=my-repository \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --team=team1-slug \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --team=team2-slug \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --path=my-cluster
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --path=clusters/my-cluster
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				```
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				When you specify a list of teams, those teams will be granted maintainer access to the repository.
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -129,7 +133,7 @@ flux bootstrap github \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --owner=my-github-organization \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --repository=my-repository \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --branch=main \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --path=my-cluster
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --path=clusters/my-cluster
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				```
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				### GitLab and GitLab Enterprise
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -150,7 +154,7 @@ flux bootstrap gitlab \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --owner=my-gitlab-username \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --repository=my-repository \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --branch=master \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --path=my-cluster \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --path=clusters/my-cluster \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --personal
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				```
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -162,7 +166,7 @@ flux bootstrap gitlab \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --owner=my-gitlab-username \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --repository=my-repository \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --branch=master \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --path=my-cluster
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --path=clusters/my-cluster
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				```
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				!!! hint "Authentication"
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -177,7 +181,7 @@ flux bootstrap gitlab \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --owner=my-gitlab-group \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --repository=my-repository \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --branch=master \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --path=my-cluster
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --path=clusters/my-cluster
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				```
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				To run the bootstrap for a repository hosted on GitLab on-prem or enterprise, you have to specify your GitLab hostname:
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -188,7 +192,7 @@ flux bootstrap gitlab \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --owner=my-gitlab-group \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --repository=my-repository \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --branch=master \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --path=my-cluster
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --path=clusters/my-cluster
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				```
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				### Generic Git Server
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -205,7 +209,7 @@ cd my-repository
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				Create a directory inside the repository:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				```sh
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				mkdir -p ./my-cluster/flux-system
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				mkdir -p ./clusters/my-cluster/flux-system
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				```
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				Generate the Flux manifests with:
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -214,7 +218,7 @@ Generate the Flux manifests with:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				# on ARM64/AARCH64 clusters use --arch=arm64
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				flux install --version=latest \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --arch=amd64 \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --export > ./my-cluster/flux-system/gotk-components.yaml
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --export > ./clusters/my-cluster/flux-system/gotk-components.yaml
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				```
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				If your cluster must pull images from a private container registry, first you should pull
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -242,7 +246,7 @@ Set your registry domain, and the pull secret when generating the manifests:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				flux install --version=latest \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --registry=registry.internal/fluxcd \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --image-pull-secret=regcred \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --export > ./my-cluster/flux-system/gotk-components.yaml
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --export > ./clusters/my-cluster/flux-system/gotk-components.yaml
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				```
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				Commit and push the manifest to the master branch:
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -254,7 +258,7 @@ git add -A && git commit -m "add components" && git push
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				Apply the manifests on your cluster:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				```sh
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				kubectl apply -f ./my-cluster/flux-system/gotk-components.yaml
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				kubectl apply -f ./clusters/my-cluster/flux-system/gotk-components.yaml
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				```
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				Verify that the controllers have started:
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -302,12 +306,12 @@ Export both objects, generate a `kustomization.yaml`, commit and push the manife
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				```sh
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				flux export source git flux-system \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  > ./my-cluster/flux-system/gotk-sync.yaml
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  > ./clusters/my-cluster/flux-system/gotk-sync.yaml
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				flux export kustomization flux-system \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  >> ./my-cluster/flux-system/gotk-sync.yaml
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  >> ./clusters/my-cluster/flux-system/gotk-sync.yaml
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				cd ./my-cluster/flux-system && kustomize create --autodetect
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				cd ./clusters/my-cluster/flux-system && kustomize create --autodetect
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				git add -A && git commit -m "add sync manifests" && git push
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				```
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -316,7 +320,7 @@ To upgrade the Flux components to a newer version, run the install command and c
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				```sh
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				flux install --version=latest \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --export > ./my-cluster/flux-system/gotk-components.yaml
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --export > ./clusters/my-cluster/flux-system/gotk-components.yaml
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				git add -A && git commit -m "update flux" && git push
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				```
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -324,15 +328,74 @@ git add -A && git commit -m "update flux" && git push
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				The source-controller will pull the changes on the cluster, then the kustomize-controller
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				will perform a rolling update of all Flux components including itself.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				## Dev install
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				## Customize Flux manifests
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				You can customize the Flux components in the Git repository where you've run bootstrap with Kustomize patches.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				First clone the repository locally and generate a `kustomization.yaml` file with:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				```sh
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				cd ./clusters/production && kustomize create --autodetect
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				```
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				Assuming you want to add custom annotations and labels to the Flux controllers in `clusters/production`.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				Create a Kustomize patch and set the metadata for source-controller and kustomize-controller pods:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				```yaml
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				apiVersion: apps/v1
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				kind: Deployment
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				metadata:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  name: source-controller
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  namespace: flux-system
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				spec:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  template:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    metadata:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      annotations:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        custom: annotation
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      labels:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        custom: label
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				---
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				apiVersion: apps/v1
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				kind: Deployment
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				metadata:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  name: kustomize-controller
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  namespace: flux-system
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				spec:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  template:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    metadata:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      annotations:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        custom: annotation
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      labels:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        custom: label
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				```
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				Save the above file as `flux-system-patch.yaml` inside the `clusters/production` dir.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				Edit `clusters/production/kustomization.yaml` and add the patch:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				For testing purposes you can install Flux without storing its manifests in a Git repository.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				```yaml
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				apiVersion: kustomize.config.k8s.io/v1beta1
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				kind: Kustomization
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				resources:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  - flux-system
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				patchesStrategicMerge:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  - flux-system-patch.yaml
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				```
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				Push the changes to main branch:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				```sh
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				git add -A && git commit -m "add production metadata" && git push
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				```
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				Flux will detect the change and will update itself on the production cluster.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				Here is the equivalent to `fluxctl install`:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				## Dev install
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				For testing purposes you can install Flux without storing its manifests in a Git repository:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				```sh
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				flux install \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --components=source-controller,kustomize-controller
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				flux install --arch=amd64
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				```
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				Then you can register Git repositories and reconcile them on your cluster:
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -353,27 +416,20 @@ flux create kustomization podinfo-default \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --health-check-timeout=2m
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				```
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				Here is the equivalent to `helm install helm-operator`:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				```sh
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				flux install \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --components=source-controller,kustomize-controller,helm-controller
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				```
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				Then you can register Helm repositories and create Helm releases:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				You can register Helm repositories and create Helm releases:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				```sh
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				flux create source helm stable \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				flux create source helm bitnami \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --interval=1h \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --url=https://charts.helm.sh/stable
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --url=https://charts.bitnami.com/bitnami
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				flux create helmrelease sealed-secrets \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				flux create helmrelease nginx \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --interval=1h \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --release-name=sealed-secrets \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --target-namespace=flux-system \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --source=HelmRepository/stable \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --chart=sealed-secrets \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --chart-version="1.10.x"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --release-name=nginx-ingress-controller \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --target-namespace=kube-system \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --source=HelmRepository/bitnami \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --chart=nginx-ingress-controller \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  --chart-version="5.x.x"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				```
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				## Monitoring with Prometheus and Grafana
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
			
			 | 
			 | 
			
				
 
 |