mirror of
https://github.com/ansible-collections/kubernetes.core.git
synced 2026-05-08 05:52:37 +00:00
helm - Add reuse-values when running helm diff (#683)
helm - Add reuse-values when running helm diff SUMMARY closes #680 ISSUE TYPE Bugfix Pull Request COMPONENT NAME helm Reviewed-by: GomathiselviS Reviewed-by: Alina Buzachis
This commit is contained in:
@@ -0,0 +1,3 @@
|
|||||||
|
---
|
||||||
|
bugfixes:
|
||||||
|
- helm - use ``reuse-values`` when running ``helm diff`` command (https://github.com/ansible-collections/kubernetes.core/issues/680).
|
||||||
@@ -640,6 +640,8 @@ def helmdiff_check(
|
|||||||
chart_repo_url=None,
|
chart_repo_url=None,
|
||||||
post_renderer=False,
|
post_renderer=False,
|
||||||
set_value_args=None,
|
set_value_args=None,
|
||||||
|
reuse_values=None,
|
||||||
|
reset_values=True,
|
||||||
):
|
):
|
||||||
"""
|
"""
|
||||||
Use helm diff to determine if a release would change by upgrading a chart.
|
Use helm diff to determine if a release would change by upgrading a chart.
|
||||||
@@ -653,7 +655,7 @@ def helmdiff_check(
|
|||||||
if chart_version is not None:
|
if chart_version is not None:
|
||||||
cmd += " " + "--version=" + chart_version
|
cmd += " " + "--version=" + chart_version
|
||||||
if not replace:
|
if not replace:
|
||||||
cmd += " " + "--reset-values"
|
cmd += " " + "--reset-values=" + str(reset_values)
|
||||||
if post_renderer:
|
if post_renderer:
|
||||||
cmd += " --post-renderer=" + post_renderer
|
cmd += " --post-renderer=" + post_renderer
|
||||||
|
|
||||||
@@ -671,6 +673,9 @@ def helmdiff_check(
|
|||||||
if set_value_args:
|
if set_value_args:
|
||||||
cmd += " " + set_value_args
|
cmd += " " + set_value_args
|
||||||
|
|
||||||
|
if reuse_values:
|
||||||
|
cmd += " --reuse-values"
|
||||||
|
|
||||||
rc, out, err = module.run_helm_command(cmd)
|
rc, out, err = module.run_helm_command(cmd)
|
||||||
return (len(out.strip()) > 0, out.strip())
|
return (len(out.strip()) > 0, out.strip())
|
||||||
|
|
||||||
@@ -901,6 +906,8 @@ def main():
|
|||||||
chart_repo_url,
|
chart_repo_url,
|
||||||
post_renderer,
|
post_renderer,
|
||||||
set_value_args,
|
set_value_args,
|
||||||
|
reuse_values=reuse_values,
|
||||||
|
reset_values=reset_values,
|
||||||
)
|
)
|
||||||
if would_change and module._diff:
|
if would_change and module._diff:
|
||||||
opt_result["diff"] = {"prepared": prepared}
|
opt_result["diff"] = {"prepared": prepared}
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: chart-reuse-values
|
||||||
|
description: A Helm chart for Kubernetes
|
||||||
|
|
||||||
|
# A chart can be either an 'application' or a 'library' chart.
|
||||||
|
#
|
||||||
|
# Application charts are a collection of templates that can be packaged into versioned archives
|
||||||
|
# to be deployed.
|
||||||
|
#
|
||||||
|
# Library charts provide useful utilities or functions for the chart developer. They're included as
|
||||||
|
# a dependency of application charts to inject those utilities and functions into the rendering
|
||||||
|
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
|
||||||
|
type: application
|
||||||
|
|
||||||
|
# This is the chart version. This version number should be incremented each time you make changes
|
||||||
|
# to the chart and its templates, including the app version.
|
||||||
|
# Versions are expected to follow Semantic Versioning (https://semver.org/)
|
||||||
|
version: 0.1.0
|
||||||
|
|
||||||
|
# This is the version number of the application being deployed. This version number should be
|
||||||
|
# incremented each time you make changes to the application. Versions are not expected to
|
||||||
|
# follow Semantic Versioning. They should reflect the version the application is using.
|
||||||
|
# It is recommended to use it with quotes.
|
||||||
|
appVersion: "1.16.0"
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: cmap
|
||||||
|
data:
|
||||||
|
ansible_version: {{ .Values.ansible_version }}
|
||||||
|
phase: {{ .Values.phase }}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
ansible_version: milestone
|
||||||
|
phase: uat
|
||||||
@@ -298,4 +298,7 @@
|
|||||||
kind: Namespace
|
kind: Namespace
|
||||||
name: "{{ helm_namespace }}"
|
name: "{{ helm_namespace }}"
|
||||||
state: absent
|
state: absent
|
||||||
|
wait: true
|
||||||
ignore_errors: yes
|
ignore_errors: yes
|
||||||
|
|
||||||
|
- include_tasks: reuse_values.yml
|
||||||
|
|||||||
93
tests/integration/targets/helm_diff/tasks/reuse_values.yml
Normal file
93
tests/integration/targets/helm_diff/tasks/reuse_values.yml
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
---
|
||||||
|
- name: Create temporary directory for helm chart
|
||||||
|
tempfile:
|
||||||
|
suffix: .helm
|
||||||
|
state: directory
|
||||||
|
register: helm_dir
|
||||||
|
|
||||||
|
- name: Test helm diff functionality
|
||||||
|
vars:
|
||||||
|
test_chart_path: "{{ helm_dir.path }}/test-chart-reuse-values"
|
||||||
|
test_release_name: "myrelease"
|
||||||
|
|
||||||
|
block:
|
||||||
|
|
||||||
|
- name: Install helm diff
|
||||||
|
kubernetes.core.helm_plugin:
|
||||||
|
binary_path: "{{ helm_binary }}"
|
||||||
|
state: present
|
||||||
|
plugin_path: https://github.com/databus23/helm-diff
|
||||||
|
plugin_version: 3.9.4
|
||||||
|
|
||||||
|
- name: Copy test chart
|
||||||
|
ansible.builtin.copy:
|
||||||
|
src: "test-chart-reuse-values"
|
||||||
|
dest: "{{ helm_dir.path }}"
|
||||||
|
|
||||||
|
- name: Create helm release
|
||||||
|
kubernetes.core.helm:
|
||||||
|
state: present
|
||||||
|
binary_path: "{{ helm_binary }}"
|
||||||
|
chart_ref: "{{ test_chart_path }}"
|
||||||
|
release_name: "{{ test_release_name }}"
|
||||||
|
release_namespace: "{{ helm_namespace }}"
|
||||||
|
create_namespace: true
|
||||||
|
release_values:
|
||||||
|
ansible_version: devel
|
||||||
|
phase: ci
|
||||||
|
wait: true
|
||||||
|
|
||||||
|
- name: Upgrade helm release (reset_values=false and reuse_values=true)
|
||||||
|
kubernetes.core.helm:
|
||||||
|
binary_path: "{{ helm_binary }}"
|
||||||
|
chart_ref: "{{ test_chart_path }}"
|
||||||
|
reset_values: false
|
||||||
|
reuse_values: true
|
||||||
|
release_name: "{{ test_release_name }}"
|
||||||
|
release_namespace: "{{ helm_namespace }}"
|
||||||
|
values:
|
||||||
|
ansible_version: devel
|
||||||
|
register: helm_upgrade
|
||||||
|
|
||||||
|
- name: Ensure task did not reported change
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- helm_upgrade is not changed
|
||||||
|
|
||||||
|
- name: Upgrade helm release (reuse_values=true with default value for reset_values)
|
||||||
|
kubernetes.core.helm:
|
||||||
|
binary_path: "{{ helm_binary }}"
|
||||||
|
chart_ref: "{{ test_chart_path }}"
|
||||||
|
reuse_values: true
|
||||||
|
release_name: "{{ test_release_name }}"
|
||||||
|
release_namespace: "{{ helm_namespace }}"
|
||||||
|
values:
|
||||||
|
ansible_version: devel
|
||||||
|
register: helm_upgrade
|
||||||
|
|
||||||
|
- name: Ensure task reported change
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- helm_upgrade is changed
|
||||||
|
|
||||||
|
always:
|
||||||
|
- name: Remove temporary directory
|
||||||
|
file:
|
||||||
|
path: "{{ helm_dir.path }}"
|
||||||
|
state: absent
|
||||||
|
ignore_errors: true
|
||||||
|
|
||||||
|
- name: Uninstall helm diff
|
||||||
|
kubernetes.core.helm_plugin:
|
||||||
|
binary_path: "{{ helm_binary }}"
|
||||||
|
state: absent
|
||||||
|
plugin_name: diff
|
||||||
|
ignore_errors: true
|
||||||
|
|
||||||
|
- name: Remove helm namespace
|
||||||
|
kubernetes.core.k8s:
|
||||||
|
api_version: v1
|
||||||
|
kind: Namespace
|
||||||
|
name: "{{ helm_namespace }}"
|
||||||
|
state: absent
|
||||||
|
ignore_errors: true
|
||||||
@@ -24,3 +24,4 @@ plugins/modules/k8s_scale.py validate-modules:return-syntax-error
|
|||||||
plugins/modules/k8s_service.py validate-modules:return-syntax-error
|
plugins/modules/k8s_service.py validate-modules:return-syntax-error
|
||||||
plugins/modules/k8s_taint.py validate-modules:return-syntax-error
|
plugins/modules/k8s_taint.py validate-modules:return-syntax-error
|
||||||
tests/integration/targets/k8s_delete/files/deployments.yaml yamllint!skip
|
tests/integration/targets/k8s_delete/files/deployments.yaml yamllint!skip
|
||||||
|
tests/integration/targets/helm_diff/files/test-chart-reuse-values/templates/configmap.yaml yamllint!skip
|
||||||
|
|||||||
@@ -25,3 +25,4 @@ plugins/modules/k8s.py validate-modules:return-syntax-error
|
|||||||
plugins/modules/k8s_scale.py validate-modules:return-syntax-error
|
plugins/modules/k8s_scale.py validate-modules:return-syntax-error
|
||||||
plugins/modules/k8s_service.py validate-modules:return-syntax-error
|
plugins/modules/k8s_service.py validate-modules:return-syntax-error
|
||||||
plugins/modules/k8s_taint.py validate-modules:return-syntax-error
|
plugins/modules/k8s_taint.py validate-modules:return-syntax-error
|
||||||
|
tests/integration/targets/helm_diff/files/test-chart-reuse-values/templates/configmap.yaml yamllint!skip
|
||||||
|
|||||||
@@ -28,3 +28,4 @@ plugins/modules/k8s.py validate-modules:return-syntax-error
|
|||||||
plugins/modules/k8s_scale.py validate-modules:return-syntax-error
|
plugins/modules/k8s_scale.py validate-modules:return-syntax-error
|
||||||
plugins/modules/k8s_service.py validate-modules:return-syntax-error
|
plugins/modules/k8s_service.py validate-modules:return-syntax-error
|
||||||
plugins/modules/k8s_taint.py validate-modules:return-syntax-error
|
plugins/modules/k8s_taint.py validate-modules:return-syntax-error
|
||||||
|
tests/integration/targets/helm_diff/files/test-chart-reuse-values/templates/configmap.yaml yamllint!skip
|
||||||
|
|||||||
@@ -28,3 +28,4 @@ plugins/modules/k8s.py validate-modules:return-syntax-error
|
|||||||
plugins/modules/k8s_scale.py validate-modules:return-syntax-error
|
plugins/modules/k8s_scale.py validate-modules:return-syntax-error
|
||||||
plugins/modules/k8s_service.py validate-modules:return-syntax-error
|
plugins/modules/k8s_service.py validate-modules:return-syntax-error
|
||||||
plugins/modules/k8s_taint.py validate-modules:return-syntax-error
|
plugins/modules/k8s_taint.py validate-modules:return-syntax-error
|
||||||
|
tests/integration/targets/helm_diff/files/test-chart-reuse-values/templates/configmap.yaml yamllint!skip
|
||||||
|
|||||||
Reference in New Issue
Block a user