Skip to content

Commit

Permalink
Add enabled to pkgs to handle ipvs
Browse files Browse the repository at this point in the history
Some packages requirements depends on inventory variables
(`kube_proxy_mode` in that case but it could apply to others).

As the case seems pretty rare, instead of adding complexity to pkgs, we
add an escape hatch to use jinja conditions.
That should be revisited if we find ourselves shoehorning lots of logic
in this later on.
  • Loading branch information
VannTen committed Apr 29, 2024
1 parent 11f35e4 commit 088b1b0
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 4 deletions.
3 changes: 0 additions & 3 deletions roles/kubernetes/preinstall/defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,6 @@ epel_enabled: false
# Kubespray sets this to true after clusterDNS is running to apply changes to the host resolv.conf
dns_late: false

common_required_pkgs:
- "{{ kube_proxy_mode == 'ipvs' | ternary(['ipvsadm', 'ipset'], []) }}"

# Set to true if your network does not support IPv6
# This may be necessary for pulling Docker images from
# GCE docker repository
Expand Down
5 changes: 5 additions & 0 deletions roles/kubernetes/preinstall/files/pkgs-schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,11 @@
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": {
"description": "Escape hatch to filter packages. The value is expected to be pre-resolved to a boolean by Jinja",
"type": "boolean",
"default": true
},
"groups": {
"description": "Match if the host is in one of these groups. If not specified match any host.",
"type": "array",
Expand Down
2 changes: 1 addition & 1 deletion roles/kubernetes/preinstall/tasks/0070-system-packages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@
# The json_query for selecting packages name is split for readability
# see files/pkgs-schema.json for the structure of `pkgs`
# and the matching semantics
full_query: "[? value | ( {{ filters_os }} ) && ( {{ filters_groups }} ) ].key"
full_query: "[? value | (enabled == null || enabled) && ( {{ filters_os }} ) && ( {{ filters_groups }} ) ].key"
filters_groups: "groups | @ == null || [? contains(`{{ group_names }}`, @)]"
filters_os: "os == null || (os | ( {{ filters_family }} ) || ( {{ filters_distro }} ))"
dquote: !unsafe '"'
Expand Down
8 changes: 8 additions & 0 deletions roles/kubernetes/preinstall/vars/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,15 @@ pkgs:
major_versions:
- "11"
- "12"
ipset:
enabled: "{{ kube_proxy_mode != 'ipvs' }}"
groups:
- k8s_cluster
iptables: *deb_redhat
ipvsadm:
enabled: "{{ kube_proxy_mode == 'ipvs' }}"
groups:
- k8s_cluster
libseccomp: *redhat_family
libseccomp2:
groups:
Expand Down

0 comments on commit 088b1b0

Please sign in to comment.