Add support for installing additional packages

This commit is contained in:
Ciprian Hacman 2022-05-03 06:37:54 +03:00
parent d021ccee2f
commit 0b095068f3
12 changed files with 44 additions and 0 deletions

View File

@ -834,6 +834,11 @@ spec:
description: NodeLabels indicates the kubernetes labels for nodes
in this instance group
type: object
packages:
description: Packages specifies additional packages to be installed.
items:
type: string
type: array
role:
description: 'Type determines the role of instances in this instance
group: masters or nodes'

View File

@ -52,6 +52,10 @@ func (b *PackagesBuilder) Build(c *fi.ModelBuilderContext) error {
c.AddTask(&nodetasks.Package{Name: "pigz"})
c.AddTask(&nodetasks.Package{Name: "socat"})
c.AddTask(&nodetasks.Package{Name: "util-linux"})
// Additional packages
for _, additionalPackage := range b.NodeupConfig.Packages {
c.EnsureTask(&nodetasks.Package{Name: additionalPackage})
}
} else if b.Distribution.IsRHELFamily() {
c.AddTask(&nodetasks.Package{Name: "nfs-utils"})
// From containerd: https://github.com/containerd/cri/blob/master/contrib/ansible/tasks/bootstrap_centos.yaml
@ -72,6 +76,10 @@ func (b *PackagesBuilder) Build(c *fi.ModelBuilderContext) error {
c.AddTask(&nodetasks.Package{Name: "container-selinux"})
c.AddTask(&nodetasks.Package{Name: "pigz"})
}
// Additional packages
for _, additionalPackage := range b.NodeupConfig.Packages {
c.EnsureTask(&nodetasks.Package{Name: additionalPackage})
}
} else {
// Hopefully they are already installed
klog.Warningf("unknown distribution, skipping required packages install: %v", b.Distribution)

View File

@ -192,6 +192,8 @@ type InstanceGroupSpec struct {
WarmPool *WarmPoolSpec `json:"warmPool,omitempty"`
// Containerd specifies override configuration for instance group
Containerd *ContainerdConfig `json:"containerd,omitempty"`
// Packages specifies additional packages to be installed.
Packages []string `json:"packages,omitempty"`
}
const (

View File

@ -158,6 +158,8 @@ type InstanceGroupSpec struct {
WarmPool *WarmPoolSpec `json:"warmPool,omitempty"`
// Containerd specifies override configuration for instance group
Containerd *ContainerdConfig `json:"containerd,omitempty"`
// Packages specifies additional packages to be installed.
Packages []string `json:"packages,omitempty"`
}
// InstanceMetadataOptions defines the EC2 instance metadata service options (AWS Only)

View File

@ -4413,6 +4413,7 @@ func autoConvert_v1alpha2_InstanceGroupSpec_To_kops_InstanceGroupSpec(in *Instan
} else {
out.Containerd = nil
}
out.Packages = in.Packages
return nil
}
@ -4584,6 +4585,7 @@ func autoConvert_kops_InstanceGroupSpec_To_v1alpha2_InstanceGroupSpec(in *kops.I
} else {
out.Containerd = nil
}
out.Packages = in.Packages
return nil
}

View File

@ -2491,6 +2491,11 @@ func (in *InstanceGroupSpec) DeepCopyInto(out *InstanceGroupSpec) {
*out = new(ContainerdConfig)
(*in).DeepCopyInto(*out)
}
if in.Packages != nil {
in, out := &in.Packages, &out.Packages
*out = make([]string, len(*in))
copy(*out, *in)
}
return
}

View File

@ -155,6 +155,8 @@ type InstanceGroupSpec struct {
WarmPool *WarmPoolSpec `json:"warmPool,omitempty"`
// Containerd specifies override configuration for instance group
Containerd *ContainerdConfig `json:"containerd,omitempty"`
// Packages specifies additional packages to be installed.
Packages []string `json:"packages,omitempty"`
}
// InstanceMetadataOptions defines the EC2 instance metadata service options (AWS Only)

View File

@ -4506,6 +4506,7 @@ func autoConvert_v1alpha3_InstanceGroupSpec_To_kops_InstanceGroupSpec(in *Instan
} else {
out.Containerd = nil
}
out.Packages = in.Packages
return nil
}
@ -4677,6 +4678,7 @@ func autoConvert_kops_InstanceGroupSpec_To_v1alpha3_InstanceGroupSpec(in *kops.I
} else {
out.Containerd = nil
}
out.Packages = in.Packages
return nil
}

View File

@ -2476,6 +2476,11 @@ func (in *InstanceGroupSpec) DeepCopyInto(out *InstanceGroupSpec) {
*out = new(ContainerdConfig)
(*in).DeepCopyInto(*out)
}
if in.Packages != nil {
in, out := &in.Packages, &out.Packages
*out = make([]string, len(*in))
copy(*out, *in)
}
return
}

View File

@ -2639,6 +2639,11 @@ func (in *InstanceGroupSpec) DeepCopyInto(out *InstanceGroupSpec) {
*out = new(ContainerdConfig)
(*in).DeepCopyInto(*out)
}
if in.Packages != nil {
in, out := &in.Packages, &out.Packages
*out = make([]string, len(*in))
copy(*out, *in)
}
return
}

View File

@ -41,6 +41,8 @@ type Config struct {
ApiserverAdditionalIPs []string `json:",omitempty"`
// WarmPoolImages are the container images to pre-pull during instance pre-initialization
WarmPoolImages []string `json:"warmPoolImages,omitempty"`
// Packages specifies additional packages to be installed.
Packages []string `json:"packages,omitempty"`
// Manifests for running etcd
EtcdManifests []string `json:"etcdManifests,omitempty"`

View File

@ -1410,6 +1410,10 @@ func (n *nodeUpConfigBuilder) BuildConfig(ig *kops.InstanceGroup, apiserverAddit
config.WarmPoolImages = n.buildWarmPoolImages(ig)
}
if ig.Spec.Packages != nil {
config.Packages = ig.Spec.Packages
}
return config, bootConfig, nil
}