func()

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
}