mirror of
https://github.com/helmfile/helmfile.git
synced 2026-10-06 20:51:30 +02:00
Fix broken selector and DAG calculation logic after --{include,skip}-needs addition with correct Release IDs (#1823)
#1772 broke `--selector` with `needs` in many ways. The two biggest problems I've encountered were: - duplicate releases even if you've provided a proper `selector` to deduplicate - sync/deletion ordering broken when you have `needs` For the first issue, we had to update `getSelectedReleases` function to also calculate the "selected releases and releases needed by the selected releases", and use that to calculate the DAG. That should have been done in #1772. The latter started happening after I've fixed the first issue. The source of the issue was that `needs` turned out to be ambiguous in a few cases. Previously, `needs: ["foo/bar"]` had two meanings. One for "needs release bar in kubecontext foo", another for "needs release bar in namespace foo". Moreover, `needs: ["foo/bar/baz"]` had three meanings. - `needs release baz in tiller namespace foo and namespace baz` - `needs release baz in namespace bar in kubecontext foo` - `needs release baz in tiller namespace bar in kubecontext foo`. Especially, the first meaning doesn't make sense at all. Helm 2 solely use tillerNamespace for namespacing the release and Helm 3 uses namespace for that. This fix sorts all the bugs and issues I've found so far around that, by changing the meanings of the above two examples as follows: - `foo/bar` means `namespace=foo,name=bar` for Helm 3 and `tillerNamespace=foo,name=bar` for Helm 2 - `needs release bar in kubecontext foo` is now `foo//bar`. Notice the extra `/` between `foo` and `bar`. - `foo/bar/baz` means `kubecontext=foo,namespace=bar,name=baz` for Helm 3 and `kubecontext=foo,tillerNamespace=bar,name=baz` in Helm 2 Fixes #1818
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
processing file "helmfile.yaml" in directory "."
|
||||
first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode=<nil>
|
||||
first-pass uses: &{default map[] map[]}
|
||||
first-pass rendering output of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: foo
|
||||
3: chart: incubator/raw
|
||||
4: namespace: default
|
||||
5: labels:
|
||||
6: app: test
|
||||
7: component: raw
|
||||
8: index: '1'
|
||||
9:
|
||||
10: - name: foo
|
||||
11: chart: incubator/raw
|
||||
12: namespace: default
|
||||
13: labels:
|
||||
14: app: test
|
||||
15: component: raw
|
||||
16: index: '2'
|
||||
17:
|
||||
|
||||
first-pass produced: &{default map[] map[]}
|
||||
first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]}
|
||||
vals:
|
||||
map[]
|
||||
defaultVals:[]
|
||||
second-pass rendering result of "helmfile.yaml.part.0":
|
||||
0:
|
||||
1: releases:
|
||||
2: - name: foo
|
||||
3: chart: incubator/raw
|
||||
4: namespace: default
|
||||
5: labels:
|
||||
6: app: test
|
||||
7: component: raw
|
||||
8: index: '1'
|
||||
9:
|
||||
10: - name: foo
|
||||
11: chart: incubator/raw
|
||||
12: namespace: default
|
||||
13: labels:
|
||||
14: app: test
|
||||
15: component: raw
|
||||
16: index: '2'
|
||||
17:
|
||||
|
||||
merged environment: &{default map[] map[]}
|
||||
1 release(s) matching index=1 found in helmfile.yaml
|
||||
|
||||
Affected releases are:
|
||||
foo (incubator/raw) UPDATED
|
||||
|
||||
processing 1 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default/default/foo
|
||||
|
||||
processing releases in group 1/1: default/default/foo
|
||||
getting deployed release version failed:unexpected list key: {^foo$ --kube-contextdefault--deleting--deployed--failed--pending}
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
foo incubator/raw
|
||||
|
||||
Reference in New Issue
Block a user