Skip to content

Override CARM Account IDΒ #2647

@starlightromero

Description

@starlightromero

Is your feature request related to a problem?

When trying to manage an application and it's dependencies both inside and outside of EKS, it may be necessary to create AWS resources in both the EKS cluster's AWS account (222222222222) and a separate application-focused AWS account (111111111111).

For example when having an application with the following resources:

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
- iam-policy.yaml
- iam-role.yaml
- secretsmanager-secret.yaml
- secret-store.yaml
- external-secret.yaml
- hpa.yaml
- pdb.yaml
- service.yaml
- deployment.yaml
- ingress.yaml
- certificate.yaml
- network-policy-default-deny-all.yaml
- network-policy-allow-ingress.yaml
- network-policy-allow-egress.yaml
- ec2-security-group.yaml

Deployed in a namespace:

apiVersion: v1
kind: Namespace
metadata:
  name: dev-app
  labels:
    app.kubernetes.io/name: app
    app.kubernetes.io/environment: dev
    app.kubernetes.io/owner: owner-a
  annotations:
    services.k8s.aws/team-id: team-a

With the following team map:

apiVersion: v1
kind: ConfigMap
metadata:
  name: ack-role-team-map
  namespace: ack-system
data:
  acm.team-a arn:aws:iam::111111111111:role/med-prod-ack-acm-controller
  acmpca.team-a: arn:aws:iam::111111111111:role/med-prod-ack-acmpca-controller
  ec2.team-a: arn:aws:iam::111111111111:role/med-prod-ack-ec2-controller
  ecr.team-a: arn:aws:iam::111111111111:role/med-prod-ack-ecr-controller
  eks.team-a: arn:aws:iam::111111111111:role/med-prod-ack-eks-controller
  iam.team-a: arn:aws:iam::111111111111:role/med-prod-ack-iam-controller
  kms.team-a: arn:aws:iam::111111111111:role/med-prod-ack-kms-controller
  rds.team-a: arn:aws:iam::111111111111:role/med-prod-ack-rds-controller
  route53.team-a: arn:aws:iam::111111111111:role/med-prod-ack-route53-controller
  s3.team-a: arn:aws:iam::111111111111:role/med-prod-ack-s3-controller
  secretsmanager.team-a: arn:aws:iam::111111111111:role/med-prod-ack-secretsmanager-controller
  sqs.team-a: arn:aws:iam::111111111111:role/med-prod-ack-sqs-controller

A resource such as a SecretsManager Secret should be in AWS account 111111111111 where developers have permission to access and modify secrets. But a resource such as an EC2 Security Group used for Pod Security Groups should be in the EKS cluster's account 222222222222

Describe the solution you'd like

It would be ideal if there was a way to override the CARM and use the default roles/policies in the default account.

apiVersion: ec2.services.k8s.aws/v1alpha1
kind: SecurityGroup
metadata:
  name: dev-app
  namespace: dev-app
  annotations:
    services.k8s.aws/override: 222222222222
spec:
  ...

Please feel free to choose a better annotation setup.

Describe alternatives you've considered

The current workaround to this is to provision the EC2 Security Group in a different namespace, then the SecurityGroupPolicy in the application namespace.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions