in internal/deployers/eksapi/addons.go [28:62]
func (m *AddonManager) createAddons(infra *Infrastructure, cluster *Cluster, opts *deployerOptions) error {
for _, addon := range opts.Addons {
addonParts := strings.Split(addon, ":")
if len(addonParts) != 2 {
return fmt.Errorf("invalid addon: %s", addon)
}
name := addonParts[0]
version := addonParts[1]
klog.Infof("resolving addon %s version: %s", name, version)
resolvedVersion, err := m.resolveAddonVersion(name, version, opts.KubernetesVersion)
if err != nil {
return err
}
klog.Infof("creating addon %s version: %s", name, resolvedVersion)
input := eks.CreateAddonInput{
AddonName: aws.String(name),
AddonVersion: aws.String(resolvedVersion),
ClusterName: aws.String(cluster.name),
}
_, err = m.clients.EKS().CreateAddon(context.TODO(), &input)
if err != nil {
return fmt.Errorf("failed to create addon: %v", err)
}
klog.Infof("waiting for addon to be active: %s", name)
err = eks.NewAddonActiveWaiter(m.clients.EKS()).
Wait(context.TODO(), &eks.DescribeAddonInput{
ClusterName: aws.String(cluster.name),
AddonName: aws.String(name),
}, addonCreationTimeout)
if err != nil {
return fmt.Errorf("failed to wait for addon to be active: %v", err)
}
}
return nil
}