Skip to content

Commit 3f8dff1

Browse files
committed
Reorder addons task
1 parent 0d8d540 commit 3f8dff1

File tree

3 files changed

+58
-33
lines changed

3 files changed

+58
-33
lines changed

pkg/actions/addon/tasks.go

Lines changed: 40 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ var knownAddons = map[string]struct {
4040
api.AWSEFSCSIDriverAddon: {},
4141
}
4242

43-
func CreateAddonTasks(ctx context.Context, cfg *api.ClusterConfig, clusterProvider *eks.ClusterProvider, iamRoleCreator IAMRoleCreator, forceAll bool, timeout time.Duration) (*tasks.TaskTree, *tasks.TaskTree, []string) {
43+
func CreateAddonTasks(ctx context.Context, cfg *api.ClusterConfig, clusterProvider *eks.ClusterProvider, iamRoleCreator IAMRoleCreator, forceAll bool, timeout time.Duration) (*tasks.TaskTree, *tasks.TaskTree, *tasks.GenericTask, []string) {
4444
var addons []*api.Addon
4545
var autoDefaultAddonNames []string
4646
if !cfg.AddonsConfig.DisableDefaultAddons {
@@ -63,12 +63,17 @@ func CreateAddonTasks(ctx context.Context, cfg *api.ClusterConfig, clusterProvid
6363
preAddons []*api.Addon
6464
postAddons []*api.Addon
6565
)
66+
var vpcCNIAddon *api.Addon
6667
for _, addon := range addons {
67-
if addonInfo, ok := knownAddons[addon.Name]; ok && addonInfo.CreateBeforeNodeGroup {
68+
addonInfo, ok := knownAddons[addon.Name]
69+
if ok && addonInfo.CreateBeforeNodeGroup {
6870
preAddons = append(preAddons, addon)
6971
} else {
7072
postAddons = append(postAddons, addon)
7173
}
74+
if addon.Name == api.VPCCNIAddon {
75+
vpcCNIAddon = addon
76+
}
7277
}
7378
preTasks := &tasks.TaskTree{Parallel: false}
7479
postTasks := &tasks.TaskTree{Parallel: false}
@@ -93,7 +98,20 @@ func CreateAddonTasks(ctx context.Context, cfg *api.ClusterConfig, clusterProvid
9398
if len(postAddons) > 0 {
9499
postTasks.Append(makeAddonTask(postAddons, cfg.HasNodes()))
95100
}
96-
return preTasks, postTasks, autoDefaultAddonNames
101+
var updateVPCCNI tasks.GenericTask
102+
if vpcCNIAddon != nil && api.IsEnabled(cfg.IAM.WithOIDC) {
103+
updateVPCCNI = tasks.GenericTask{
104+
Doer: func() error {
105+
addonManager, err := createAddonManager(ctx, clusterProvider, cfg)
106+
if err != nil {
107+
return err
108+
}
109+
addonManager.setRecommendedPoliciesForIRSA(vpcCNIAddon)
110+
return addonManager.Update(ctx, vpcCNIAddon, nil, clusterProvider.AWSProvider.WaitTimeout())
111+
},
112+
}
113+
}
114+
return preTasks, postTasks, &updateVPCCNI, autoDefaultAddonNames
97115
}
98116

99117
type createAddonTask struct {
@@ -112,21 +130,7 @@ type createAddonTask struct {
112130
func (t *createAddonTask) Describe() string { return t.info }
113131

114132
func (t *createAddonTask) Do(errorCh chan error) error {
115-
oidc, err := t.clusterProvider.NewOpenIDConnectManager(t.ctx, t.cfg)
116-
if err != nil {
117-
return err
118-
}
119-
120-
oidcProviderExists, err := oidc.CheckProviderExists(t.ctx)
121-
if err != nil {
122-
return err
123-
}
124-
125-
stackManager := t.clusterProvider.NewStackManager(t.cfg)
126-
127-
addonManager, err := New(t.cfg, t.clusterProvider.AWSProvider.EKS(), stackManager, oidcProviderExists, oidc, func() (kubernetes.Interface, error) {
128-
return t.clusterProvider.NewStdClientSet(t.cfg)
129-
})
133+
addonManager, err := createAddonManager(t.ctx, t.clusterProvider, t.cfg)
130134
if err != nil {
131135
return err
132136
}
@@ -177,6 +181,24 @@ func (t *createAddonTask) Do(errorCh chan error) error {
177181
return nil
178182
}
179183

184+
func createAddonManager(ctx context.Context, clusterProvider *eks.ClusterProvider, cfg *api.ClusterConfig) (*Manager, error) {
185+
oidc, err := clusterProvider.NewOpenIDConnectManager(ctx, cfg)
186+
if err != nil {
187+
return nil, err
188+
}
189+
190+
oidcProviderExists, err := oidc.CheckProviderExists(ctx)
191+
if err != nil {
192+
return nil, err
193+
}
194+
195+
stackManager := clusterProvider.NewStackManager(cfg)
196+
197+
return New(cfg, clusterProvider.AWSProvider.EKS(), stackManager, oidcProviderExists, oidc, func() (kubernetes.Interface, error) {
198+
return clusterProvider.NewStdClientSet(cfg)
199+
})
200+
}
201+
180202
type deleteAddonIAMTask struct {
181203
ctx context.Context
182204
info string

pkg/ctl/create/cluster.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -357,11 +357,11 @@ func doCreateCluster(cmd *cmdutils.Cmd, ngFilter *filter.NodeGroupFilter, params
357357
ClusterName: cfg.Metadata.Name,
358358
StackCreator: stackManager,
359359
}
360-
preNodegroupAddons, postNodegroupAddons, autoDefaultAddons := addon.CreateAddonTasks(ctx, cfg, ctl, iamRoleCreator, true, cmd.ProviderConfig.WaitTimeout)
360+
preNodegroupAddons, postNodegroupAddons, updateVPCCNITask, autoDefaultAddons := addon.CreateAddonTasks(ctx, cfg, ctl, iamRoleCreator, true, cmd.ProviderConfig.WaitTimeout)
361361
if len(autoDefaultAddons) > 0 {
362362
logger.Info("default addons %s were not specified, will install them as EKS addons", strings.Join(autoDefaultAddons, ", "))
363363
}
364-
postClusterCreationTasks := ctl.CreateExtraClusterConfigTasks(ctx, cfg, preNodegroupAddons)
364+
postClusterCreationTasks := ctl.CreateExtraClusterConfigTasks(ctx, cfg, preNodegroupAddons, updateVPCCNITask)
365365

366366
taskTree := stackManager.NewTasksToCreateCluster(ctx, cfg.NodeGroups, cfg.ManagedNodeGroups, cfg.AccessConfig, makeAccessEntryCreator(cfg.Metadata.Name, stackManager), postClusterCreationTasks)
367367

pkg/eks/tasks.go

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,26 +8,24 @@ import (
88
"github.com/aws/aws-sdk-go-v2/aws"
99
"github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs"
1010

11-
"github.com/weaveworks/eksctl/pkg/actions/iamidentitymapping"
12-
"github.com/weaveworks/eksctl/pkg/actions/identityproviders"
13-
1411
"github.com/weaveworks/eksctl/pkg/windows"
1512

1613
"github.com/kris-nova/logger"
1714
"github.com/pkg/errors"
1815

1916
"k8s.io/apimachinery/pkg/util/sets"
2017

18+
"github.com/weaveworks/eksctl/pkg/actions/iamidentitymapping"
19+
"github.com/weaveworks/eksctl/pkg/actions/identityproviders"
2120
"github.com/weaveworks/eksctl/pkg/actions/irsa"
2221
"github.com/weaveworks/eksctl/pkg/addons"
22+
api "github.com/weaveworks/eksctl/pkg/apis/eksctl.io/v1alpha5"
2323
"github.com/weaveworks/eksctl/pkg/cfn/manager"
2424
"github.com/weaveworks/eksctl/pkg/fargate"
2525
iamoidc "github.com/weaveworks/eksctl/pkg/iam/oidc"
26+
"github.com/weaveworks/eksctl/pkg/kubernetes"
2627
instanceutils "github.com/weaveworks/eksctl/pkg/utils/instance"
2728
"github.com/weaveworks/eksctl/pkg/utils/tasks"
28-
29-
api "github.com/weaveworks/eksctl/pkg/apis/eksctl.io/v1alpha5"
30-
"github.com/weaveworks/eksctl/pkg/kubernetes"
3129
)
3230

3331
type clusterConfigTask struct {
@@ -181,11 +179,10 @@ func newEFADevicePluginTask(
181179
}
182180

183181
// CreateExtraClusterConfigTasks returns all tasks for updating cluster configuration
184-
func (c *ClusterProvider) CreateExtraClusterConfigTasks(ctx context.Context, cfg *api.ClusterConfig, preNodeGroupAddons *tasks.TaskTree) *tasks.TaskTree {
182+
func (c *ClusterProvider) CreateExtraClusterConfigTasks(ctx context.Context, cfg *api.ClusterConfig, preNodeGroupAddons *tasks.TaskTree, updateVPCCNITask *tasks.GenericTask) *tasks.TaskTree {
185183
newTasks := &tasks.TaskTree{
186184
Parallel: false,
187185
IsSubTask: true,
188-
Tasks: []tasks.Task{preNodeGroupAddons},
189186
}
190187

191188
newTasks.Append(&tasks.GenericTask{
@@ -205,6 +202,16 @@ func (c *ClusterProvider) CreateExtraClusterConfigTasks(ctx context.Context, cfg
205202
},
206203
})
207204

205+
if api.IsEnabled(cfg.IAM.WithOIDC) {
206+
c.appendCreateTasksForIAMServiceAccounts(ctx, cfg, newTasks)
207+
if updateVPCCNITask != nil {
208+
newTasks.Append(updateVPCCNITask)
209+
}
210+
}
211+
if preNodeGroupAddons.Len() > 0 {
212+
newTasks.Append(preNodeGroupAddons)
213+
}
214+
208215
if cfg.HasClusterCloudWatchLogging() {
209216
if logRetentionDays := cfg.CloudWatch.ClusterLogging.LogRetentionInDays; logRetentionDays != 0 {
210217
newTasks.Append(&clusterConfigTask{
@@ -237,10 +244,6 @@ func (c *ClusterProvider) CreateExtraClusterConfigTasks(ctx context.Context, cfg
237244
})
238245
}
239246

240-
if api.IsEnabled(cfg.IAM.WithOIDC) {
241-
c.appendCreateTasksForIAMServiceAccounts(ctx, cfg, newTasks)
242-
}
243-
244247
if len(cfg.IdentityProviders) > 0 {
245248
newTasks.Append(identityproviders.NewAssociateProvidersTask(ctx, *cfg.Metadata, cfg.IdentityProviders, c.AWSProvider.EKS()))
246249
}
@@ -418,7 +421,7 @@ func (c *ClusterProvider) appendCreateTasksForIAMServiceAccounts(ctx context.Con
418421
// given a clientSet getter and OpenIDConnectManager reference we can build out
419422
// the list of tasks for each of the service accounts that need to be created
420423
newTasks := c.NewStackManager(cfg).NewTasksToCreateIAMServiceAccounts(
421-
api.IAMServiceAccountsWithImplicitServiceAccounts(cfg),
424+
cfg.IAM.ServiceAccounts,
422425
oidcPlaceholder,
423426
clientSet,
424427
)

0 commit comments

Comments
 (0)