mirror of
https://github.com/ansible-collections/kubernetes.core.git
synced 2026-03-27 05:43:02 +00:00
Add support for take-ownership Helm flag (#957)
SUMMARY Add support for take-ownership Helm flag added in Helm 3.17.0 ISSUE TYPE Feature Pull Request COMPONENT NAME kubernetes.core.helm Reviewed-by: Yuriy Novostavskiy Reviewed-by: Rémy Jacquin Reviewed-by: Bikouo Aubin Reviewed-by: Bianca Henderson <beeankha@gmail.com>
This commit is contained in:
@@ -0,0 +1,2 @@
|
|||||||
|
minor_changes:
|
||||||
|
- helm - Parameter take_ownership added (https://github.com/ansible-collections/kubernetes.core/pull/957).
|
||||||
@@ -601,6 +601,27 @@ Parameters
|
|||||||
<div>Skip custom resource definitions when installing or upgrading.</div>
|
<div>Skip custom resource definitions when installing or upgrading.</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2">
|
||||||
|
<div class="ansibleOptionAnchor" id="parameter-"></div>
|
||||||
|
<b>take_ownership</b>
|
||||||
|
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
|
||||||
|
<div style="font-size: small">
|
||||||
|
<span style="color: purple">boolean</span>
|
||||||
|
</div>
|
||||||
|
<div style="font-style: italic; font-size: small; color: darkgreen">added in 6.1.0</div>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<ul style="margin: 0; padding: 0"><b>Choices:</b>
|
||||||
|
<li><div style="color: blue"><b>no</b> ←</div></li>
|
||||||
|
<li>yes</li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<div>When upgrading, Helm will ignore the check for helm annotations and take ownership of the existing resources</div>
|
||||||
|
<div>This feature requires helm >= 3.17.0</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="2">
|
<td colspan="2">
|
||||||
<div class="ansibleOptionAnchor" id="parameter-"></div>
|
<div class="ansibleOptionAnchor" id="parameter-"></div>
|
||||||
@@ -734,7 +755,7 @@ Parameters
|
|||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<div>Use HTTP instead of HTTPS when working with OCI registries</div>
|
<div>Use HTTP instead of HTTPS when working with OCI registries</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<br/>
|
<br/>
|
||||||
|
|||||||
@@ -244,6 +244,13 @@ options:
|
|||||||
type: bool
|
type: bool
|
||||||
default: False
|
default: False
|
||||||
version_added: 6.1.0
|
version_added: 6.1.0
|
||||||
|
take_ownership:
|
||||||
|
description:
|
||||||
|
- When upgrading, Helm will ignore the check for helm annotations and take ownership of the existing resources
|
||||||
|
- This feature requires helm >= 3.17.0
|
||||||
|
type: bool
|
||||||
|
default: False
|
||||||
|
version_added: 6.1.0
|
||||||
extends_documentation_fragment:
|
extends_documentation_fragment:
|
||||||
- kubernetes.core.helm_common_options
|
- kubernetes.core.helm_common_options
|
||||||
"""
|
"""
|
||||||
@@ -560,6 +567,7 @@ def deploy(
|
|||||||
reset_then_reuse_values=False,
|
reset_then_reuse_values=False,
|
||||||
insecure_skip_tls_verify=False,
|
insecure_skip_tls_verify=False,
|
||||||
plain_http=False,
|
plain_http=False,
|
||||||
|
take_ownership=False,
|
||||||
):
|
):
|
||||||
"""
|
"""
|
||||||
Install/upgrade/rollback release chart
|
Install/upgrade/rollback release chart
|
||||||
@@ -573,6 +581,8 @@ def deploy(
|
|||||||
deploy_command = command + " upgrade -i" # install/upgrade
|
deploy_command = command + " upgrade -i" # install/upgrade
|
||||||
if reset_values:
|
if reset_values:
|
||||||
deploy_command += " --reset-values"
|
deploy_command += " --reset-values"
|
||||||
|
if take_ownership:
|
||||||
|
deploy_command += " --take-ownership"
|
||||||
|
|
||||||
if reuse_values is not None:
|
if reuse_values is not None:
|
||||||
deploy_command += " --reuse-values=" + str(reuse_values)
|
deploy_command += " --reuse-values=" + str(reuse_values)
|
||||||
@@ -851,6 +861,7 @@ def argument_spec():
|
|||||||
type="bool", default=False, aliases=["skip_tls_certs_check"]
|
type="bool", default=False, aliases=["skip_tls_certs_check"]
|
||||||
),
|
),
|
||||||
plain_http=dict(type="bool", default=False),
|
plain_http=dict(type="bool", default=False),
|
||||||
|
take_ownership=dict(type="bool", default=False),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
return arg_spec
|
return arg_spec
|
||||||
@@ -906,6 +917,7 @@ def main():
|
|||||||
reset_then_reuse_values = module.params.get("reset_then_reuse_values")
|
reset_then_reuse_values = module.params.get("reset_then_reuse_values")
|
||||||
insecure_skip_tls_verify = module.params.get("insecure_skip_tls_verify")
|
insecure_skip_tls_verify = module.params.get("insecure_skip_tls_verify")
|
||||||
plain_http = module.params.get("plain_http")
|
plain_http = module.params.get("plain_http")
|
||||||
|
take_ownership = module.params.get("take_ownership")
|
||||||
|
|
||||||
if update_repo_cache:
|
if update_repo_cache:
|
||||||
run_repo_update(module)
|
run_repo_update(module)
|
||||||
@@ -924,6 +936,14 @@ def main():
|
|||||||
helm_version
|
helm_version
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
if take_ownership:
|
||||||
|
helm_version = module.get_helm_version()
|
||||||
|
if LooseVersion(helm_version) < LooseVersion("3.17.0"):
|
||||||
|
module.fail_json(
|
||||||
|
msg="take_ownership requires helm >= 3.17.0, current version is {0}".format(
|
||||||
|
helm_version
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
opt_result = {}
|
opt_result = {}
|
||||||
if release_state == "absent" and release_status is not None:
|
if release_state == "absent" and release_status is not None:
|
||||||
@@ -1083,6 +1103,7 @@ def main():
|
|||||||
reset_then_reuse_values=reset_then_reuse_values,
|
reset_then_reuse_values=reset_then_reuse_values,
|
||||||
insecure_skip_tls_verify=insecure_skip_tls_verify,
|
insecure_skip_tls_verify=insecure_skip_tls_verify,
|
||||||
plain_http=plain_http,
|
plain_http=plain_http,
|
||||||
|
take_ownership=take_ownership,
|
||||||
)
|
)
|
||||||
changed = True
|
changed = True
|
||||||
|
|
||||||
|
|||||||
@@ -29,3 +29,4 @@ test_namespace:
|
|||||||
- "helm-chart-with-space-into-name"
|
- "helm-chart-with-space-into-name"
|
||||||
- "helm-reset-then-reuse-values"
|
- "helm-reset-then-reuse-values"
|
||||||
- "helm-insecure"
|
- "helm-insecure"
|
||||||
|
- "helm-test-take-ownership"
|
||||||
|
|||||||
@@ -6,3 +6,4 @@
|
|||||||
with_items:
|
with_items:
|
||||||
- "v3.15.4"
|
- "v3.15.4"
|
||||||
- "v3.16.0"
|
- "v3.16.0"
|
||||||
|
- "v3.17.0"
|
||||||
|
|||||||
@@ -47,6 +47,9 @@
|
|||||||
- name: Test insecure registry flag feature
|
- name: Test insecure registry flag feature
|
||||||
include_tasks: test_helm_insecure.yml
|
include_tasks: test_helm_insecure.yml
|
||||||
|
|
||||||
|
- name: Test take ownership flag feature
|
||||||
|
include_tasks: test_helm_take_ownership.yml
|
||||||
|
|
||||||
- name: Clean helm install
|
- name: Clean helm install
|
||||||
file:
|
file:
|
||||||
path: "{{ item }}"
|
path: "{{ item }}"
|
||||||
|
|||||||
@@ -0,0 +1,81 @@
|
|||||||
|
---
|
||||||
|
- name: Test helm take ownership
|
||||||
|
vars:
|
||||||
|
helm_namespace: "{{ test_namespace[13] }}"
|
||||||
|
block:
|
||||||
|
|
||||||
|
- name: Initial chart installation (no flag set)
|
||||||
|
helm:
|
||||||
|
binary_path: "{{ helm_binary }}"
|
||||||
|
chart_ref: "{{ chart_test_oci }}"
|
||||||
|
release_name: test-take-ownership
|
||||||
|
release_namespace: "{{ helm_namespace }}"
|
||||||
|
create_namespace: true
|
||||||
|
register: install
|
||||||
|
|
||||||
|
- name: Validate that take-ownership flag is not set
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- install is changed
|
||||||
|
- '"--take-ownership" not in install.command'
|
||||||
|
|
||||||
|
- name: Upgrade chart (take-onwership flag set)
|
||||||
|
helm:
|
||||||
|
binary_path: "{{ helm_binary }}"
|
||||||
|
chart_ref: "{{ chart_test_oci }}"
|
||||||
|
release_name: test-take-ownership
|
||||||
|
release_namespace: "{{ helm_namespace }}"
|
||||||
|
take_ownership: true
|
||||||
|
values:
|
||||||
|
commonLabels:
|
||||||
|
take-onwership: "set"
|
||||||
|
register: upgrade
|
||||||
|
ignore_errors: true
|
||||||
|
|
||||||
|
- name: Validate that take-ownership flag IS set if helm version is >= 3.17.0
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- upgrade is changed
|
||||||
|
- '"--take-ownership" in upgrade.command'
|
||||||
|
when: '"v3.17.0" <= helm_version'
|
||||||
|
|
||||||
|
- name: Validate that feature fails for helm < 3.17.0
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- upgrade is failed
|
||||||
|
- '"take_ownership requires helm >= 3.17.0" in upgrade.msg'
|
||||||
|
when: 'helm_version < "v3.17.0"'
|
||||||
|
|
||||||
|
- name: Upgrade chart (take-onwership flag not set)
|
||||||
|
helm:
|
||||||
|
binary_path: "{{ helm_binary }}"
|
||||||
|
chart_ref: "{{ chart_test_oci }}"
|
||||||
|
release_name: test-take-ownership
|
||||||
|
release_namespace: "{{ helm_namespace }}"
|
||||||
|
values:
|
||||||
|
commonLabels:
|
||||||
|
take-onwership: "not-set"
|
||||||
|
register: upgrade
|
||||||
|
ignore_errors: true
|
||||||
|
|
||||||
|
- name: Validate that take-ownership flag IS set if helm version is >= 3.17.0
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- upgrade is changed
|
||||||
|
- '"--take-ownership" not in upgrade.command'
|
||||||
|
when: '"v3.17.0" <= helm_version'
|
||||||
|
|
||||||
|
- name: Validate that feature fails for helm < 3.17.0
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- upgrade is changed
|
||||||
|
- upgrade.msg is not defined
|
||||||
|
when: 'helm_version < "v3.17.0"'
|
||||||
|
|
||||||
|
always:
|
||||||
|
- name: Remove helm namespace
|
||||||
|
k8s:
|
||||||
|
api_version: v1
|
||||||
|
kind: Namespace
|
||||||
|
name: "{{ helm_namespace }}"
|
||||||
|
state: absent
|
||||||
Reference in New Issue
Block a user