|  |  |  | @ -118,51 +118,78 @@ repository and omits all other files. | 
		
	
		
			
				|  |  |  |  |     Git repositories. See the [`GitRepository` CRD docs](../components/source/gitrepositories.md) | 
		
	
		
			
				|  |  |  |  |     for more details. | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | ### Bucket | 
		
	
		
			
				|  |  |  |  | ### Cloud Storage | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | Charts from S3 compatible storage buckets can be released by declaring | 
		
	
		
			
				|  |  |  |  | a `Bucket`, the source-controller will fetch the contents of the bucket | 
		
	
		
			
				|  |  |  |  | on an interval and expose it as an artifact. | 
		
	
		
			
				|  |  |  |  | It is inadvisable while still possible to use a `Bucket` as a source for a `HelmRelease`, | 
		
	
		
			
				|  |  |  |  | as the whole storage bucket will be downloaded by source controller at each sync. The | 
		
	
		
			
				|  |  |  |  | bucket can easily become very large if there are frequent releases of multiple charts | 
		
	
		
			
				|  |  |  |  | that are stored in the same bucket. | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | **There is one caveat you should be aware of:** to make the | 
		
	
		
			
				|  |  |  |  | source-controller produce a new chart artifact, the `version` in the | 
		
	
		
			
				|  |  |  |  | `Chart.yaml` of the chart must be bumped. | 
		
	
		
			
				|  |  |  |  | A better option is to use [Chartmuseum](https://github.com/helm/chartmuseum) and run a cluster | 
		
	
		
			
				|  |  |  |  | local Helm repository that can be used by source controller. Chartmuseum has support | 
		
	
		
			
				|  |  |  |  | for multiple different cloud storage solutions such as S3, GCS, and Azure Blob Storage, | 
		
	
		
			
				|  |  |  |  | meaning that you are not limited to only using storage providers that support the S3 protocol. | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | An example `Bucket`: | 
		
	
		
			
				|  |  |  |  | You can deploy a Chartmuseum instance with a `HelmRelease` that exposes a Helm repository stored | 
		
	
		
			
				|  |  |  |  | in a S3 bucket. Please refer to [Chartmuseums how to run documentation](https://chartmuseum.com/docs/#how-to-run) | 
		
	
		
			
				|  |  |  |  | for details about how to use other storage backends. | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | ```yaml | 
		
	
		
			
				|  |  |  |  | apiVersion: source.toolkit.fluxcd.io/v1beta1 | 
		
	
		
			
				|  |  |  |  | kind: Bucket | 
		
	
		
			
				|  |  |  |  | kind: HelmRepository | 
		
	
		
			
				|  |  |  |  | metadata: | 
		
	
		
			
				|  |  |  |  |   name: podinfo | 
		
	
		
			
				|  |  |  |  |   namespace: gotk-system | 
		
	
		
			
				|  |  |  |  |   name: chartmuseum | 
		
	
		
			
				|  |  |  |  |   namespace: flux-system | 
		
	
		
			
				|  |  |  |  | spec: | 
		
	
		
			
				|  |  |  |  |   url: https://chartmuseum.github.io/charts | 
		
	
		
			
				|  |  |  |  |   interval: 10m | 
		
	
		
			
				|  |  |  |  | --- | 
		
	
		
			
				|  |  |  |  | apiVersion: helm.toolkit.fluxcd.io/v2beta1 | 
		
	
		
			
				|  |  |  |  | kind: HelmRelease | 
		
	
		
			
				|  |  |  |  | metadata: | 
		
	
		
			
				|  |  |  |  |   name: chartmuseum | 
		
	
		
			
				|  |  |  |  |   namespace: flux-system | 
		
	
		
			
				|  |  |  |  | spec: | 
		
	
		
			
				|  |  |  |  |   interval: 5m | 
		
	
		
			
				|  |  |  |  |   chart: | 
		
	
		
			
				|  |  |  |  |     spec: | 
		
	
		
			
				|  |  |  |  |       chart: chartmuseum | 
		
	
		
			
				|  |  |  |  |       version: "2.14.2" | 
		
	
		
			
				|  |  |  |  |       sourceRef: | 
		
	
		
			
				|  |  |  |  |         kind: HelmRepository | 
		
	
		
			
				|  |  |  |  |         name: chartmuseum | 
		
	
		
			
				|  |  |  |  |         namespace: flux-system | 
		
	
		
			
				|  |  |  |  |       interval: 1m | 
		
	
		
			
				|  |  |  |  |   provider: generic | 
		
	
		
			
				|  |  |  |  |   bucketName: podinfo | 
		
	
		
			
				|  |  |  |  |   endpoint: minio.minio.svc.cluster.local:9000 | 
		
	
		
			
				|  |  |  |  |   ignore: | | 
		
	
		
			
				|  |  |  |  |     # exclude all | 
		
	
		
			
				|  |  |  |  |     /* | 
		
	
		
			
				|  |  |  |  |     # include charts directory | 
		
	
		
			
				|  |  |  |  |     !/charts/ | 
		
	
		
			
				|  |  |  |  |   values: | 
		
	
		
			
				|  |  |  |  |     env: | 
		
	
		
			
				|  |  |  |  |       open: | 
		
	
		
			
				|  |  |  |  |         AWS_SDK_LOAD_CONFIG: true | 
		
	
		
			
				|  |  |  |  |         STORAGE: amazon | 
		
	
		
			
				|  |  |  |  |         STORAGE_AMAZON_BUCKET: "bucket-name" | 
		
	
		
			
				|  |  |  |  |         STORAGE_AMAZON_PREFIX: "" | 
		
	
		
			
				|  |  |  |  |         STORAGE_AMAZON_REGION: "region-name" | 
		
	
		
			
				|  |  |  |  |     serviceAccount: | 
		
	
		
			
				|  |  |  |  |       create: true | 
		
	
		
			
				|  |  |  |  |       annotations: | 
		
	
		
			
				|  |  |  |  |         eks.amazonaws.com/role-arn: "role-arn" | 
		
	
		
			
				|  |  |  |  |     securityContext: | 
		
	
		
			
				|  |  |  |  |       enabled: true | 
		
	
		
			
				|  |  |  |  |       fsGroup: 65534 | 
		
	
		
			
				|  |  |  |  | ``` | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | The `interval` defines at which interval the Git repository contents | 
		
	
		
			
				|  |  |  |  | are fetched, and should be at least `1m`. Setting this to a higher | 
		
	
		
			
				|  |  |  |  | value means newer chart versions will be detected at a slower pace, | 
		
	
		
			
				|  |  |  |  | a push-based fetch can be introduced using [webhook receivers](webhook-receivers.md) | 
		
	
		
			
				|  |  |  |  | After Chartmuseum is up and running it should be possible to use the accompanying | 
		
	
		
			
				|  |  |  |  | service as the url for the `HelmRepository`. | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | The `provider`, `bucketName` and `endpoint` together define what | 
		
	
		
			
				|  |  |  |  | S3 compatible storage should be connected to. For more information, | 
		
	
		
			
				|  |  |  |  | see the [`Bucket` CRD docs](../components/source/buckets.md). | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | The `ignore` defines file and folder exclusion for the | 
		
	
		
			
				|  |  |  |  | artifact produced, and follows the [`.gitignore` pattern | 
		
	
		
			
				|  |  |  |  | format](https://git-scm.com/docs/gitignore#_pattern_format). | 
		
	
		
			
				|  |  |  |  | The above example only includes the `charts` directory of the | 
		
	
		
			
				|  |  |  |  | repository and omits all other files. | 
		
	
		
			
				|  |  |  |  | ```yaml | 
		
	
		
			
				|  |  |  |  | apiVersion: source.toolkit.fluxcd.io/v1beta1 | 
		
	
		
			
				|  |  |  |  | kind: HelmRepository | 
		
	
		
			
				|  |  |  |  | metadata: | 
		
	
		
			
				|  |  |  |  |   name: helm-charts | 
		
	
		
			
				|  |  |  |  |   namespace: flux-system | 
		
	
		
			
				|  |  |  |  | spec: | 
		
	
		
			
				|  |  |  |  |   interval: 1m | 
		
	
		
			
				|  |  |  |  |   url: http://chartmuseum-chartmuseum:8080 | 
		
	
		
			
				|  |  |  |  | ``` | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | ## Define a Helm release | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
	
		
			
				
					|  |  |  | 
 |