Skip to content

feat: declaratively provision the EKS-test AWS identity (OIDC role vs static key) #2326

Description

@devantler

🤖 Generated by the Daily AI Assistant

Child 2 of #2324. Declaratively provision the EKS-test AWS identity. Depends on child #1 (AWS provider + aws tenant).

Scope

In the devantler-tech/aws repo deploy/, declare (as Crossplane managed resources) a least-privilege identity for the ksail EKS CI system test — enough for eksctl to create and delete an EKS cluster (+ nodegroup, VPC/CFN as eksctl needs) and for the GitOps-on-EKS smoke (Flux/ArgoCD install themselves via Helm, so cluster-admin on the freshly created cluster suffices).

Decision point — surface to the maintainer in the PR

  • (preferred) GitHub OIDC role: an IAM OIDC identity provider for token.actions.githubusercontent.com + an IAM Role with a trust policy scoped to the ksail repo + the EKS workflow, assumed via OIDC at runtime → no long-lived secret stored anywhere. Most secure; changes child Update Raspbian kernel on nomad02 #3 to "configure the OIDC trust" instead of syncing a secret.
  • (fallback) static access key: an IAM user + access key surfaced as a Crossplane connection secret, to be delivered to CI by child Update Raspbian kernel on nomad02 #3. Simpler but a long-lived credential.

Acceptance criteria

  • IAM policy is least-privilege and reviewed (no *:*); scoped/bounded to ephemeral EKS test clusters (name prefix / tag condition where feasible).
  • Identity provisioned declaratively + reconciles clean; chosen delivery mechanism (OIDC role ARN or connection secret) is available to child Update Raspbian kernel on nomad02 #3.
  • Cost guardrail noted: the test must create→delete within the run; document expected spend.

Blocked by #1. Blocks #3. Rough size: M.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    Status
    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions