Skip to content

Commit

Permalink
Implement cloud-init for EKSConfigTemplate with yaml cloud-init userd…
Browse files Browse the repository at this point in the history
…ata instead of bash-style script
  • Loading branch information
cnmcavoy committed Oct 26, 2022
1 parent 325dd78 commit 9b8b5af
Show file tree
Hide file tree
Showing 20 changed files with 1,682 additions and 111 deletions.
76 changes: 72 additions & 4 deletions bootstrap/eks/api/v1beta1/conversion.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,10 @@ limitations under the License.
package v1beta1

import (
"sigs.k8s.io/controller-runtime/pkg/conversion"

apiconversion "k8s.io/apimachinery/pkg/conversion"
"sigs.k8s.io/cluster-api-provider-aws/v2/bootstrap/eks/api/v1beta2"
utilconversion "sigs.k8s.io/cluster-api/util/conversion"
"sigs.k8s.io/controller-runtime/pkg/conversion"
)

// ConvertTo converts the v1beta1 EKSConfig receiver to a v1beta2 EKSConfig.
Expand All @@ -30,6 +31,37 @@ func (r *EKSConfig) ConvertTo(dstRaw conversion.Hub) error {
return err
}

// Manually restore data.
restored := &v1beta2.EKSConfig{}
if ok, err := utilconversion.UnmarshalData(r, restored); err != nil || !ok {
return err
}

if restored.Spec.PreBootstrapCommands != nil {
dst.Spec.PreBootstrapCommands = restored.Spec.PreBootstrapCommands
}
if restored.Spec.PostBootstrapCommands != nil {
dst.Spec.PostBootstrapCommands = restored.Spec.PostBootstrapCommands
}
if restored.Spec.BootstrapCommandOverride != nil {
dst.Spec.BootstrapCommandOverride = restored.Spec.BootstrapCommandOverride
}
if restored.Spec.Files != nil {
dst.Spec.Files = restored.Spec.Files
}
if restored.Spec.DiskSetup != nil {
dst.Spec.DiskSetup = restored.Spec.DiskSetup
}
if restored.Spec.Mounts != nil {
dst.Spec.Mounts = restored.Spec.Mounts
}
if restored.Spec.Users != nil {
dst.Spec.Users = restored.Spec.Users
}
if restored.Spec.NTP != nil {
dst.Spec.NTP = restored.Spec.NTP
}

return nil
}

Expand All @@ -41,7 +73,7 @@ func (r *EKSConfig) ConvertFrom(srcRaw conversion.Hub) error {
return err
}

return nil
return utilconversion.MarshalData(src, r)
}

// ConvertTo converts the v1beta1 EKSConfigList receiver to a v1beta2 EKSConfigList.
Expand All @@ -66,6 +98,37 @@ func (r *EKSConfigTemplate) ConvertTo(dstRaw conversion.Hub) error {
return err
}

// Manually restore data.
restored := &v1beta2.EKSConfigTemplate{}
if ok, err := utilconversion.UnmarshalData(r, restored); err != nil || !ok {
return err
}

if restored.Spec.Template.Spec.PreBootstrapCommands != nil {
dst.Spec.Template.Spec.PreBootstrapCommands = restored.Spec.Template.Spec.PreBootstrapCommands
}
if restored.Spec.Template.Spec.PostBootstrapCommands != nil {
dst.Spec.Template.Spec.PostBootstrapCommands = restored.Spec.Template.Spec.PostBootstrapCommands
}
if restored.Spec.Template.Spec.BootstrapCommandOverride != nil {
dst.Spec.Template.Spec.BootstrapCommandOverride = restored.Spec.Template.Spec.BootstrapCommandOverride
}
if restored.Spec.Template.Spec.Files != nil {
dst.Spec.Template.Spec.Files = restored.Spec.Template.Spec.Files
}
if restored.Spec.Template.Spec.DiskSetup != nil {
dst.Spec.Template.Spec.DiskSetup = restored.Spec.Template.Spec.DiskSetup
}
if restored.Spec.Template.Spec.Mounts != nil {
dst.Spec.Template.Spec.Mounts = restored.Spec.Template.Spec.Mounts
}
if restored.Spec.Template.Spec.Users != nil {
dst.Spec.Template.Spec.Users = restored.Spec.Template.Spec.Users
}
if restored.Spec.Template.Spec.NTP != nil {
dst.Spec.Template.Spec.NTP = restored.Spec.Template.Spec.NTP
}

return nil
}

Expand All @@ -77,7 +140,7 @@ func (r *EKSConfigTemplate) ConvertFrom(srcRaw conversion.Hub) error {
return err
}

return nil
return utilconversion.MarshalData(src, r)
}

// ConvertTo converts the v1beta1 EKSConfigTemplateList receiver to a v1beta2 EKSConfigTemplateList.
Expand All @@ -93,3 +156,8 @@ func (r *EKSConfigTemplateList) ConvertFrom(srcRaw conversion.Hub) error {

return Convert_v1beta2_EKSConfigTemplateList_To_v1beta1_EKSConfigTemplateList(src, r, nil)
}

// Convert_v1beta2_EKSConfigSpec_To_v1beta1_EKSConfigSpec converts a v1beta2 EKSConfigSpec receiver to a v1beta1 EKSConfigSpec.
func Convert_v1beta2_EKSConfigSpec_To_v1beta1_EKSConfigSpec(in *v1beta2.EKSConfigSpec, out *EKSConfigSpec, s apiconversion.Scope) error {
return autoConvert_v1beta2_EKSConfigSpec_To_v1beta1_EKSConfigSpec(in, out, s)
}
9 changes: 0 additions & 9 deletions bootstrap/eks/api/v1beta1/eksconfig_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,15 +51,6 @@ type EKSConfigSpec struct {
// the ip family will be set to ipv6.
// +optional
ServiceIPV6Cidr *string `json:"serviceIPV6Cidr,omitempty"`
// PreBootstrapCommands specifies extra commands to run before bootstrapping nodes to the cluster
// +optional
PreBootstrapCommands []string `json:"preBootstrapCommands,omitempty"`
// PostBootstrapCommands specifies extra commands to run after bootstrapping nodes to the cluster
// +optional
PostBootstrapCommands []string `json:"postBootstrapCommands,omitempty"`
// BootstrapCommandOverride allows you to override the bootstrap command to use for EKS nodes.
// +optional
BootstrapCommandOverride *string `json:"boostrapCommandOverride,omitempty"`
}

// PauseContainer contains details of pause container.
Expand Down
71 changes: 57 additions & 14 deletions bootstrap/eks/api/v1beta1/zz_generated.conversion.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 0 additions & 15 deletions bootstrap/eks/api/v1beta1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 9b8b5af

Please sign in to comment.