From fac690baef9071ce1d839327678f2d3bd6f985bc Mon Sep 17 00:00:00 2001 From: Andres Felipe Marcelo Date: Thu, 10 Jul 2025 21:25:29 -0500 Subject: [PATCH 1/7] update regions --- eksctl.yaml | 2 +- setups/config.yaml | 2 +- terraform/variables.tf | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/eksctl.yaml b/eksctl.yaml index 68d3b755..b2608ca1 100644 --- a/eksctl.yaml +++ b/eksctl.yaml @@ -2,7 +2,7 @@ apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: cnoe-ref-impl - region: us-west-2 + region: us-east-1 version: "1.28" managedNodeGroups: - name: managed-ng-1 diff --git a/setups/config.yaml b/setups/config.yaml index a5249042..6689213c 100644 --- a/setups/config.yaml +++ b/setups/config.yaml @@ -5,7 +5,7 @@ repo_url: "https://github.com/cnoe-io/reference-implementation-aws" tags: env: "dev" project: "cnoe" -region: "us-west-2" +region: "us-east-1" # The name of the EKS cluster you are installing this under. cluster_name: "cnoe-ref-impl" # Set this to false if you want to manage DNS somewhere else. e.g. manually. diff --git a/terraform/variables.tf b/terraform/variables.tf index 1845ac81..c597dfff 100644 --- a/terraform/variables.tf +++ b/terraform/variables.tf @@ -16,7 +16,7 @@ variable "tags" { variable "region" { description = "Region" type = string - default = "us-west-2" + default = "us-east-1" } variable "cluster_name" { From 1cdedacbfb12bc3bbda51bdd91d0edd02758e85a Mon Sep 17 00:00:00 2001 From: Andres Felipe Marcelo Date: Thu, 10 Jul 2025 21:30:27 -0500 Subject: [PATCH 2/7] updating configs --- setups/config.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/setups/config.yaml b/setups/config.yaml index 6689213c..7dafce95 100644 --- a/setups/config.yaml +++ b/setups/config.yaml @@ -1,6 +1,6 @@ # This is the GITHUB URL where Kubernetes manifests are stored. # If you forked this repo, you will need to update this. -repo_url: "https://github.com/cnoe-io/reference-implementation-aws" +repo_url: "https://github.com/educational-idp-MR/reference-implementation-aws" # Tags to apply to AWS resources tags: env: "dev" @@ -11,9 +11,9 @@ cluster_name: "cnoe-ref-impl" # Set this to false if you want to manage DNS somewhere else. e.g. manually. enable_dns_management: true # If using external DNS, specify the Route53 hosted zone ID. Required if enable_dns_management is set to true -hosted_zone_id: Z0REPLACEME +hosted_zone_id: Z0616976M5JW04WV40MC # if external DNS is not used, this value must be provided. -domain_name: sudbomain.domain.root +# domain_name: sudbomain.domain.root # If set to true, we will store secrets to AWS Secrets Manager, then sync it to the cluster using External Secrets Operator. enable_external_secret: true From d1f52365e5d5103280dbba81489028a39f453d35 Mon Sep 17 00:00:00 2001 From: Andres Felipe Marcelo Date: Thu, 10 Jul 2025 21:50:14 -0500 Subject: [PATCH 3/7] add timeout for creating LB --- terraform/aws-load-balancer.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/terraform/aws-load-balancer.tf b/terraform/aws-load-balancer.tf index 262ad51d..70c53502 100644 --- a/terraform/aws-load-balancer.tf +++ b/terraform/aws-load-balancer.tf @@ -24,7 +24,7 @@ resource "kubectl_manifest" "application_argocd_aws_load_balancer_controller" { ) provisioner "local-exec" { - command = "kubectl wait --for=jsonpath=.status.health.status=Healthy -n argocd application/aws-load-balancer-controller" + command = "kubectl wait --for=jsonpath=.status.health.status=Healthy -n argocd application/aws-load-balancer-controller --timeout=400s" interpreter = ["/bin/bash", "-c"] } From 48102705b6e170bcb6a35bd4f1b3ea52d5f3165a Mon Sep 17 00:00:00 2001 From: Andres Felipe Marcelo Date: Mon, 14 Jul 2025 20:32:04 -0500 Subject: [PATCH 4/7] update eks infra --- eksctl.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/eksctl.yaml b/eksctl.yaml index b2608ca1..d055686a 100644 --- a/eksctl.yaml +++ b/eksctl.yaml @@ -3,13 +3,13 @@ kind: ClusterConfig metadata: name: cnoe-ref-impl region: us-east-1 - version: "1.28" + version: "1.29" managedNodeGroups: - name: managed-ng-1 - instanceType: m5.large - minSize: 3 + instanceType: t3.medium + minSize: 2 maxSize: 6 - desiredCapacity: 4 + desiredCapacity: 3 volumeSize: 100 ssh: allow: false @@ -22,6 +22,6 @@ iam: withOIDC: true addons: - name: aws-ebs-csi-driver - version: "v1.28.0-eksbuild.1" + version: "v1.29.0-eksbuild.1" attachPolicyARNs: - arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy \ No newline at end of file From b9c78d9c9cd9225f185ee6053eaa4ddbeaad2eb1 Mon Sep 17 00:00:00 2001 From: Andres Felipe Marcelo Date: Mon, 14 Jul 2025 21:07:19 -0500 Subject: [PATCH 5/7] add crossplane and ec2 resources --- .windsurf/rules/cascade-cnoe-rules.md | 21 ++++ docs/ec2-usage-guide.md | 104 ++++++++++++++++++ examples/ec2/ec2-instance-claim.yaml | 20 ++++ packages/backstage/ec2-component.yaml | 42 +++++++ .../backstage/templates/ec2-template.yaml | 94 ++++++++++++++++ .../base/ec2-composition.yaml | 58 ++++++++++ .../crossplane-compositions/base/ec2-xrd.yaml | 68 ++++++++++++ .../base/kustomization.yaml | 2 + packages/crossplane/base/kustomization.yaml | 1 + .../crossplane/base/provider-aws-ec2.yaml | 10 ++ 10 files changed, 420 insertions(+) create mode 100644 .windsurf/rules/cascade-cnoe-rules.md create mode 100644 docs/ec2-usage-guide.md create mode 100644 examples/ec2/ec2-instance-claim.yaml create mode 100644 packages/backstage/ec2-component.yaml create mode 100644 packages/backstage/templates/ec2-template.yaml create mode 100644 packages/crossplane-compositions/base/ec2-composition.yaml create mode 100644 packages/crossplane-compositions/base/ec2-xrd.yaml create mode 100644 packages/crossplane/base/provider-aws-ec2.yaml diff --git a/.windsurf/rules/cascade-cnoe-rules.md b/.windsurf/rules/cascade-cnoe-rules.md new file mode 100644 index 00000000..ab2ddcec --- /dev/null +++ b/.windsurf/rules/cascade-cnoe-rules.md @@ -0,0 +1,21 @@ +--- +trigger: always_on +--- + +# Reglas a seguir + +## Contexto +Este es un proyecto basado en Cloud Native Operational Excellence (CNOE) que pretende disponibilizar un Internal Developer Platform a estudiantes de universidad, de forma que puedan crear componentes o laboratorios virtuales con componentes en aws de forma sencilla y se especialicen en el codigo y en el funcionamiento mas no en la instalacion y configuracion. + +## Planeacion +Antes de hacer cualquier cambio, realiza un plan a seguir para cumplir el objetivo que te pido, ten en cuenta TODO el contexto del proyecto y evalua la mejor alternativa priorizando que funcione y calidad de codigo. + +## Conocimiento + +- Eres un experto en Kubernetes, Argocd, Backstage, crossplane y AWS, debes seguir las documentaciones y estandares propuestos por cada una de estas tecnologias, si no sabes algo, averigualo en la web o consultalo directamente. + +## Estandares +- No inventes cosas, evalua todo el proyecto. +- Prioriza la simplicidad +- Sigue los mejores estandares de codigo +- explica las cosas que estas haciendo y da enlaces a los archivos que vas a generar \ No newline at end of file diff --git a/docs/ec2-usage-guide.md b/docs/ec2-usage-guide.md new file mode 100644 index 00000000..11639e85 --- /dev/null +++ b/docs/ec2-usage-guide.md @@ -0,0 +1,104 @@ +# Guía de uso: Instancias EC2 en CNOE AWS + +Esta guía describe cómo crear y gestionar instancias EC2 en AWS utilizando el Internal Developer Platform basado en CNOE. + +## Requisitos previos + +- Acceso al clúster de Kubernetes donde se ha desplegado CNOE +- Conocimiento básico de AWS y EC2 +- Permisos necesarios para crear recursos en el namespace designado + +## Creación de una instancia EC2 + +Para crear una instancia EC2, es necesario crear un archivo YAML con el recurso `EC2Instance`. A continuación se muestra un ejemplo: + +```yaml +apiVersion: aws.cnoe.io/v1alpha1 +kind: EC2Instance +metadata: + name: mi-instancia + namespace: tu-namespace +spec: + instanceName: nombre-instancia-ec2 + instanceType: t2.micro + ami: ami-0c55b159cbfafe1f0 # Amazon Linux 2 AMI (ajustar según la región) + subnet: subnet-12345678 # Reemplazar con el ID de subnet real + securityGroup: sg-12345678 # Reemplazar con el ID de security group real + keyName: nombre-clave-ssh # Reemplazar con el nombre de clave SSH + tags: + Environment: desarrollo + Project: mi-proyecto + compositionRef: + name: xec2instances.aws.cnoe.io + writeConnectionSecretToRef: + name: mi-instancia-ec2-details + namespace: tu-namespace +``` + +### Parámetros importantes + +| Parámetro | Descripción | Obligatorio | +|-----------|-------------|-------------| +| instanceName | Nombre para la instancia EC2 | Sí | +| instanceType | Tipo de instancia EC2 (t2.micro, t3.small, etc.) | No (por defecto: t2.micro) | +| ami | ID de la Amazon Machine Image (AMI) | No (por defecto: Amazon Linux 2) | +| subnet | ID de la subred VPC | Sí | +| securityGroup | ID del grupo de seguridad | No | +| keyName | Nombre del par de claves SSH | No | +| tags | Etiquetas para aplicar a la instancia | No | + +## Despliegue de la instancia EC2 + +Una vez creado el archivo YAML, puedes desplegar la instancia utilizando kubectl: + +```bash +kubectl apply -f mi-instancia-ec2.yaml +``` + +## Verificación del estado + +Para verificar el estado de tu instancia EC2: + +```bash +kubectl get ec2instances -n tu-namespace +``` + +Para obtener información detallada: + +```bash +kubectl describe ec2instance mi-instancia -n tu-namespace +``` + +## Acceso a la información de conexión + +Los detalles de conexión se almacenarán en el secreto especificado en `writeConnectionSecretToRef`: + +```bash +kubectl get secret mi-instancia-ec2-details -n tu-namespace -o yaml +``` + +## Eliminación de la instancia + +Para eliminar la instancia EC2: + +```bash +kubectl delete ec2instance mi-instancia -n tu-namespace +``` + +## Resolución de problemas + +Si encuentras problemas al crear o gestionar instancias EC2, comprueba: + +1. Los logs de los controladores Crossplane +2. El estado del recurso personalizado +3. Asegúrate de que Crossplane tiene los permisos IAM necesarios para crear instancias EC2 + +```bash +kubectl logs -n crossplane-system -l app=crossplane +``` + +## Limitaciones + +- Las instancias EC2 se crean en la región especificada en la composición (por defecto: us-west-2) +- Se requiere una subnet existente para desplegar la instancia +- La eliminación de la instancia EC2 puede tardar algunos minutos en reflejarse en AWS diff --git a/examples/ec2/ec2-instance-claim.yaml b/examples/ec2/ec2-instance-claim.yaml new file mode 100644 index 00000000..e9f9fc9c --- /dev/null +++ b/examples/ec2/ec2-instance-claim.yaml @@ -0,0 +1,20 @@ +apiVersion: aws.cnoe.io/v1alpha1 +kind: EC2Instance +metadata: + name: ejemplo-instancia + namespace: default +spec: + instanceName: ejemplo-instancia-ec2 + instanceType: t2.micro + ami: ami-0c55b159cbfafe1f0 # Amazon Linux 2 AMI (ajusta según tu región) + subnet: subnet-12345678 # Reemplazar con el ID de subnet real + securityGroup: sg-12345678 # Reemplazar con el ID de security group real + keyName: mi-clave-ssh # Reemplazar con el nombre de tu clave SSH + tags: + Environment: desarrollo + Project: cnoe-aws + compositionRef: + name: xec2instances.aws.cnoe.io + writeConnectionSecretToRef: + name: ec2-connection-details + namespace: default diff --git a/packages/backstage/ec2-component.yaml b/packages/backstage/ec2-component.yaml new file mode 100644 index 00000000..c5eb9174 --- /dev/null +++ b/packages/backstage/ec2-component.yaml @@ -0,0 +1,42 @@ +apiVersion: backstage.io/v1alpha1 +kind: Component +metadata: + name: aws-ec2-instance + description: Componente para crear instancias EC2 en AWS + annotations: + backstage.io/kubernetes-label-selector: 'aws.cnoe.io/service=ec2' + backstage.io/techdocs-ref: dir:. + tags: + - aws + - ec2 + - compute + - cloud +spec: + type: service + lifecycle: experimental + owner: cnoe-team + system: aws-resources + dependsOn: [] + providesApis: + - aws-ec2-api +--- +apiVersion: backstage.io/v1alpha1 +kind: API +metadata: + name: aws-ec2-api + description: API para gestionar instancias EC2 en AWS +spec: + type: kubernetes + lifecycle: experimental + owner: cnoe-team + definition: + $text: | + apiVersion: aws.cnoe.io/v1alpha1 + kind: EC2Instance + metadata: + name: example + spec: + instanceName: string + instanceType: string + ami: string + subnet: string diff --git a/packages/backstage/templates/ec2-template.yaml b/packages/backstage/templates/ec2-template.yaml new file mode 100644 index 00000000..d80b0e28 --- /dev/null +++ b/packages/backstage/templates/ec2-template.yaml @@ -0,0 +1,94 @@ +apiVersion: scaffolder.backstage.io/v1beta3 +kind: Template +metadata: + name: aws-ec2-instance-template + title: Crear Instancia EC2 en AWS + description: Crea una instancia EC2 en AWS usando Crossplane + tags: + - aws + - ec2 + - recommended + - cnoe +spec: + owner: cnoe-team + type: service + parameters: + - title: Información de la Instancia EC2 + required: + - instanceName + - instanceType + - subnet + properties: + instanceName: + title: Nombre de la Instancia + type: string + description: Nombre para identificar la instancia EC2 + ui:autofocus: true + instanceType: + title: Tipo de Instancia + type: string + description: Tipo de instancia EC2 (capacidad de CPU y memoria) + default: t2.micro + enum: + - t2.micro + - t2.small + - t3.micro + - t3.small + ami: + title: Amazon Machine Image (AMI) + type: string + description: ID de la imagen a utilizar (si se deja vacío, se usará la AMI por defecto) + subnet: + title: ID de Subnet + type: string + description: ID de la subnet VPC donde se desplegará la instancia + securityGroup: + title: Grupo de Seguridad + type: string + description: ID del grupo de seguridad (opcional) + keyName: + title: Par de Claves SSH + type: string + description: Nombre del par de claves para acceso SSH (opcional) + - title: Etiquetas + properties: + environment: + title: Entorno + type: string + default: desarrollo + enum: + - desarrollo + - pruebas + - produccion + project: + title: Proyecto + type: string + description: Nombre del proyecto asociado + steps: + - id: createEC2Claim + name: Crear Claim de Instancia EC2 + action: fetch:template + input: + url: ./templates/ec2-instance-claim + values: + instanceName: ${{ parameters.instanceName }} + instanceType: ${{ parameters.instanceType }} + ami: ${{ parameters.ami }} + subnet: ${{ parameters.subnet }} + securityGroup: ${{ parameters.securityGroup }} + keyName: ${{ parameters.keyName }} + environment: ${{ parameters.environment }} + project: ${{ parameters.project }} + - id: publishEC2 + name: Publicar Instancia EC2 + action: kubernetes:apply + input: + manifests: + - ${{ steps.createEC2Claim.output.ec2claim }} + output: + links: + - title: Monitorear Instancia EC2 + url: ${{ steps.createEC2Claim.output.links.monitorUrl }} + - title: Ver en Backstage + icon: backstage + entityRef: ${{ steps.createEC2Claim.output.entityRef }} diff --git a/packages/crossplane-compositions/base/ec2-composition.yaml b/packages/crossplane-compositions/base/ec2-composition.yaml new file mode 100644 index 00000000..885d45b7 --- /dev/null +++ b/packages/crossplane-compositions/base/ec2-composition.yaml @@ -0,0 +1,58 @@ +apiVersion: apiextensions.crossplane.io/v1 +kind: Composition +metadata: + name: xec2instances.aws.cnoe.io + labels: + provider: aws + service: ec2 +spec: + compositeTypeRef: + apiVersion: aws.cnoe.io/v1alpha1 + kind: XEC2Instance + resources: + - name: ec2instance + base: + apiVersion: ec2.aws.upbound.io/v1beta1 + kind: Instance + spec: + forProvider: + region: us-west-2 + instanceType: t2.micro + tags: + Name: default-instance + associate_public_ip_address: true + providerConfigRef: + name: provider-aws-config + patches: + - fromFieldPath: spec.instanceName + toFieldPath: metadata.name + - fromFieldPath: spec.instanceName + toFieldPath: spec.forProvider.tags.Name + - fromFieldPath: spec.instanceType + toFieldPath: spec.forProvider.instanceType + - fromFieldPath: spec.ami + toFieldPath: spec.forProvider.ami + - fromFieldPath: spec.subnet + toFieldPath: spec.forProvider.subnetId + - fromFieldPath: spec.securityGroup + toFieldPath: spec.forProvider.vpcSecurityGroupIds[0] + policy: + fromFieldPath: Required + - fromFieldPath: spec.keyName + toFieldPath: spec.forProvider.keyName + policy: + fromFieldPath: Required + - fromFieldPath: spec.tags + toFieldPath: spec.forProvider.tags + policy: + mergeOptions: + keepMapValues: true + connectionDetails: + - fromConnectionSecretKey: id + name: instanceId + - fromConnectionSecretKey: public_ip + name: publicIp + - fromConnectionSecretKey: private_ip + name: privateIp + - fromConnectionSecretKey: state + name: state diff --git a/packages/crossplane-compositions/base/ec2-xrd.yaml b/packages/crossplane-compositions/base/ec2-xrd.yaml new file mode 100644 index 00000000..4c53395e --- /dev/null +++ b/packages/crossplane-compositions/base/ec2-xrd.yaml @@ -0,0 +1,68 @@ +apiVersion: apiextensions.crossplane.io/v1 +kind: CompositeResourceDefinition +metadata: + name: xec2instances.aws.cnoe.io +spec: + group: aws.cnoe.io + names: + kind: XEC2Instance + plural: xec2instances + claimNames: + kind: EC2Instance + plural: ec2instances + versions: + - name: v1alpha1 + served: true + referenceable: true + schema: + openAPIV3Schema: + type: object + properties: + spec: + type: object + properties: + instanceName: + type: string + description: "Name for the EC2 instance" + instanceType: + type: string + description: "AWS EC2 instance type, e.g., t2.micro, t3.small, etc." + default: "t2.micro" + ami: + type: string + description: "Amazon Machine Image ID to use for the instance" + default: "ami-0c55b159cbfafe1f0" # Amazon Linux 2 AMI (adjust as needed) + subnet: + type: string + description: "VPC Subnet ID where the instance will be launched" + securityGroup: + type: string + description: "Security Group ID for the instance" + default: "" + keyName: + type: string + description: "SSH key pair name for accessing the instance" + default: "" + tags: + type: object + description: "Tags to apply to the EC2 instance" + additionalProperties: + type: string + required: + - instanceName + - subnet + status: + type: object + properties: + instanceId: + type: string + description: "ID of the created EC2 instance" + publicIp: + type: string + description: "Public IP address of the instance (if available)" + privateIp: + type: string + description: "Private IP address of the instance" + state: + type: string + description: "Current state of the EC2 instance" diff --git a/packages/crossplane-compositions/base/kustomization.yaml b/packages/crossplane-compositions/base/kustomization.yaml index 3f1ca64d..bf0a6bdf 100644 --- a/packages/crossplane-compositions/base/kustomization.yaml +++ b/packages/crossplane-compositions/base/kustomization.yaml @@ -1,3 +1,5 @@ namespace: crossplane-system resources: - https://github.com/awslabs/crossplane-on-eks/compositions/upbound-aws-provider/s3 + - ec2-xrd.yaml + - ec2-composition.yaml diff --git a/packages/crossplane/base/kustomization.yaml b/packages/crossplane/base/kustomization.yaml index 8aac2766..83fa913e 100644 --- a/packages/crossplane/base/kustomization.yaml +++ b/packages/crossplane/base/kustomization.yaml @@ -2,3 +2,4 @@ namespace: crossplane-system resources: - provider-aws.yaml - provider-aws-config.yaml + - provider-aws-ec2.yaml diff --git a/packages/crossplane/base/provider-aws-ec2.yaml b/packages/crossplane/base/provider-aws-ec2.yaml new file mode 100644 index 00000000..1dad8c31 --- /dev/null +++ b/packages/crossplane/base/provider-aws-ec2.yaml @@ -0,0 +1,10 @@ +apiVersion: pkg.crossplane.io/v1 +kind: Provider +metadata: + name: provider-aws-ec2 + annotations: + argocd.argoproj.io/sync-wave: "10" +spec: + package: xpkg.upbound.io/upbound/provider-aws-ec2:v0.41.0 + controllerConfigRef: + name: provider-aws-config From 86704dff81e344d01332b0b2836f90166e46771a Mon Sep 17 00:00:00 2001 From: Andres Felipe Marcelo Date: Mon, 14 Jul 2025 21:14:47 -0500 Subject: [PATCH 6/7] add registration of template --- .../backstage/dev/cm-backstage-config.yaml | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/packages/backstage/dev/cm-backstage-config.yaml b/packages/backstage/dev/cm-backstage-config.yaml index 03950ed6..309ef64b 100644 --- a/packages/backstage/dev/cm-backstage-config.yaml +++ b/packages/backstage/dev/cm-backstage-config.yaml @@ -97,6 +97,16 @@ data: scaffolder: # see https://backstage.io/docs/features/software-templates/configuration for software template options + defaultAuthor: + name: CNOE Team + email: cnoe@example.com + defaultCommitMessage: 'Creando recursos AWS a través de CNOE' + # Registro de los templates personalizados + registry: + - type: file + target: /opt/app-root/src/packages/backend/templates/ec2-template.yaml + rules: + - allow: [Template] catalog: import: @@ -108,6 +118,16 @@ data: # Examples from a public GitHub repository. - type: url target: https://github.com/awslabs/backstage-templates-on-eks/blob/main/catalog-info.yaml + # Registrar nuestro componente de EC2 + - type: file + target: /opt/app-root/src/packages/backstage/ec2-component.yaml + rules: + - allow: [Component, API] + # Registrar nuestro template de EC2 + - type: file + target: /opt/app-root/src/packages/backstage/templates/ec2-template.yaml + rules: + - allow: [Template] ## Uncomment these lines to add an example org # - type: url # target: https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/acme-corp.yaml From 67c93c8b9ee91aaf2ce77e94e6724aaa2caa7fc4 Mon Sep 17 00:00:00 2001 From: Andres Felipe Marcelo Date: Mon, 14 Jul 2025 21:36:36 -0500 Subject: [PATCH 7/7] downgrade eks version --- eksctl.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eksctl.yaml b/eksctl.yaml index d055686a..4c5c5b0f 100644 --- a/eksctl.yaml +++ b/eksctl.yaml @@ -3,7 +3,7 @@ kind: ClusterConfig metadata: name: cnoe-ref-impl region: us-east-1 - version: "1.29" + version: "1.28" managedNodeGroups: - name: managed-ng-1 instanceType: t3.medium @@ -22,6 +22,6 @@ iam: withOIDC: true addons: - name: aws-ebs-csi-driver - version: "v1.29.0-eksbuild.1" + version: "v1.28.0-eksbuild.1" attachPolicyARNs: - arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy \ No newline at end of file