mirror of https://github.com/kubernetes/kops.git
Add support for installing additional packages
This commit is contained in:
parent
d021ccee2f
commit
0b095068f3
|
@ -834,6 +834,11 @@ spec:
|
||||||
description: NodeLabels indicates the kubernetes labels for nodes
|
description: NodeLabels indicates the kubernetes labels for nodes
|
||||||
in this instance group
|
in this instance group
|
||||||
type: object
|
type: object
|
||||||
|
packages:
|
||||||
|
description: Packages specifies additional packages to be installed.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
role:
|
role:
|
||||||
description: 'Type determines the role of instances in this instance
|
description: 'Type determines the role of instances in this instance
|
||||||
group: masters or nodes'
|
group: masters or nodes'
|
||||||
|
|
|
@ -52,6 +52,10 @@ func (b *PackagesBuilder) Build(c *fi.ModelBuilderContext) error {
|
||||||
c.AddTask(&nodetasks.Package{Name: "pigz"})
|
c.AddTask(&nodetasks.Package{Name: "pigz"})
|
||||||
c.AddTask(&nodetasks.Package{Name: "socat"})
|
c.AddTask(&nodetasks.Package{Name: "socat"})
|
||||||
c.AddTask(&nodetasks.Package{Name: "util-linux"})
|
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() {
|
} else if b.Distribution.IsRHELFamily() {
|
||||||
c.AddTask(&nodetasks.Package{Name: "nfs-utils"})
|
c.AddTask(&nodetasks.Package{Name: "nfs-utils"})
|
||||||
// From containerd: https://github.com/containerd/cri/blob/master/contrib/ansible/tasks/bootstrap_centos.yaml
|
// 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: "container-selinux"})
|
||||||
c.AddTask(&nodetasks.Package{Name: "pigz"})
|
c.AddTask(&nodetasks.Package{Name: "pigz"})
|
||||||
}
|
}
|
||||||
|
// Additional packages
|
||||||
|
for _, additionalPackage := range b.NodeupConfig.Packages {
|
||||||
|
c.EnsureTask(&nodetasks.Package{Name: additionalPackage})
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// Hopefully they are already installed
|
// Hopefully they are already installed
|
||||||
klog.Warningf("unknown distribution, skipping required packages install: %v", b.Distribution)
|
klog.Warningf("unknown distribution, skipping required packages install: %v", b.Distribution)
|
||||||
|
|
|
@ -192,6 +192,8 @@ type InstanceGroupSpec struct {
|
||||||
WarmPool *WarmPoolSpec `json:"warmPool,omitempty"`
|
WarmPool *WarmPoolSpec `json:"warmPool,omitempty"`
|
||||||
// Containerd specifies override configuration for instance group
|
// Containerd specifies override configuration for instance group
|
||||||
Containerd *ContainerdConfig `json:"containerd,omitempty"`
|
Containerd *ContainerdConfig `json:"containerd,omitempty"`
|
||||||
|
// Packages specifies additional packages to be installed.
|
||||||
|
Packages []string `json:"packages,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
|
@ -158,6 +158,8 @@ type InstanceGroupSpec struct {
|
||||||
WarmPool *WarmPoolSpec `json:"warmPool,omitempty"`
|
WarmPool *WarmPoolSpec `json:"warmPool,omitempty"`
|
||||||
// Containerd specifies override configuration for instance group
|
// Containerd specifies override configuration for instance group
|
||||||
Containerd *ContainerdConfig `json:"containerd,omitempty"`
|
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)
|
// InstanceMetadataOptions defines the EC2 instance metadata service options (AWS Only)
|
||||||
|
|
|
@ -4413,6 +4413,7 @@ func autoConvert_v1alpha2_InstanceGroupSpec_To_kops_InstanceGroupSpec(in *Instan
|
||||||
} else {
|
} else {
|
||||||
out.Containerd = nil
|
out.Containerd = nil
|
||||||
}
|
}
|
||||||
|
out.Packages = in.Packages
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4584,6 +4585,7 @@ func autoConvert_kops_InstanceGroupSpec_To_v1alpha2_InstanceGroupSpec(in *kops.I
|
||||||
} else {
|
} else {
|
||||||
out.Containerd = nil
|
out.Containerd = nil
|
||||||
}
|
}
|
||||||
|
out.Packages = in.Packages
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2491,6 +2491,11 @@ func (in *InstanceGroupSpec) DeepCopyInto(out *InstanceGroupSpec) {
|
||||||
*out = new(ContainerdConfig)
|
*out = new(ContainerdConfig)
|
||||||
(*in).DeepCopyInto(*out)
|
(*in).DeepCopyInto(*out)
|
||||||
}
|
}
|
||||||
|
if in.Packages != nil {
|
||||||
|
in, out := &in.Packages, &out.Packages
|
||||||
|
*out = make([]string, len(*in))
|
||||||
|
copy(*out, *in)
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -155,6 +155,8 @@ type InstanceGroupSpec struct {
|
||||||
WarmPool *WarmPoolSpec `json:"warmPool,omitempty"`
|
WarmPool *WarmPoolSpec `json:"warmPool,omitempty"`
|
||||||
// Containerd specifies override configuration for instance group
|
// Containerd specifies override configuration for instance group
|
||||||
Containerd *ContainerdConfig `json:"containerd,omitempty"`
|
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)
|
// InstanceMetadataOptions defines the EC2 instance metadata service options (AWS Only)
|
||||||
|
|
|
@ -4506,6 +4506,7 @@ func autoConvert_v1alpha3_InstanceGroupSpec_To_kops_InstanceGroupSpec(in *Instan
|
||||||
} else {
|
} else {
|
||||||
out.Containerd = nil
|
out.Containerd = nil
|
||||||
}
|
}
|
||||||
|
out.Packages = in.Packages
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4677,6 +4678,7 @@ func autoConvert_kops_InstanceGroupSpec_To_v1alpha3_InstanceGroupSpec(in *kops.I
|
||||||
} else {
|
} else {
|
||||||
out.Containerd = nil
|
out.Containerd = nil
|
||||||
}
|
}
|
||||||
|
out.Packages = in.Packages
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2476,6 +2476,11 @@ func (in *InstanceGroupSpec) DeepCopyInto(out *InstanceGroupSpec) {
|
||||||
*out = new(ContainerdConfig)
|
*out = new(ContainerdConfig)
|
||||||
(*in).DeepCopyInto(*out)
|
(*in).DeepCopyInto(*out)
|
||||||
}
|
}
|
||||||
|
if in.Packages != nil {
|
||||||
|
in, out := &in.Packages, &out.Packages
|
||||||
|
*out = make([]string, len(*in))
|
||||||
|
copy(*out, *in)
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2639,6 +2639,11 @@ func (in *InstanceGroupSpec) DeepCopyInto(out *InstanceGroupSpec) {
|
||||||
*out = new(ContainerdConfig)
|
*out = new(ContainerdConfig)
|
||||||
(*in).DeepCopyInto(*out)
|
(*in).DeepCopyInto(*out)
|
||||||
}
|
}
|
||||||
|
if in.Packages != nil {
|
||||||
|
in, out := &in.Packages, &out.Packages
|
||||||
|
*out = make([]string, len(*in))
|
||||||
|
copy(*out, *in)
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -41,6 +41,8 @@ type Config struct {
|
||||||
ApiserverAdditionalIPs []string `json:",omitempty"`
|
ApiserverAdditionalIPs []string `json:",omitempty"`
|
||||||
// WarmPoolImages are the container images to pre-pull during instance pre-initialization
|
// WarmPoolImages are the container images to pre-pull during instance pre-initialization
|
||||||
WarmPoolImages []string `json:"warmPoolImages,omitempty"`
|
WarmPoolImages []string `json:"warmPoolImages,omitempty"`
|
||||||
|
// Packages specifies additional packages to be installed.
|
||||||
|
Packages []string `json:"packages,omitempty"`
|
||||||
|
|
||||||
// Manifests for running etcd
|
// Manifests for running etcd
|
||||||
EtcdManifests []string `json:"etcdManifests,omitempty"`
|
EtcdManifests []string `json:"etcdManifests,omitempty"`
|
||||||
|
|
|
@ -1410,6 +1410,10 @@ func (n *nodeUpConfigBuilder) BuildConfig(ig *kops.InstanceGroup, apiserverAddit
|
||||||
config.WarmPoolImages = n.buildWarmPoolImages(ig)
|
config.WarmPoolImages = n.buildWarmPoolImages(ig)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ig.Spec.Packages != nil {
|
||||||
|
config.Packages = ig.Spec.Packages
|
||||||
|
}
|
||||||
|
|
||||||
return config, bootConfig, nil
|
return config, bootConfig, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue