diff --git a/lib/common/observability-builder.ts b/lib/common/observability-builder.ts deleted file mode 100644 index bdff473d..00000000 --- a/lib/common/observability-builder.ts +++ /dev/null @@ -1,52 +0,0 @@ -import * as blueprints from '@aws-quickstart/eks-blueprints'; -import * as utils from '@aws-quickstart/eks-blueprints/dist/utils'; -import { NestedStack, NestedStackProps } from 'aws-cdk-lib'; -import { Construct } from 'constructs'; - -export class ObservabilityBuilder extends blueprints.BlueprintBuilder { - - public addNewClusterObservabilityBuilderAddOns(): ObservabilityBuilder { - return this.addOns( - new blueprints.addons.VpcCniAddOn(), - new blueprints.addons.CoreDnsAddOn(), - new blueprints.addons.MetricsServerAddOn(), - new blueprints.addons.PrometheusNodeExporterAddOn(), - new blueprints.addons.KubeStateMetricsAddOn()); - } - - public addExistingClusterObservabilityBuilderAddOns(): ObservabilityBuilder { - return this.addOns( - new blueprints.addons.AwsLoadBalancerControllerAddOn(), - new blueprints.addons.CertManagerAddOn()); - } - - public static builder(): ObservabilityBuilder { - const builder = new ObservabilityBuilder(); - builder.addOns( - new blueprints.NestedStackAddOn({ - id: "usage-tracking-addon", - builder: UsageTrackingAddOn.builder(), - })); - return builder; - } -} - -/** - * Nested stack that is used as tracker for Observability Accelerator - */ -export class UsageTrackingAddOn extends NestedStack { - - static readonly USAGE_ID = "qs-1u9l12gj7"; - - public static builder(): blueprints.NestedStackBuilder { - return { - build(scope: Construct, id: string, props: NestedStackProps) { - return new UsageTrackingAddOn(scope, id, props); - } - }; - } - - constructor(scope: Construct, id: string, props: NestedStackProps) { - super(scope, id, utils.withUsageTracking(UsageTrackingAddOn.USAGE_ID, props)); - } -} diff --git a/lib/existing-eks-awsnative-observability-pattern/index.ts b/lib/existing-eks-awsnative-observability-pattern/index.ts index 4658bda7..61583895 100644 --- a/lib/existing-eks-awsnative-observability-pattern/index.ts +++ b/lib/existing-eks-awsnative-observability-pattern/index.ts @@ -1,13 +1,13 @@ // import { Construct } from 'constructs'; import { ImportClusterProvider, utils } from '@aws-quickstart/eks-blueprints'; import * as blueprints from '@aws-quickstart/eks-blueprints'; -import { ObservabilityBuilder } from '../common/observability-builder'; +import { ObservabilityBuilder } from '@aws-quickstart/eks-blueprints'; import * as cdk from "aws-cdk-lib"; import * as eks from 'aws-cdk-lib/aws-eks'; export default class ExistingEksAwsNativeObservabilityPattern { async buildAsync(scope: cdk.App, id: string) { - // AddOns for the cluster + const stackId = `${id}-observability-accelerator`; const clusterName = utils.valueFromContext(scope, "existing.cluster.name", undefined); const kubectlRoleName = utils.valueFromContext(scope, "existing.kubectl.rolename", undefined); @@ -37,15 +37,14 @@ export default class ExistingEksAwsNativeObservabilityPattern { new blueprints.addons.CloudWatchLogsAddon({ logGroupPrefix: `/aws/eks/${stackId}`, logRetentionDays: 30 - }), - new blueprints.addons.ContainerInsightsAddOn(), + }) ]; ObservabilityBuilder.builder() .account(account) .region(region) .version('auto') - .addExistingClusterObservabilityBuilderAddOns() + .enableNativePatternAddOns() .clusterProvider(importClusterProvider) .resourceProvider(blueprints.GlobalResources.Vpc, new blueprints.VpcProvider(vpcId)) // this is required with import cluster provider .addOns(...addOns) diff --git a/lib/existing-eks-mixed-observability-pattern/index.ts b/lib/existing-eks-mixed-observability-pattern/index.ts index 7bf9f2a1..2efd356d 100644 --- a/lib/existing-eks-mixed-observability-pattern/index.ts +++ b/lib/existing-eks-mixed-observability-pattern/index.ts @@ -1,13 +1,13 @@ import { ImportClusterProvider, utils } from '@aws-quickstart/eks-blueprints'; import * as blueprints from '@aws-quickstart/eks-blueprints'; import { cloudWatchDeploymentMode } from '@aws-quickstart/eks-blueprints'; -import { ObservabilityBuilder } from '../common/observability-builder'; +import { ObservabilityBuilder } from '@aws-quickstart/eks-blueprints'; import * as cdk from "aws-cdk-lib"; import * as eks from 'aws-cdk-lib/aws-eks'; export default class ExistingEksMixedobservabilityPattern { async buildAsync(scope: cdk.App, id: string) { - // AddOns for the cluster + const stackId = `${id}-observability-accelerator`; const clusterName = utils.valueFromContext(scope, "existing.cluster.name", undefined); @@ -46,7 +46,6 @@ export default class ExistingEksMixedobservabilityPattern { logGroupPrefix: `/aws/eks/${stackId}`, logRetentionDays: 30 }), - new blueprints.addons.AdotCollectorAddOn(), cloudWatchAdotAddOn, new blueprints.addons.XrayAdotAddOn(), ]; @@ -55,7 +54,7 @@ export default class ExistingEksMixedobservabilityPattern { .account(account) .region(region) .version('auto') - .addExistingClusterObservabilityBuilderAddOns() + .enableMixedPatternAddOns() .clusterProvider(importClusterProvider) .resourceProvider(blueprints.GlobalResources.Vpc, new blueprints.VpcProvider(vpcId)) // this is required with import cluster provider .addOns(...addOns) diff --git a/lib/existing-eks-opensource-observability-pattern/index.ts b/lib/existing-eks-opensource-observability-pattern/index.ts index ed64b1c9..32bcec5b 100644 --- a/lib/existing-eks-opensource-observability-pattern/index.ts +++ b/lib/existing-eks-opensource-observability-pattern/index.ts @@ -3,13 +3,13 @@ import { ImportClusterProvider, utils } from '@aws-quickstart/eks-blueprints'; import * as blueprints from '@aws-quickstart/eks-blueprints'; import { GrafanaOperatorSecretAddon } from './grafanaoperatorsecretaddon'; import * as amp from 'aws-cdk-lib/aws-aps'; -import { ObservabilityBuilder } from '../common/observability-builder'; +import { ObservabilityBuilder } from '@aws-quickstart/eks-blueprints'; import * as cdk from "aws-cdk-lib"; import * as eks from 'aws-cdk-lib/aws-eks'; export default class ExistingEksOpenSourceobservabilityPattern { async buildAsync(scope: cdk.App, id: string) { - // AddOns for the cluster + const stackId = `${id}-observability-accelerator`; const clusterName = utils.valueFromContext(scope, "existing.cluster.name", undefined); const kubectlRoleName = utils.valueFromContext(scope, "existing.kubectl.rolename", undefined); @@ -76,13 +76,7 @@ export default class ExistingEksOpenSourceobservabilityPattern { logGroupPrefix: `/aws/eks/${stackId}`, logRetentionDays: 30 }), - new blueprints.addons.AdotCollectorAddOn(), - new blueprints.addons.AmpAddOn(ampAddOnProps), new blueprints.addons.XrayAdotAddOn(), - new blueprints.addons.ExternalsSecretsAddOn(), - new blueprints.addons.GrafanaOperatorAddon({ - version: 'v5.0.0-rc3' - }), new blueprints.addons.FluxCDAddOn({"repositories": [fluxRepository]}), new GrafanaOperatorSecretAddon(), ]; @@ -91,7 +85,7 @@ export default class ExistingEksOpenSourceobservabilityPattern { .account(account) .region(region) .version('auto') - .addExistingClusterObservabilityBuilderAddOns() + .enableOpenSourcePatternAddOns(ampAddOnProps) .clusterProvider(importClusterProvider) .resourceProvider(blueprints.GlobalResources.Vpc, new blueprints.VpcProvider(vpcId)) // this is required with import cluster provider .resourceProvider(ampWorkspaceName, new blueprints.CreateAmpProvider(ampWorkspaceName, ampWorkspaceName)) diff --git a/lib/single-new-eks-awsnative-observability-pattern/index.ts b/lib/single-new-eks-awsnative-observability-pattern/index.ts index 35b6f361..e8642d7e 100644 --- a/lib/single-new-eks-awsnative-observability-pattern/index.ts +++ b/lib/single-new-eks-awsnative-observability-pattern/index.ts @@ -1,24 +1,19 @@ import { Construct } from 'constructs'; import * as blueprints from '@aws-quickstart/eks-blueprints'; -import { ObservabilityBuilder } from '../common/observability-builder'; +import { ObservabilityBuilder } from '@aws-quickstart/eks-blueprints'; export default class SingleNewEksClusterAWSNativeobservabilityPattern { constructor(scope: Construct, id: string) { - // AddOns for the cluster + const stackId = `${id}-observability-accelerator`; - const account = process.env.COA_ACCOUNT_ID! || process.env.CDK_DEFAULT_ACCOUNT!; const region = process.env.COA_AWS_REGION! || process.env.CDK_DEFAULT_REGION!; const addOns: Array = [ - new blueprints.addons.KubeProxyAddOn(), - new blueprints.addons.AwsLoadBalancerControllerAddOn(), - new blueprints.addons.CertManagerAddOn(), new blueprints.addons.CloudWatchLogsAddon({ logGroupPrefix: `/aws/eks/${stackId}`, logRetentionDays: 30 }), - new blueprints.addons.ContainerInsightsAddOn(), new blueprints.addons.XrayAddOn() ]; @@ -26,7 +21,7 @@ export default class SingleNewEksClusterAWSNativeobservabilityPattern { .account(account) .region(region) .version('auto') - .addNewClusterObservabilityBuilderAddOns() + .enableNativePatternAddOns() .addOns(...addOns) .build(scope, stackId); } diff --git a/lib/single-new-eks-cluster-pattern/index.ts b/lib/single-new-eks-cluster-pattern/index.ts index 581be31f..bf66c1be 100644 --- a/lib/single-new-eks-cluster-pattern/index.ts +++ b/lib/single-new-eks-cluster-pattern/index.ts @@ -1,6 +1,6 @@ import { Construct } from 'constructs'; import * as blueprints from '@aws-quickstart/eks-blueprints'; -import { ObservabilityBuilder } from '../common/observability-builder'; +import { ObservabilityBuilder } from '@aws-quickstart/eks-blueprints'; export default class SingleNewEksPattern { constructor(scope: Construct, id: string) { @@ -10,7 +10,6 @@ export default class SingleNewEksPattern { const region = process.env.COA_AWS_REGION! || process.env.CDK_DEFAULT_REGION!; const addOns: Array = [ - new blueprints.addons.KubeProxyAddOn(), new blueprints.addons.ClusterAutoScalerAddOn() ]; @@ -18,7 +17,6 @@ export default class SingleNewEksPattern { .account(account) .region(region) .version('auto') - .addNewClusterObservabilityBuilderAddOns() .addOns(...addOns) .build(scope, stackId); } diff --git a/lib/single-new-eks-mixed-observability-pattern/index.ts b/lib/single-new-eks-mixed-observability-pattern/index.ts index 4c3f5d5f..abff2e44 100644 --- a/lib/single-new-eks-mixed-observability-pattern/index.ts +++ b/lib/single-new-eks-mixed-observability-pattern/index.ts @@ -1,13 +1,12 @@ import { Construct } from 'constructs'; import * as blueprints from '@aws-quickstart/eks-blueprints'; import { cloudWatchDeploymentMode } from '@aws-quickstart/eks-blueprints'; -import { ObservabilityBuilder } from '../common/observability-builder'; +import { ObservabilityBuilder } from '@aws-quickstart/eks-blueprints'; export default class SingleNewEksMixedobservabilityPattern { constructor(scope: Construct, id: string) { - // AddOns for the cluster - const stackId = `${id}-observability-accelerator`; + const stackId = `${id}-observability-accelerator`; const account = process.env.COA_ACCOUNT_ID! || process.env.CDK_DEFAULT_ACCOUNT!; const region = process.env.COA_AWS_REGION! || process.env.CDK_DEFAULT_REGION!; @@ -18,16 +17,13 @@ export default class SingleNewEksMixedobservabilityPattern { metricsNameSelectors: ['apiserver_request_.*', 'container_memory_.*', 'container_threads', 'otelcol_process_.*'], }); + Reflect.defineMetadata("ordered", true, blueprints.addons.CloudWatchLogsAddon); const addOns: Array = [ - new blueprints.addons.KubeProxyAddOn(), - new blueprints.addons.AwsLoadBalancerControllerAddOn(), - new blueprints.addons.CertManagerAddOn(), + cloudWatchAdotAddOn, new blueprints.addons.CloudWatchLogsAddon({ logGroupPrefix: `/aws/eks/${stackId}`, logRetentionDays: 30 }), - new blueprints.addons.AdotCollectorAddOn(), - cloudWatchAdotAddOn, new blueprints.addons.XrayAdotAddOn(), ]; @@ -35,7 +31,7 @@ export default class SingleNewEksMixedobservabilityPattern { .account(account) .region(region) .version('auto') - .addNewClusterObservabilityBuilderAddOns() + .enableMixedPatternAddOns() .addOns(...addOns) .build(scope, stackId); } diff --git a/lib/single-new-eks-opensource-observability-pattern/graviton-index.ts b/lib/single-new-eks-opensource-observability-pattern/graviton-index.ts index 69222c70..1969b1e9 100644 --- a/lib/single-new-eks-opensource-observability-pattern/graviton-index.ts +++ b/lib/single-new-eks-opensource-observability-pattern/graviton-index.ts @@ -5,11 +5,11 @@ import { GrafanaOperatorSecretAddon } from './grafanaoperatorsecretaddon'; import * as amp from 'aws-cdk-lib/aws-aps'; import * as eks from 'aws-cdk-lib/aws-eks'; import * as ec2 from 'aws-cdk-lib/aws-ec2'; -import { ObservabilityBuilder } from '../common/observability-builder'; +import { ObservabilityBuilder } from '@aws-quickstart/eks-blueprints'; export default class SingleNewEksGravitonOpenSourceObservabilityPattern { constructor(scope: Construct, id: string) { - // AddOns for the cluster + const stackId = `${id}-observability-accelerator`; const account = process.env.COA_ACCOUNT_ID! || process.env.CDK_DEFAULT_ACCOUNT!; @@ -53,20 +53,11 @@ export default class SingleNewEksGravitonOpenSourceObservabilityPattern { Reflect.defineMetadata("ordered", true, blueprints.addons.GrafanaOperatorAddon); const addOns: Array = [ - new blueprints.addons.KubeProxyAddOn("v1.27.1-eksbuild.1"), - new blueprints.addons.AwsLoadBalancerControllerAddOn(), - new blueprints.addons.CertManagerAddOn(), new blueprints.addons.CloudWatchLogsAddon({ logGroupPrefix: `/aws/eks/${stackId}`, logRetentionDays: 30 }), - new blueprints.addons.AdotCollectorAddOn(), - new blueprints.addons.AmpAddOn(ampAddOnProps), new blueprints.addons.XrayAdotAddOn(), - new blueprints.addons.ExternalsSecretsAddOn(), - new blueprints.addons.GrafanaOperatorAddon({ - version: 'v5.0.0-rc3' - }), new blueprints.addons.FluxCDAddOn({"repositories": [fluxRepository]}), new GrafanaOperatorSecretAddon(), ]; @@ -81,7 +72,7 @@ export default class SingleNewEksGravitonOpenSourceObservabilityPattern { .account(account) .region(region) .version('auto') - .addNewClusterObservabilityBuilderAddOns() + .enableOpenSourcePatternAddOns(ampAddOnProps,"v1.27.1-eksbuild.1") .resourceProvider(ampWorkspaceName, new blueprints.CreateAmpProvider(ampWorkspaceName, ampWorkspaceName)) .clusterProvider(new blueprints.MngClusterProvider(mngProps)) .addOns(...addOns) diff --git a/lib/single-new-eks-opensource-observability-pattern/index.ts b/lib/single-new-eks-opensource-observability-pattern/index.ts index 8cffa1f1..af95f4a5 100644 --- a/lib/single-new-eks-opensource-observability-pattern/index.ts +++ b/lib/single-new-eks-opensource-observability-pattern/index.ts @@ -3,12 +3,11 @@ import { utils } from '@aws-quickstart/eks-blueprints'; import * as blueprints from '@aws-quickstart/eks-blueprints'; import { GrafanaOperatorSecretAddon } from './grafanaoperatorsecretaddon'; import * as amp from 'aws-cdk-lib/aws-aps'; -import { ObservabilityBuilder } from '../common/observability-builder'; - +import { ObservabilityBuilder } from '@aws-quickstart/eks-blueprints'; export default class SingleNewEksOpenSourceobservabilityPattern { constructor(scope: Construct, id: string) { - // AddOns for the cluster + const stackId = `${id}-observability-accelerator`; const account = process.env.COA_ACCOUNT_ID! || process.env.CDK_DEFAULT_ACCOUNT!; @@ -55,20 +54,11 @@ export default class SingleNewEksOpenSourceobservabilityPattern { Reflect.defineMetadata("ordered", true, blueprints.addons.GrafanaOperatorAddon); const addOns: Array = [ - new blueprints.addons.KubeProxyAddOn(), - new blueprints.addons.AwsLoadBalancerControllerAddOn(), - new blueprints.addons.CertManagerAddOn(), new blueprints.addons.CloudWatchLogsAddon({ logGroupPrefix: `/aws/eks/${stackId}`, logRetentionDays: 30 }), - new blueprints.addons.AdotCollectorAddOn(), - new blueprints.addons.AmpAddOn(ampAddOnProps), new blueprints.addons.XrayAdotAddOn(), - new blueprints.addons.ExternalsSecretsAddOn(), - new blueprints.addons.GrafanaOperatorAddon({ - version: 'v5.0.0-rc3' - }), new blueprints.addons.FluxCDAddOn({"repositories": [fluxRepository]}), new GrafanaOperatorSecretAddon(), ]; @@ -77,7 +67,7 @@ export default class SingleNewEksOpenSourceobservabilityPattern { .account(account) .region(region) .version('auto') - .addNewClusterObservabilityBuilderAddOns() + .enableOpenSourcePatternAddOns(ampAddOnProps) .resourceProvider(ampWorkspaceName, new blueprints.CreateAmpProvider(ampWorkspaceName, ampWorkspaceName)) .addOns(...addOns) .build(scope, stackId); diff --git a/package.json b/package.json index 9b656323..07fe11ef 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cdk-aws-observability-accelerator", - "version": "0.1.0", + "version": "0.2.0", "scripts": { "build": "rm -rf dist && tsc --skipLibCheck", "watch": "tsc -w", @@ -10,7 +10,7 @@ "lint": "npx eslint . --ext .js,.jsx,.ts,.tsx" }, "devDependencies": { - "@aws-quickstart/eks-blueprints": "^1.11.0", + "@aws-quickstart/eks-blueprints": "^1.11.3", "@types/jest": "^29.5.1", "@types/node": "^18.15.12", "@typescript-eslint/eslint-plugin": "^5.59.0", @@ -23,14 +23,14 @@ "typescript": "^5.0.4" }, "dependencies": { - "@aws-quickstart/eks-blueprints": "^1.11.0", + "@aws-quickstart/eks-blueprints": "^1.11.3", "constructs": "^10.0.0", "aws-cdk": "2.91.0", "eks-blueprints-cdk-kubeflow-ext": "0.1.9", "source-map-support": "^0.5.21" }, "overrides": { - "@aws-quickstart/eks-blueprints": "^1.11.0", + "@aws-quickstart/eks-blueprints": "^1.11.3", "aws-cdk": "2.91.0", "xml2js": "0.5.0" }