Add documentation for needs parameterization. (#1987)
* Add documentation for needs parameterization. Co-authored-by: Peter Aichinger <petera@topdesk.com>
This commit is contained in:
		
							parent
							
								
									77e6268bcb
								
							
						
					
					
						commit
						c0668874e3
					
				
							
								
								
									
										36
									
								
								README.md
								
								
								
								
							
							
						
						
									
										36
									
								
								README.md
								
								
								
								
							|  | @ -917,7 +917,7 @@ With the [helm-tiller](https://github.com/rimusz/helm-tiller) plugin installed, | ||||||
| To enable this mode, you need to define `tillerless: true` and set the `tillerNamespace` in the `helmDefaults` section | To enable this mode, you need to define `tillerless: true` and set the `tillerNamespace` in the `helmDefaults` section | ||||||
| or in the `releases` entries. | or in the `releases` entries. | ||||||
| 
 | 
 | ||||||
| ## DAG-aware installation/deletion ordering | ## DAG-aware installation/deletion ordering with `needs` | ||||||
| 
 | 
 | ||||||
| `needs` controls the order of the installation/deletion of the release: | `needs` controls the order of the installation/deletion of the release: | ||||||
| 
 | 
 | ||||||
|  | @ -925,10 +925,10 @@ or in the `releases` entries. | ||||||
| releases: | releases: | ||||||
| - name: somerelease | - name: somerelease | ||||||
|   needs: |   needs: | ||||||
|   - [TILLER_NAMESPACE/][NAMESPACE/]anotherelease |   - [[KUBECONTEXT/]NAMESPACE/]anotherelease | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| Be aware that you have to specify the namespace name if you configured one for the release(s). | Be aware that you have to specify the kubecontext and namespace name if you configured one for the release(s). | ||||||
| 
 | 
 | ||||||
| All the releases listed under `needs` are installed before(or deleted after) the release itself. | All the releases listed under `needs` are installed before(or deleted after) the release itself. | ||||||
| 
 | 
 | ||||||
|  | @ -963,6 +963,36 @@ On `helmfile [delete|destroy]`, deletions happen in the reverse order. | ||||||
| 
 | 
 | ||||||
| That is, `myapp1` and `myapp2` are deleted first, then `servicemesh`, and finally `logging`. | That is, `myapp1` and `myapp2` are deleted first, then `servicemesh`, and finally `logging`. | ||||||
| 
 | 
 | ||||||
|  | ### Selectors and `needs` | ||||||
|  | When using selectors/labels, `needs` are ignored by default. This behaviour can be overruled with a few parameters:  | ||||||
|  | | Parameter | default | Description | | ||||||
|  | |---|---|---| | ||||||
|  | | `--skip-needs` | `true` | `needs` are ignored (default behavior).  | | ||||||
|  | | `--include-needs` | `false` | The direct `needs` of the selected release(s) will be included. | | ||||||
|  | | `--include-transitive-needs` | `false` | The direct and transitive `needs` of the selected release(s) will be included. | | ||||||
|  | Let's look at an example to illustrate how the different parameters work: | ||||||
|  | ```yaml | ||||||
|  | releases: | ||||||
|  | - name: serviceA | ||||||
|  |   chart: my/chart | ||||||
|  |   needs: | ||||||
|  |   - serviceB | ||||||
|  | - name: serviceB | ||||||
|  |   chart: your/chart | ||||||
|  |   needs: | ||||||
|  |   - serviceC | ||||||
|  | - name: serviceC | ||||||
|  |   chart: her/chart | ||||||
|  | - name: serviceD | ||||||
|  |   chart: his/chart | ||||||
|  | ``` | ||||||
|  | | Command | Included Releases Order | Explanation | | ||||||
|  | |---|---|---| | ||||||
|  | | `helmfile -l name=serviceA sync` | - `serviceA` | By default no needs are included. | | ||||||
|  | | `helmfile -l name=serviceA sync --include-needs` | - `serviceB`<br>- `serviceA` | `serviceB` is now part of the release as it is a direct need of `serviceA`.  | | ||||||
|  | | `helmfile -l name=serviceA sync --include-transitive-needs` | - `serviceC`<br>- `serviceB`<br>- `serviceA` | `serviceC` is now also part of the release as it is a direct need of `serviceB` and therefore a transitive need of `serviceA`.  |  | ||||||
|  | 
 | ||||||
|  | Note that `--include-transitive-needs` will override any potential exclusions done by selectors or conditions. So even if you explicitly exclude a release via a selector it will still be part of the deployment in case it is a direct or transitive need of any of the specified releases. | ||||||
| ## Separating helmfile.yaml into multiple independent files | ## Separating helmfile.yaml into multiple independent files | ||||||
| 
 | 
 | ||||||
| Once your `helmfile.yaml` got to contain too many releases, | Once your `helmfile.yaml` got to contain too many releases, | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue