Browse Source
kubeadm: allow to provide patch inline in inventories
Specifying one directory for kubeadm patches is not ideal:
1. It does not allow working with multiples inventories easily
2. No ansible templating of the patch
3. Ansible path searching can sometimes be confusing
Instead, provide the patch directly in a variable, and add some quality
of life to handle components targeting and patch ordering more
explicitly (`target` and `type` which are translated to the kubeadm
scheme which is based on the file name)
pull/11521/head
Max Gautier
2 months ago
Failed to extract signature
6 changed files with
29 additions and
13 deletions
roles/kubernetes/control-plane/tasks/kubeadm-upgrade.yml
roles/kubernetes/control-plane/templates/kubeadm-config.v1beta3.yaml.j2
roles/kubernetes/control-plane/templates/kubeadm-controlplane.v1beta3.yaml.j2
roles/kubernetes/kubeadm/templates/kubeadm-client.conf.v1beta3.j2
roles/kubernetes/kubeadm_common/defaults/main.yml
roles/kubernetes/kubeadm_common/tasks/main.yml
@ -18,7 +18,7 @@
--ignore-preflight-errors=all
--allow-experimental-upgrades
--etcd-upgrade={{ (etcd_deployment_type == "kubeadm") | bool | lower }}
{% if kubeadm_patches is defined and kubeadm_patches.enabled %}--patches={{ kubeadm_patches.dest _dir }}{% endif %}
{% if kubeadm_patches | length > 0 %}--patches={{ kubeadm_patches _dir }}{% endif %}
--force
register : kubeadm_upgrade
# Retry is because upload config sometimes fails
@ -39,7 +39,7 @@
--ignore-preflight-errors=all
--allow-experimental-upgrades
--etcd-upgrade={{ (etcd_deployment_type == "kubeadm") | bool | lower }}
{% if kubeadm_patches is defined and kubeadm_patches.enabled %}--patches={{ kubeadm_patches.dest _dir }}{% endif %}
{% if kubeadm_patches | length > 0 %}--patches={{ kubeadm_patches _dir }}{% endif %}
--force
register : kubeadm_upgrade
# Retry is because upload config sometimes fails
@ -28,9 +28,9 @@ nodeRegistration:
kubeletExtraArgs:
cloud-provider: external
{% endif %}
{% if kubeadm_patches is defined and kubeadm_patches.enabled %}
{% if kubeadm_patches | length > 0 %}
patches:
directory: {{ kubeadm_patches.dest _dir }}
directory: {{ kubeadm_patches_dir }}
{% endif %}
---
apiVersion: kubeadm.k8s.io/v1beta3
@ -31,7 +31,7 @@ nodeRegistration:
{% else %}
taints: []
{% endif %}
{% if kubeadm_patches is defined and kubeadm_patches.enabled %}
{% if kubeadm_patches | length > 0 %}
patches:
directory: {{ kubeadm_patches.dest _dir }}
directory: {{ kubeadm_patches_dir }}
{% endif %}
@ -38,7 +38,7 @@ nodeRegistration:
- effect: NoSchedule
key: node-role.kubernetes.io/calico-rr
{% endif %}
{% if kubeadm_patches is defined and kubeadm_patches.enabled %}
{% if kubeadm_patches | length > 0 %}
patches:
directory: {{ kubeadm_patches.dest _dir }}
directory: {{ kubeadm_patches_dir }}
{% endif %}
@ -0,0 +1,14 @@
---
kubeadm_patches_dir : "{{ kube_config_dir }}/patches"
kubeadm_patches : [ ]
# kubeadm_patches:
# - target: kube-apiserver|kube-controller-manager|kube-scheduler|etcd|kubeletconfiguration
# type: strategic(default)|json|merge
# patch:
# metadata:
# annotations:
# example.com/test: "true"
# labels:
# example.com/prod_level: "{{ prod_level }}"
# - ...
# Patches are applied in the order they are specified.
@ -1,15 +1,17 @@
---
- name : Kubeadm | Create directory to store kubeadm patches
file:
path : "{{ kubeadm_patches.dest _dir }}"
path : "{{ kubeadm_patches_dir }}"
state : directory
mode : "0640"
when : kubeadm_patches is defined and kubeadm_patches.enabled
when : kubeadm_patches | length > 0
- name : Kubeadm | Copy kubeadm patches from inventory files
copy:
sr c: "{{ kubeadm_patches.source_dir }}/ "
dest : "{{ kubeadm_patches.dest_dir }} "
content : "{{ item.patch | to_yaml }} "
dest : "{{ kubeadm_patches_dir }}/{{ item.target }}{{ suffix }}+{{ item.type | d('strategic') }}.yaml "
owner : "root"
mode : "0644"
when : kubeadm_patches is defined and kubeadm_patches.enabled
loop : "{{ kubeadm_patches }}"
loop_control:
index_var : suffix