From 6467b1c92635bf71b7dbc083df674ad819dc44b7 Mon Sep 17 00:00:00 2001 From: Bhavye Sharma Date: Mon, 8 Jan 2024 18:10:26 -0800 Subject: [PATCH 1/4] CoreDns Retain on delete --- lib/addons/core-addon/index.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/addons/core-addon/index.ts b/lib/addons/core-addon/index.ts index 9a3dda394..01a227b96 100644 --- a/lib/addons/core-addon/index.ts +++ b/lib/addons/core-addon/index.ts @@ -1,10 +1,11 @@ -import { CfnAddon, ServiceAccount } from "aws-cdk-lib/aws-eks"; +import { CfnAddon, FargateCluster, ServiceAccount } from "aws-cdk-lib/aws-eks"; import { ClusterAddOn } from "../.."; import { ClusterInfo, Values } from "../../spi"; import { Construct } from "constructs"; import { IManagedPolicy, ManagedPolicy, PolicyDocument } from "aws-cdk-lib/aws-iam"; import { KubernetesVersion } from "aws-cdk-lib/aws-eks"; import { createServiceAccountWithPolicy, deployBeforeCapacity, userLog, } from "../../utils"; +import { RemovalPolicy } from "aws-cdk-lib"; export class CoreAddOnProps { /** @@ -99,6 +100,14 @@ export class CoreAddOn implements ClusterAddOn { if(this.coreAddOnProps.controlPlaneAddOn) { deployBeforeCapacity(cfnAddon, clusterInfo); } + /** + * Retain the addon otherwise cluster destroy will fail due to CoreDnsComputeTypePatch + * https://github.com/aws/aws-cdk/issues/28621 + * */ + + if(clusterInfo.cluster instanceof FargateCluster && this.coreAddOnProps.addOnName === "coredns"){ + cfnAddon.applyRemovalPolicy(RemovalPolicy.RETAIN_ON_UPDATE_OR_DELETE) + } // Instantiate the Add-on return Promise.resolve(cfnAddon); } From fd29d9c8cae81b22d1b174e081d4a4020d10ff9f Mon Sep 17 00:00:00 2001 From: Bhavye Sharma Date: Mon, 8 Jan 2024 18:17:16 -0800 Subject: [PATCH 2/4] lint --- lib/addons/core-addon/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/addons/core-addon/index.ts b/lib/addons/core-addon/index.ts index 01a227b96..78362e05c 100644 --- a/lib/addons/core-addon/index.ts +++ b/lib/addons/core-addon/index.ts @@ -106,7 +106,7 @@ export class CoreAddOn implements ClusterAddOn { * */ if(clusterInfo.cluster instanceof FargateCluster && this.coreAddOnProps.addOnName === "coredns"){ - cfnAddon.applyRemovalPolicy(RemovalPolicy.RETAIN_ON_UPDATE_OR_DELETE) + cfnAddon.applyRemovalPolicy(RemovalPolicy.RETAIN_ON_UPDATE_OR_DELETE); } // Instantiate the Add-on return Promise.resolve(cfnAddon); From 963c7d30cddd08573f79cfab046f3ca240705822 Mon Sep 17 00:00:00 2001 From: Bhavye Sharma Date: Tue, 9 Jan 2024 11:59:04 -0800 Subject: [PATCH 3/4] Migrate logic to coredns addon from core addon --- lib/addons/core-addon/index.ts | 11 +---------- lib/addons/coredns/index.ts | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/lib/addons/core-addon/index.ts b/lib/addons/core-addon/index.ts index 78362e05c..9a3dda394 100644 --- a/lib/addons/core-addon/index.ts +++ b/lib/addons/core-addon/index.ts @@ -1,11 +1,10 @@ -import { CfnAddon, FargateCluster, ServiceAccount } from "aws-cdk-lib/aws-eks"; +import { CfnAddon, ServiceAccount } from "aws-cdk-lib/aws-eks"; import { ClusterAddOn } from "../.."; import { ClusterInfo, Values } from "../../spi"; import { Construct } from "constructs"; import { IManagedPolicy, ManagedPolicy, PolicyDocument } from "aws-cdk-lib/aws-iam"; import { KubernetesVersion } from "aws-cdk-lib/aws-eks"; import { createServiceAccountWithPolicy, deployBeforeCapacity, userLog, } from "../../utils"; -import { RemovalPolicy } from "aws-cdk-lib"; export class CoreAddOnProps { /** @@ -100,14 +99,6 @@ export class CoreAddOn implements ClusterAddOn { if(this.coreAddOnProps.controlPlaneAddOn) { deployBeforeCapacity(cfnAddon, clusterInfo); } - /** - * Retain the addon otherwise cluster destroy will fail due to CoreDnsComputeTypePatch - * https://github.com/aws/aws-cdk/issues/28621 - * */ - - if(clusterInfo.cluster instanceof FargateCluster && this.coreAddOnProps.addOnName === "coredns"){ - cfnAddon.applyRemovalPolicy(RemovalPolicy.RETAIN_ON_UPDATE_OR_DELETE); - } // Instantiate the Add-on return Promise.resolve(cfnAddon); } diff --git a/lib/addons/coredns/index.ts b/lib/addons/coredns/index.ts index eca5e83a7..8be346f51 100644 --- a/lib/addons/coredns/index.ts +++ b/lib/addons/coredns/index.ts @@ -1,5 +1,9 @@ +import { Construct } from "constructs"; +import { ClusterInfo } from "../../spi"; import {supportsALL } from "../../utils"; import { CoreAddOn, CoreAddOnProps } from "../core-addon"; +import { CfnAddon, FargateCluster } from "aws-cdk-lib/aws-eks"; +import { RemovalPolicy } from "aws-cdk-lib"; /** * Configuration options for the coredns add-on. @@ -23,4 +27,27 @@ export class CoreDnsAddOn extends CoreAddOn { super({ ...defaultProps, ...props }); } + deploy(clusterInfo: ClusterInfo): Promise { + + const addonPromise: Promise = super.deploy(clusterInfo); + + if(clusterInfo.cluster instanceof FargateCluster){ + this.handleFargatePatch(addonPromise); + } + return addonPromise; + } + + /** + * Retain the addon otherwise cluster destroy will fail due to CoreDnsComputeTypePatch + * https://github.com/aws/aws-cdk/issues/28621 + */ + handleFargatePatch( addonPromise: Promise ): Promise { + addonPromise.then(addon => { + if(addon instanceof CfnAddon){ + addon.applyRemovalPolicy(RemovalPolicy.RETAIN_ON_UPDATE_OR_DELETE) + } + }) + return addonPromise; + } + } From 3da80d1f0dc4fb447571f3e1220342a4884e745b Mon Sep 17 00:00:00 2001 From: Bhavye Sharma Date: Tue, 9 Jan 2024 15:19:40 -0800 Subject: [PATCH 4/4] Lint issues resolved --- lib/addons/coredns/index.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/addons/coredns/index.ts b/lib/addons/coredns/index.ts index 8be346f51..3bf9e3ca4 100644 --- a/lib/addons/coredns/index.ts +++ b/lib/addons/coredns/index.ts @@ -41,13 +41,12 @@ export class CoreDnsAddOn extends CoreAddOn { * Retain the addon otherwise cluster destroy will fail due to CoreDnsComputeTypePatch * https://github.com/aws/aws-cdk/issues/28621 */ - handleFargatePatch( addonPromise: Promise ): Promise { + handleFargatePatch( addonPromise: Promise ){ addonPromise.then(addon => { if(addon instanceof CfnAddon){ - addon.applyRemovalPolicy(RemovalPolicy.RETAIN_ON_UPDATE_OR_DELETE) + addon.applyRemovalPolicy(RemovalPolicy.RETAIN_ON_UPDATE_OR_DELETE); } - }) - return addonPromise; + }); } }