Skip to content

scheduler_extra_arguments not working on v1beta3 due to missing scheduler_merged_extra_arguments used in the template #669

Closed
@catalinpan

Description

@catalinpan

Describe the Bug

scheduler_extra_arguments for v1beta3 doesn't pick up the values as the template uses scheduler_merged_extra_arguments which is not specified anywhere other than in the template.

<%- if @scheduler_merged_extra_arguments -%>
extraArgs:
<%- @scheduler_merged_extra_arguments.each do |arg| -%>
<%= arg %>
<%- end -%>
<%- end -%>

Expected Behavior

scheduler_extra_arguments should populate the extraArgs values in /etc/kubernetes/config.yaml

It looks like in https://github.com/puppetlabs/puppetlabs-kubernetes/blob/02aa06d0dc451c8ddf23e4fc18f938dff767d685/manifests/config/kubeadm.pp

below part (or something similar) is missing

$scheduler_merged_extra_arguments = concat($scheduler_extra_arguments, $cloud_args)

Steps to Reproduce

In a kubernetes cluster > 1.21 add scheduler_extra_arguments. The scheduler extraArgs will not be populated.

For more details please check this part of the kubeadm manifest.

if $cloud_provider {
$cloud_args = $cloud_config ? {
undef => ["cloud-provider: ${cloud_provider}"],
default => ["cloud-provider: ${cloud_provider}", "cloud-config: ${cloud_config}"],
}
$apiserver_merged_extra_arguments = concat($apiserver_extra_arguments, $cloud_args)
$controllermanager_merged_extra_arguments = concat($controllermanager_extra_arguments, $cloud_args)
# could check against Kubernetes 1.10 here, but that uses alpha1 config which doesn't have these options
if $cloud_config {
# The cloud config must be mounted into the apiserver and controllermanager containers
$cloud_volume = {
'cloud' => {
hostPath => $cloud_config,
mountPath => $cloud_config,
},
}
if 'cloud' in $apiserver_extra_volumes or 'cloud' in $controllermanager_extra_volumes {
fail('Cannot use "cloud" as volume name')
}
$apiserver_merged_extra_volumes = merge($apiserver_extra_volumes, $cloud_volume)
$controllermanager_merged_extra_volumes = merge($controllermanager_extra_volumes, $cloud_volume)
} else {
$apiserver_merged_extra_volumes = $apiserver_extra_volumes
$controllermanager_merged_extra_volumes = $controllermanager_extra_volumes
}
} else {
$apiserver_merged_extra_arguments = $apiserver_extra_arguments
$controllermanager_merged_extra_arguments = $controllermanager_extra_arguments
$apiserver_merged_extra_volumes = $apiserver_extra_volumes
$controllermanager_merged_extra_volumes = $controllermanager_extra_volumes
}

Environment

  • Version 1.23.10
  • Platform Ubuntu 22.04

Additional Context

n/a

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions