diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 9e6bff653..1d7bae053 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -12,13 +12,13 @@ jobs: strategy: matrix: - node-version: [18.12.1] + node-version: [20.10.0] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v1 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} diff --git a/.github/workflows/linkcheck.json b/.github/workflows/linkcheck.json index cf0347a1a..3fc8c713e 100644 --- a/.github/workflows/linkcheck.json +++ b/.github/workflows/linkcheck.json @@ -22,6 +22,8 @@ { "pattern": "rsa-2048.example.com" }, { "pattern": "https://ingress-red-saas.instana.io" }, { "pattern": "http://console-eks.yourdomain.com" }, - { "pattern": "https://p191.p3.n0.cdn.getcloudapp.com"} + { "pattern": "http://console-eks.yourdomain.com" }, + { "pattern": "https://p191.p3.n0.cdn.getcloudapp.com"}, + { "pattern": "https://grafana-operator.github.io/grafana-operator/docs/installation/helm"} ] } diff --git a/README.md b/README.md index 02962579e..15f0e57e7 100644 --- a/README.md +++ b/README.md @@ -44,14 +44,14 @@ aws --version Install CDK matching the current version of the Blueprints QuickStart (which can be found in package.json). ```bash -npm install -g aws-cdk@2.99.1 +npm install -g aws-cdk@2.115.0 ``` Verify the installation. ```bash cdk --version -# must output 2.99.1 +# must output 2.115.0 ``` Create a new CDK project. We use `typescript` for this example. diff --git a/ci/buildspec.yml b/ci/buildspec.yml index b213cf691..ed7142348 100644 --- a/ci/buildspec.yml +++ b/ci/buildspec.yml @@ -7,7 +7,7 @@ phases: runtime-versions: nodejs: 14 commands: - - n 18.12.1 + - n 20.10.0 - | if [ ! -z "${COMMIT_ID}" ]; then git fetch origin pull/${PR_NUMBER}/head:pr diff --git a/docs/README.md b/docs/README.md index 6b694c6f1..68ae27c8d 100644 --- a/docs/README.md +++ b/docs/README.md @@ -44,14 +44,14 @@ aws --version Install CDK matching the current version of the Blueprints QuickStart (which can be found in package.json). ```bash -npm install -g aws-cdk@2.99.1 +npm install -g aws-cdk@2.115.0 ``` Verify the installation. ```bash cdk --version -# must output 2.99.1 +# must output 2.115.0 ``` Create a new CDK project. We use `typescript` for this example. diff --git a/docs/builders/gpu-builder.md b/docs/builders/gpu-builder.md index 4e6fa9a1e..e3e0fc74a 100644 --- a/docs/builders/gpu-builder.md +++ b/docs/builders/gpu-builder.md @@ -41,7 +41,7 @@ export default class GpuConstruct { const stackID = `${id}-eks-blueprint`; const options: GpuOptions = { - kubernetesVersion: eks.KubernetesVersion.of("1.27"), + kubernetesVersion: eks.KubernetesVersion.of("1.28"), instanceClass: ec2.InstanceClass.G5, instanceSize: ec2.InstanceSize.XLARGE }; diff --git a/docs/builders/graviton-builder.md b/docs/builders/graviton-builder.md index e0d130ff9..5bd44954f 100644 --- a/docs/builders/graviton-builder.md +++ b/docs/builders/graviton-builder.md @@ -37,7 +37,7 @@ export default class GravitonConstruct { blueprints.getNamedResource(ampWorkspaceName); const options: Partial = { - version: eks.KubernetesVersion.of("1.27"), + version: eks.KubernetesVersion.of("1.28"), instanceTypes: [ec2.InstanceType.of(ec2.InstanceClass.M7G, ec2.InstanceSize.XLARGE)], desiredSize: 3, minSize: 2, diff --git a/docs/builders/windows-builder.md b/docs/builders/windows-builder.md index 78273c857..92239c5af 100644 --- a/docs/builders/windows-builder.md +++ b/docs/builders/windows-builder.md @@ -53,7 +53,7 @@ export default class WindowsConstruct { ]); const options: WindowsOptions = { - kubernetesVersion: eks.KubernetesVersion.of("1.27"), + kubernetesVersion: eks.KubernetesVersion.of("1.28"), instanceClass: ec2.InstanceClass.M5, instanceSize: ec2.InstanceSize.XLARGE4 }; diff --git a/docs/cluster-providers/fargate-cluster-provider.md b/docs/cluster-providers/fargate-cluster-provider.md index fc5ee58d4..b25f812f4 100644 --- a/docs/cluster-providers/fargate-cluster-provider.md +++ b/docs/cluster-providers/fargate-cluster-provider.md @@ -27,7 +27,7 @@ const tags = { "Type": "fargate-cluster" } const clusterProvider = new blueprints.FargateClusterProvider({ - version: KubernetesVersion.V1_27, + version: KubernetesVersion.V1_28, fargateProfiles, tags }); diff --git a/docs/getting-started.md b/docs/getting-started.md index 9bb92f335..e9e5a7646 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -26,8 +26,8 @@ Create a directory that represents you project (e.g. `my-blueprints`) and then c ```bash npm install -g n # may require sudo n stable # may require sudo -npm install -g aws-cdk@2.99.1 # may require sudo (Ubuntu) depending on configuration -cdk --version # must produce 2.99.1 +npm install -g aws-cdk@2.115.0 # may require sudo (Ubuntu) depending on configuration +cdk --version # must produce 2.115.0 mkdir my-blueprints cd my-blueprints cdk init app --language typescript diff --git a/docs/internal/ci.md b/docs/internal/ci.md index e6e53f1b3..a835369c9 100644 --- a/docs/internal/ci.md +++ b/docs/internal/ci.md @@ -19,7 +19,7 @@ cd cdk-eks-blueprints Install CDK (please review and install any missing [pre-requisites](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html) for your environment) ```sh -npm install -g aws-cdk@2.99.1 +npm install -g aws-cdk@2.115.0 ``` Install the dependencies for this project. diff --git a/examples/blueprint-construct/index.ts b/examples/blueprint-construct/index.ts index 2f779d611..2878dcba3 100644 --- a/examples/blueprint-construct/index.ts +++ b/examples/blueprint-construct/index.ts @@ -62,7 +62,7 @@ export default class BlueprintConstruct { new blueprints.addons.PrometheusNodeExporterAddOn(), new blueprints.addons.AdotCollectorAddOn({ namespace:'adot', - version: 'v0.80.0-eksbuild.2' + version: 'v0.88.0-eksbuild.2' }), new blueprints.addons.AmpAddOn({ ampPrometheusEndpoint: ampWorkspace.attrPrometheusEndpoint, @@ -228,7 +228,7 @@ export default class BlueprintConstruct { }); const clusterProvider = new blueprints.GenericClusterProvider({ - version: KubernetesVersion.V1_27, + version: KubernetesVersion.V1_28, tags: { "Name": "blueprints-example-cluster", "Type": "generic-cluster" diff --git a/lib/addons/ack/serviceMappings.ts b/lib/addons/ack/serviceMappings.ts index 35b6e38bc..9d193c0e0 100644 --- a/lib/addons/ack/serviceMappings.ts +++ b/lib/addons/ack/serviceMappings.ts @@ -37,7 +37,13 @@ export enum AckServiceName { ROUTE53 = "route53", SQS = "sqs", SAGEMAKER = "sagemaker", - EVENTBRIDGE = "eventbridge" + EVENTBRIDGE = "eventbridge", + PIPES = "pipes", + SECRETSMANAGER = "secretsmanager", + ROUTE53RESOLVER = "route53resolver", + CLOUDWATCH = "cloudwatch", + ACMPCA = "acmpca", + CLOUDWATCHLOGS = "cloudwatchlogs" } /** @@ -47,52 +53,52 @@ export enum AckServiceName { export const serviceMappings : {[key in AckServiceName]?: AckChartMapping } = { [AckServiceName.IAM]: { chart: "iam-chart", - version: "1.2.2", + version: "1.3.1", managedPolicyName: "IAMFullAccess" }, [AckServiceName.RDS]: { chart: "rds-chart", - version: "1.1.5", + version: "1.1.8", managedPolicyName: "AmazonRDSFullAccess" }, [AckServiceName.EC2]: { chart: "ec2-chart", - version: "1.0.3", + version: "1.1.0", managedPolicyName: "AmazonRDSFullAccess" }, [AckServiceName.S3]: { chart: "s3-chart", - version: "1.0.4", + version: "1.0.6", managedPolicyName: "AmazonS3FullAccess" }, [AckServiceName.DYNAMODB]: { chart: "dynamodb-chart", - version: "1.1.2", + version: "1.2.5", managedPolicyName: "AmazonDynamoDBFullAccess" }, [AckServiceName.ECR]: { chart: "ecr-chart", - version: "1.0.5", + version: "1.0.9", managedPolicyName: "AmazonEC2ContainerRegistryFullAccess" }, [AckServiceName.SNS]: { chart: "sns-chart", - version: "1.0.2", + version: "1.0.5", managedPolicyName: "AmazonSNSFullAccess" }, [AckServiceName.APIGATEWAYV2]: { chart: "apigatewayv2-chart", - version: "1.0.4", + version: "1.0.6", managedPolicyName: "AmazonAPIGatewayAdministrator" }, [AckServiceName.ELASTICACHE]: { chart: "elasticache-chart", - version: "0.0.26", + version: "0.0.28", managedPolicyName: "AmazonElastiCacheFullAccess" }, [AckServiceName.OPENSEARCHSERVICE]: { chart: "opensearchservice-chart", - version: "0.0.16", + version: "0.0.18", managedPolicyName: "AmazonOpenSearchServiceFullAccess" }, [AckServiceName.MQ]: { @@ -102,27 +108,27 @@ export const serviceMappings : {[key in AckServiceName]?: AckChartMapping } = { }, [AckServiceName.LAMBDA]: { chart: "lambda-chart", - version: "1.1.0", + version: "1.3.4", managedPolicyName: "AWSLambda_FullAccess" }, [AckServiceName.KMS]: { chart: "kms-chart", - version: "1.0.5", + version: "1.0.7", managedPolicyName: "AWSKeyManagementServicePowerUser" }, [AckServiceName.MEMORYDB]: { chart: "memorydb-chart", - version: "1.0.1", + version: "1.0.2", managedPolicyName: "AmazonMemoryDBFullAccess" }, [AckServiceName.EKS]: { chart: "eks-chart", - version: "1.0.3", + version: "1.0.5", managedPolicyName: "AmazonEKSClusterPolicy" }, [AckServiceName.APPLICATIONAUTOSCALING]: { chart: "applicationautoscaling-chart", - version: "1.0.5", + version: "1.0.8", managedPolicyName: "AutoScalingFullAccess" }, [AckServiceName.ELASTICSEARCHSERVICE]: { @@ -132,52 +138,82 @@ export const serviceMappings : {[key in AckServiceName]?: AckChartMapping } = { }, [AckServiceName.PROMETHEUSSERVICE]: { chart: "prometheusservice-chart", - version: "1.2.3", + version: "1.2.5", managedPolicyName: "AmazonPrometheusFullAccess" }, [AckServiceName.EMRCONTAINERS]: { chart: "emrcontainers-chart", - version: "1.0.2", + version: "1.0.4", managedPolicyName: "AmazonEMRContainersServiceRolePolicy" }, [AckServiceName.SFN]: { chart: "sfn-chart", - version: "1.0.3", + version: "1.0.5", managedPolicyName: "AWSStepFunctionsFullAccess" }, [AckServiceName.KINESIS]: { chart: "kinesis-chart", - version: "0.0.7", + version: "0.0.9", managedPolicyName: "AmazonKinesisFullAccess" }, [AckServiceName.CLOUDTRAIL]: { chart: "cloudtrail-chart", - version: "1.0.3", + version: "1.0.5", managedPolicyName: "AWSCloudTrail_FullAccess" }, [AckServiceName.ACM]: { chart: "acm-chart", - version: "0.0.7", + version: "0.0.9", managedPolicyName: "AWSCertificateManagerFullAccess" }, [AckServiceName.ROUTE53]: { chart: "route53-chart", - version: "0.0.5", + version: "0.0.8", managedPolicyName: "AmazonRoute53FullAccess" }, [AckServiceName.SQS]: { chart: "sqs-chart", - version: "1.0.4", + version: "1.0.6", managedPolicyName: "AmazonSQSFullAccess" }, [AckServiceName.SAGEMAKER]: { chart: "sagemaker-chart", - version: "1.2.2", + version: "1.2.4", managedPolicyName: "AmazonSageMakerFullAccess" }, [AckServiceName.EVENTBRIDGE]: { chart: "eventbridge-chart", - version: "1.0.2", + version: "1.0.4", managedPolicyName: "AmazonEventBridgeFullAccess" + }, + [AckServiceName.PIPES]: { + chart: "pipes-chart", + version: "1.0.2", + managedPolicyName: "AmazonEventBridgePipesFullAccess" + }, + [AckServiceName.SECRETSMANAGER]: { + chart: "secretsmanager-chart", + version: "0.0.1", + managedPolicyName: "SecretsManagerReadWrite" + }, + [AckServiceName.CLOUDWATCH]: { + chart: "cloudwatch-chart", + version: "0.0.2", + managedPolicyName: "CloudWatchFullAccess" + }, + [AckServiceName.ROUTE53RESOLVER]: { + chart: "route53resolver-chart", + version: "0.0.2", + managedPolicyName: "AmazonRoute53ResolverFullAccess" + }, + [AckServiceName.ACMPCA]: { + chart: "acmpca-chart", + version: "0.0.2", + managedPolicyName: "AWSCertificateManagerPrivateCAFullAccess" + }, + [AckServiceName.CLOUDWATCHLOGS]: { + chart: "cloudwatchlogs-chart", + version: "0.0.1", + managedPolicyName: "CloudWatchLogsFullAccess" } }; diff --git a/lib/addons/adot/index.ts b/lib/addons/adot/index.ts index 856433c54..b4bd086df 100644 --- a/lib/addons/adot/index.ts +++ b/lib/addons/adot/index.ts @@ -5,6 +5,7 @@ import { createNamespace, dependable, loadYaml, readYamlDocument, supportsALL } import { CertManagerAddOn } from "../cert-manager"; import { CoreAddOn, CoreAddOnProps } from "../core-addon"; import { getAdotCollectorPolicyDocument } from "./iam-policy"; +import { semverComparator } from "../helm-addon/helm-version-checker"; /** * Configuration options for the Adot add-on. @@ -15,10 +16,11 @@ export type AdotCollectorAddOnProps = Omit = new Map([ - [KubernetesVersion.V1_26, "9.29.0"], - [KubernetesVersion.V1_25, "9.29.0"], - [KubernetesVersion.V1_24, "9.25.0"], - [KubernetesVersion.V1_23, "9.21.0"], - [KubernetesVersion.V1_22, "9.13.1"], - [KubernetesVersion.V1_21, "9.13.1"], - [KubernetesVersion.V1_20, "9.9.2"], - [KubernetesVersion.V1_19, "9.4.0"], - [KubernetesVersion.V1_18, "9.4.0"], +const versionMap: Map = new Map([ + [KubernetesVersion.V1_28.version, "9.34.0"], + [KubernetesVersion.V1_27.version, "9.33.0"], + [KubernetesVersion.V1_26.version, "9.29.0"], + [KubernetesVersion.V1_25.version, "9.29.0"], + [KubernetesVersion.V1_24.version, "9.25.0"], + [KubernetesVersion.V1_23.version, "9.21.0"], + [KubernetesVersion.V1_22.version, "9.13.1"], + [KubernetesVersion.V1_21.version, "9.13.1"], + [KubernetesVersion.V1_20.version, "9.9.2"], + [KubernetesVersion.V1_19.version, "9.4.0"], + [KubernetesVersion.V1_18.version, "9.4.0"], ]); @supportsALL @@ -66,7 +68,7 @@ export class ClusterAutoScalerAddOn extends HelmAddOn { deploy(clusterInfo: ClusterInfo): Promise { if(this.options.version?.trim() === 'auto') { - this.options.version = versionMap.get(clusterInfo.version); + this.options.version = versionMap.get(clusterInfo.version.version); if(!this.options.version) { this.options.version = versionMap.values().next().value; logger.warn(`Unable to auto-detect cluster autoscaler version. Applying latest: ${this.options.version}`); diff --git a/lib/addons/efs-csi-driver/index.ts b/lib/addons/efs-csi-driver/index.ts index 4ec475a33..1c4fe51ed 100644 --- a/lib/addons/efs-csi-driver/index.ts +++ b/lib/addons/efs-csi-driver/index.ts @@ -37,7 +37,7 @@ export interface EfsCsiDriverProps extends HelmAddOnUserProps { * Defaults options for the add-on */ const defaultProps: EfsCsiDriverProps = { - version: '2.5.0', + version: '2.5.2', namespace: "kube-system", repository: "https://kubernetes-sigs.github.io/aws-efs-csi-driver/", name: EFS_CSI_DRIVER, diff --git a/lib/addons/external-secrets/index.ts b/lib/addons/external-secrets/index.ts index d7fce7171..156fd2b24 100644 --- a/lib/addons/external-secrets/index.ts +++ b/lib/addons/external-secrets/index.ts @@ -23,7 +23,7 @@ const defaultProps: ExternalsSecretsAddOnProps = { name: "external-secrets", chart: "external-secrets", release: "blueprints-addon-external-secrets", - version: "0.9.5", + version: "0.9.9", repository: "https://charts.external-secrets.io", namespace: "external-secrets", values: {}, diff --git a/lib/addons/fluxcd/index.ts b/lib/addons/fluxcd/index.ts index 34339f08f..445cf7ed8 100644 --- a/lib/addons/fluxcd/index.ts +++ b/lib/addons/fluxcd/index.ts @@ -68,7 +68,7 @@ export interface FluxCDAddOnProps extends HelmAddOnUserProps { /** * Helm chart version to use to install. - * @default 2.8.0 + * @default 2.12.0 */ version?: string; @@ -95,7 +95,7 @@ const defaultProps: HelmAddOnProps & FluxCDAddOnProps = { name: "fluxcd-addon", namespace: "flux-system", chart: "flux2", - version: "2.10.1", + version: "2.12.1", release: "blueprints-fluxcd-addon", repository: "https://fluxcd-community.github.io/helm-charts", values: {}, diff --git a/lib/addons/gpu-operator/index.ts b/lib/addons/gpu-operator/index.ts index be4e00a78..2331d449d 100644 --- a/lib/addons/gpu-operator/index.ts +++ b/lib/addons/gpu-operator/index.ts @@ -23,7 +23,7 @@ const defaultProps: HelmAddOnProps & GpuOperatorAddonProps = { name: "gpu-operator-addon", namespace: "gpu-operator", chart: "gpu-operator", - version: "v23.6.1", + version: "v23.9.1", release: "nvidia-gpu-operator", repository: "https://helm.ngc.nvidia.com/nvidia", createNamespace: true, diff --git a/lib/addons/grafana-operator/index.ts b/lib/addons/grafana-operator/index.ts index 7a07efe39..52047f291 100644 --- a/lib/addons/grafana-operator/index.ts +++ b/lib/addons/grafana-operator/index.ts @@ -18,11 +18,11 @@ export interface GrafanaOperatorAddonProps extends HelmAddOnUserProps { */ const defaultProps: HelmAddOnProps & GrafanaOperatorAddonProps = { name: 'grafana-operator', - chart: 'oci://ghcr.io/grafana-operator/helm-charts/grafana-operator', + chart: 'oci://ghcr.io/grafana/helm-charts/grafana-operator', namespace: 'grafana-operator', release: 'grafana-operator', - version: 'v5.4.0', - values: {}, + version: 'v5.6.0', + values: {}, createNamespace: true }; diff --git a/lib/addons/helm-addon/helm-version-checker.ts b/lib/addons/helm-addon/helm-version-checker.ts index 8ed80da1c..1f8185fff 100644 --- a/lib/addons/helm-addon/helm-version-checker.ts +++ b/lib/addons/helm-addon/helm-version-checker.ts @@ -11,7 +11,7 @@ export type HelmChartVersion = Omit { +export const semverComparator = (a: string, b: string) => { a = trimVersion(a); b = trimVersion(b); diff --git a/lib/addons/istio-base/index.ts b/lib/addons/istio-base/index.ts index f7d18d8ae..2a02ff9ba 100644 --- a/lib/addons/istio-base/index.ts +++ b/lib/addons/istio-base/index.ts @@ -56,7 +56,7 @@ const defaultProps = { release: "istio-base", namespace: "istio-system", chart: "base", - version: "1.19.1", + version: "1.20.1", repository: "https://istio-release.storage.googleapis.com/charts" }; diff --git a/lib/addons/istio-control-plane/index.ts b/lib/addons/istio-control-plane/index.ts index 5b11be179..e866722b9 100644 --- a/lib/addons/istio-control-plane/index.ts +++ b/lib/addons/istio-control-plane/index.ts @@ -14,7 +14,7 @@ const defaultProps = { release: "istiod", namespace: "istio-system", chart: "istiod", - version: "1.19.1", + version: "1.20.1", repository: "https://istio-release.storage.googleapis.com/charts" }; diff --git a/lib/addons/keda/index.ts b/lib/addons/keda/index.ts index 2fb882c10..c634103d9 100644 --- a/lib/addons/keda/index.ts +++ b/lib/addons/keda/index.ts @@ -52,7 +52,7 @@ const defaultProps: HelmAddOnProps & KedaAddOnProps = { name: "blueprints-keda-addon", chart: "keda", namespace:"keda", - version: "2.12.0", + version: "2.12.1", release: "keda", repository: "https://kedacore.github.io/charts", values: {}, diff --git a/lib/addons/kube-proxy/index.ts b/lib/addons/kube-proxy/index.ts index 8245d7181..146fbb14d 100644 --- a/lib/addons/kube-proxy/index.ts +++ b/lib/addons/kube-proxy/index.ts @@ -3,7 +3,8 @@ import { CoreAddOn, CoreAddOnProps } from "../core-addon"; import { supportsALL } from "../../utils"; const versionMap: Map = new Map([ - [KubernetesVersion.V1_27, "v1.27.1-eksbuild.1"], + [KubernetesVersion.V1_28, "v1.28.2-eksbuild.2"], + [KubernetesVersion.V1_27, "v1.27.6-eksbuild.2"], [KubernetesVersion.V1_26, "v1.26.2-eksbuild.1"], [KubernetesVersion.V1_25, "v1.25.6-eksbuild.1"], [KubernetesVersion.V1_24, "v1.24.7-eksbuild.2"], diff --git a/lib/addons/kube-state-metrics/index.ts b/lib/addons/kube-state-metrics/index.ts index c3634007b..289f936dd 100644 --- a/lib/addons/kube-state-metrics/index.ts +++ b/lib/addons/kube-state-metrics/index.ts @@ -21,7 +21,7 @@ const defaultProps: HelmAddOnProps & KubeStateMetricsAddOnProps = { name: "kube-state-metrics", namespace: "kube-system", chart: "kube-state-metrics", - version: "5.14.0", + version: "5.15.2", release: "kube-state-metrics", repository: "https://prometheus-community.github.io/helm-charts", values: {}, diff --git a/lib/addons/nginx/index.ts b/lib/addons/nginx/index.ts index e84e5aa78..fbbb30cd1 100644 --- a/lib/addons/nginx/index.ts +++ b/lib/addons/nginx/index.ts @@ -61,7 +61,7 @@ const defaultProps: NginxAddOnProps = { name: "nginx-ingress", chart: "nginx-ingress", release: "blueprints-addon-nginx", - version: "1.0.0", + version: "1.0.2", repository: "https://helm.nginx.com/stable", backendProtocol: 'tcp', crossZoneEnabled: true, diff --git a/lib/addons/opa-gatekeeper/index.ts b/lib/addons/opa-gatekeeper/index.ts index 227a239ea..6ca179996 100644 --- a/lib/addons/opa-gatekeeper/index.ts +++ b/lib/addons/opa-gatekeeper/index.ts @@ -20,7 +20,7 @@ const defaultProps: HelmAddOnProps = { namespace: 'gatekeeper-system', chart: 'gatekeeper', repository: "https://open-policy-agent.github.io/gatekeeper/charts", - version: '3.13.0' + version: '3.14.0' }; @supportsALL diff --git a/lib/addons/prometheus-node-exporter/index.ts b/lib/addons/prometheus-node-exporter/index.ts index 2f6004fa5..147fec589 100644 --- a/lib/addons/prometheus-node-exporter/index.ts +++ b/lib/addons/prometheus-node-exporter/index.ts @@ -21,7 +21,7 @@ const defaultProps: HelmAddOnProps & PrometheusNodeExporterAddOnProps = { name: "prometheus-node-exporter", namespace: "prometheus-node-exporter", chart: "prometheus-node-exporter", - version: "4.23.2", + version: "4.24.0", release: "prometheus-node-exporter", repository: "https://prometheus-community.github.io/helm-charts", values: {}, diff --git a/lib/addons/secrets-store/index.ts b/lib/addons/secrets-store/index.ts index 3a9e91081..4fdb3dfe6 100644 --- a/lib/addons/secrets-store/index.ts +++ b/lib/addons/secrets-store/index.ts @@ -46,7 +46,7 @@ const defaultProps: SecretsStoreAddOnProps = { chart: 'secrets-store-csi-driver', name: 'secrets-store-csi-driver', namespace: 'kube-system', - version: '1.3.4', + version: '1.4.0', release: 'blueprints-addon-secret-store-csi-driver', repository: 'https://kubernetes-sigs.github.io/secrets-store-csi-driver/charts', rotationPollInterval: undefined, diff --git a/lib/builders/gpu-builder.ts b/lib/builders/gpu-builder.ts index 6ceb7ecfa..528899fc0 100644 --- a/lib/builders/gpu-builder.ts +++ b/lib/builders/gpu-builder.ts @@ -65,7 +65,7 @@ export interface GpuOptions { * for EKS cluster */ const defaultOptions: GpuOptions = { - kubernetesVersion: eks.KubernetesVersion.of("1.27"), + kubernetesVersion: eks.KubernetesVersion.of("1.28"), instanceClass: ec2.InstanceClass.G5, instanceSize: ec2.InstanceSize.XLARGE, desiredNodeSize: 2, diff --git a/lib/builders/graviton-builder.ts b/lib/builders/graviton-builder.ts index cf48e4fcc..26aeb989c 100644 --- a/lib/builders/graviton-builder.ts +++ b/lib/builders/graviton-builder.ts @@ -15,7 +15,7 @@ import merge from 'ts-deepmerge'; * for EKS cluster */ const defaultOptions: Partial = { - version: eks.KubernetesVersion.of("1.27"), + version: eks.KubernetesVersion.of("1.28"), instanceTypes: [ec2.InstanceType.of(ec2.InstanceClass.M7G, ec2.InstanceSize.XLARGE)], amiType: eks.NodegroupAmiType.AL2_ARM_64, desiredSize: 3, @@ -54,7 +54,7 @@ export class GravitonBuilder extends BlueprintBuilder { builder: UsageTrackingAddOn.builder(), }), new addons.AwsLoadBalancerControllerAddOn(), - new addons.KubeProxyAddOn("v1.27.1-eksbuild.1"), + new addons.KubeProxyAddOn("auto"), new addons.VpcCniAddOn(), ); return builder; diff --git a/lib/builders/windows-builder.ts b/lib/builders/windows-builder.ts index 29b47ea93..6101480ed 100644 --- a/lib/builders/windows-builder.ts +++ b/lib/builders/windows-builder.ts @@ -97,7 +97,7 @@ export interface WindowsOptions { * for Windows EKS cluster */ const defaultOptions: WindowsOptions = { - kubernetesVersion: eks.KubernetesVersion.of("1.27"), + kubernetesVersion: eks.KubernetesVersion.of("1.28"), instanceClass: ec2.InstanceClass.M5, instanceSize: ec2.InstanceSize.XLARGE4, nodeRole: resourceproviders.getNamedResource("node-role") as iam.Role, diff --git a/lib/cluster-providers/generic-cluster-provider.ts b/lib/cluster-providers/generic-cluster-provider.ts index 74370d3c8..1aaba2302 100644 --- a/lib/cluster-providers/generic-cluster-provider.ts +++ b/lib/cluster-providers/generic-cluster-provider.ts @@ -4,6 +4,7 @@ import { KubectlV24Layer } from "@aws-cdk/lambda-layer-kubectl-v24"; import { KubectlV25Layer } from "@aws-cdk/lambda-layer-kubectl-v25"; import { KubectlV26Layer } from "@aws-cdk/lambda-layer-kubectl-v26"; import { KubectlV27Layer } from "@aws-cdk/lambda-layer-kubectl-v27"; +import { KubectlV28Layer } from "@aws-cdk/lambda-layer-kubectl-v28"; import { Tags } from "aws-cdk-lib"; import * as autoscaling from 'aws-cdk-lib/aws-autoscaling'; import * as ec2 from "aws-cdk-lib/aws-ec2"; @@ -40,6 +41,8 @@ export function selectKubectlLayer(scope: Construct, version: eks.KubernetesVers return new KubectlV26Layer(scope, "kubectllayer26"); case "1.27": return new KubectlV27Layer(scope, "kubectllayer27"); + case "1.28": + return new KubectlV28Layer(scope, "kubectllayer28"); } const minor = version.version.split('.')[1]; @@ -248,7 +251,7 @@ export class GenericClusterProvider implements ClusterProvider { if(!kubernetesVersion && !this.props.version) { throw new Error("Version was not specified by cluster builder or in cluster provider props, must be specified in one of these"); } - const version: eks.KubernetesVersion = kubernetesVersion || this.props.version || eks.KubernetesVersion.V1_27; + const version: eks.KubernetesVersion = kubernetesVersion || this.props.version || eks.KubernetesVersion.V1_28; const privateCluster = this.props.privateCluster ?? utils.valueFromContext(scope, constants.PRIVATE_CLUSTER, false); const endpointAccess = (privateCluster === true) ? eks.EndpointAccess.PRIVATE : eks.EndpointAccess.PUBLIC_AND_PRIVATE; diff --git a/lib/pipelines/code-pipeline.ts b/lib/pipelines/code-pipeline.ts index a1912dc6f..0d2f1eb54 100644 --- a/lib/pipelines/code-pipeline.ts +++ b/lib/pipelines/code-pipeline.ts @@ -441,7 +441,7 @@ class CodePipeline { input: codePipelineSource, installCommands: [ 'n stable', - 'npm install -g aws-cdk@2.99.1', + 'npm install -g aws-cdk@2.115.0', `cd ${path} && npm install`, ], commands: [`cd ${path}`, 'npm run build', 'npx cdk synth ' + app] diff --git a/lib/stacks/eks-blueprint-stack.ts b/lib/stacks/eks-blueprint-stack.ts index 33fa8a5da..060cd3a67 100644 --- a/lib/stacks/eks-blueprint-stack.ts +++ b/lib/stacks/eks-blueprint-stack.ts @@ -13,7 +13,7 @@ import {CreateKmsKeyProvider} from "../resource-providers/kms-key"; import { ArgoGitOpsFactory } from "../addons/argocd/argo-gitops-factory"; /* Default K8s version of EKS Blueprints */ -export const DEFAULT_VERSION = 1.27; +export const DEFAULT_VERSION = 1.28; export class EksBlueprintProps { /** @@ -240,7 +240,7 @@ export class EksBlueprint extends cdk.Stack { let version = blueprintProps.version; if (version == "auto") { - version = KubernetesVersion.V1_27; + version = KubernetesVersion.V1_28; } let kmsKeyResource: IKey | undefined = resourceContext.get(spi.GlobalResources.KmsKey); diff --git a/package.json b/package.json index 1b6c6e9f6..5617ccf30 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@aws-quickstart/eks-blueprints", - "version": "1.12.0", + "version": "1.13.0", "license": "Apache-2.0", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -18,57 +18,58 @@ "lint": "npx eslint . --ext .js,.jsx,.ts,.tsx" }, "devDependencies": { - "@types/dot-object": "^2.1.2", - "@types/jest": "^29.5.1", - "@types/js-yaml": "^4.0.5", - "@types/node": "^18.17.5", - "@types/semver": "^7.3.13", - "@types/uuid": "^9.0.1", - "@typescript-eslint/eslint-plugin": "^6.4.0", - "@typescript-eslint/parser": "^6.4.0", - "aws-cdk": "2.99.1", + "@types/dot-object": "^2.1.6", + "@types/jest": "^29.5.11", + "@types/js-yaml": "^4.0.9", + "@types/node": "^20.10.4", + "@types/semver": "^7.5.6", + "@types/uuid": "^9.0.7", + "@typescript-eslint/eslint-plugin": "^6.14.0", + "@typescript-eslint/parser": "^6.14.0", + "aws-cdk": "2.115.0", "copyfiles": "^2.4.1", - "eslint": "^8.38.0", - "jest": "^29.6.2", - "json-schema-to-typescript": "^13.0.1", + "eslint": "^8.55.0", + "jest": "^29.7.0", + "json-schema-to-typescript": "^13.1.1", "lint": "^1.1.2", - "ts-jest": "^29.1.0", - "ts-node": "^10.9.1", - "typedoc": "^0.25.1", - "typescript": "^5.2.2" + "ts-jest": "^29.1.1", + "ts-node": "^10.9.2", + "typedoc": "^0.25.4", + "typescript": "^5.3.3" }, "dependencies": { - "@aws-cdk/lambda-layer-kubectl-v25": "^2.0.3", - "@aws-cdk/lambda-layer-kubectl-v26": "^2.0.0", + "@aws-cdk/lambda-layer-kubectl-v26": "^2.0.1", "@aws-cdk/lambda-layer-kubectl-v27": "^2.0.0", - "@aws-sdk/client-eks": "^3.391.0", - "@aws-sdk/client-secrets-manager": "^3.391.0", - "@types/assert": "^1.5.6", - "@types/bcrypt": "^5.0.0", - "@types/lodash.clonedeep": "^4.5.7", - "@types/uuid": "^9.0.1", - "aws-cdk-lib": "2.99.1", + "@aws-cdk/lambda-layer-kubectl-v28": "^2.1.0", + "@aws-sdk/client-eks": "^3.470.0", + "@aws-sdk/client-secrets-manager": "^3.470.0", + "@types/assert": "^1.5.10", + "@types/bcrypt": "^5.0.2", + "@types/lodash.clonedeep": "^4.5.9", + "@types/uuid": "^9.0.7", + "aws-cdk-lib": "2.115.0", "bcrypt": "^5.1.1", - "constructs": "^10.2.33", + "constructs": "^10.3.0", "dot-object": "^2.1.4", "js-yaml": "4.1.0", "lodash": "4.17.21", - "reflect-metadata": "^0.1.13", - "semver": "^7.5.3", + "reflect-metadata": "^0.1.14", + "semver": "^7.5.4", "simple-base": "^1.0.0", "sync-request": "6.1.0", - "ts-deepmerge": "^6.0.3", + "ts-deepmerge": "^6.2.0", "ts-md5": "^1.3.1", - "tslog": "^4.9.1", - "uuid": "^9.0.0", - "yaml": "^2.2.1", - "zod": "^3.22.3" + "tslog": "^4.9.2", + "uuid": "^9.0.1", + "yaml": "^2.3.4", + "zod": "^3.22.4" }, "optionalDependencies": { - "@aws-cdk/lambda-layer-kubectl-v23": "^2.0.7", - "@aws-cdk/lambda-layer-kubectl-v24": "^2.0.202" + "@aws-cdk/lambda-layer-kubectl-v23": "^2.0.8", + "@aws-cdk/lambda-layer-kubectl-v24": "^2.0.242", + "@aws-cdk/lambda-layer-kubectl-v25": "^2.0.4" }, "overrides": { - "semver": "^7.5.3" + "semver": "^7.5.4" } } diff --git a/test/cluster-autoscaler.test.ts b/test/cluster-autoscaler.test.ts index 145aba37b..da4440e6b 100644 --- a/test/cluster-autoscaler.test.ts +++ b/test/cluster-autoscaler.test.ts @@ -8,7 +8,7 @@ test("Cluster autoscaler correctly is using correct defaults if EKS version is n const stack = blueprints.EksBlueprint.builder() .account('123456789').region('us-west-2') - .version(KubernetesVersion.V1_27) + .version(KubernetesVersion.V1_28) .addOns(new blueprints.ClusterAutoScalerAddOn()) .build(app, "ca-stack-127"); @@ -16,7 +16,7 @@ test("Cluster autoscaler correctly is using correct defaults if EKS version is n template.hasResource("Custom::AWSCDK-EKS-HelmChart", { Properties: { - Version: "9.29.0", + Version: "9.34.0", }, }); }); @@ -27,7 +27,7 @@ test("Cluster autoscaler correctly is using correct version for 1.26", () => { const stack = blueprints.EksBlueprint.builder() .account('123456789').region('us-west-2') - .version(KubernetesVersion.V1_26) + .version(KubernetesVersion.V1_27) .addOns(new blueprints.ClusterAutoScalerAddOn()) .build(app, "ca-stack-126"); @@ -35,7 +35,7 @@ test("Cluster autoscaler correctly is using correct version for 1.26", () => { template.hasResource("Custom::AWSCDK-EKS-HelmChart", { Properties: { - Version: "9.29.0", + Version: "9.33.0", }, }); }); diff --git a/test/clusterprovider.test.ts b/test/clusterprovider.test.ts index 636c33f1a..09a04652e 100644 --- a/test/clusterprovider.test.ts +++ b/test/clusterprovider.test.ts @@ -63,7 +63,7 @@ test("Generic cluster provider correctly registers managed node groups with inst const clusterProvider = blueprints.clusterBuilder() .withCommonOptions({ serviceIpv4Cidr: "10.43.0.0/16", - version: KubernetesVersion.V1_27 + version: KubernetesVersion.V1_28 }) .managedNodeGroup({ id: "mng1", @@ -105,7 +105,7 @@ test("Generic cluster provider correctly registers autoscaling node groups", () const app = new cdk.App(); const clusterProvider = blueprints.clusterBuilder() - .version(KubernetesVersion.V1_27) + .version(KubernetesVersion.V1_28) .autoscalingGroup({ id: "mng1", maxSize: 2, @@ -151,7 +151,7 @@ test("Generic cluster provider correctly registers autoscaling node groups with app.node.setContext("eks.default.instance-type", "m5.large"); const clusterProvider = blueprints.clusterBuilder() - .version(eks.KubernetesVersion.V1_27) + .version(eks.KubernetesVersion.V1_28) .autoscalingGroup({ id: "mng1", maxSize: 2, @@ -328,7 +328,7 @@ test("Kubernetes Version gets set correctly for \"auto\"", () => { .account('123456789').region('us-west-2') .version("auto").build(app, "stack-auto"); - expect(stack.getClusterInfo().version.version).toBe("1.27"); + expect(stack.getClusterInfo().version.version).toBe("1.28"); }); @@ -336,8 +336,8 @@ test("Kubernetes Version gets set correctly in NodeGroup", () => { const app = new cdk.App(); const stack = blueprints.EksBlueprint.builder() .account('123456789').region('us-west-2') - .clusterProvider(new MngClusterProvider({version: KubernetesVersion.V1_27})) + .clusterProvider(new MngClusterProvider({version: KubernetesVersion.V1_28})) .build(app, "stack-auto"); - expect(stack.getClusterInfo().version.version).toBe("1.27"); + expect(stack.getClusterInfo().version.version).toBe("1.28"); });