identity-translation
Skill139 starsChanged 6 months agoApache-2.0View on GitHub
Translates Amazon Elastic Kubernetes Service (EKS) IAM Roles for Service Accounts (IRSA) and Amazon EKS Pod Identity configurations into Google Kubernetes Engine (GKE) Workload Identity configurations. Maps Kubernetes ServiceAccounts (KSAs) to Google Service Accounts (GSAs). Use when remapping EKS service account role annotations or Pod Identity associations to GKE Workload Identity annotations. Don't use for cluster-level IAM pool setup or StorageClass remapping.
- Installs packages
1 other project uses a version of this.
Adopted by
Most recently taken up by
- geoffsdesk/portagetheir own version, first seen May 8, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- geoffsdesk/portage★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository45 other files it gives its agents.
- spanner-provisioningSkill
- ad-copywritingSkill
- brand-strategySkill
- platform-specsSkill
- trend-analysisSkill
- video-storytellingSkill
- visual-directionSkill
- ad-copywritingSkill
- brand-strategySkill
- platform-specsSkill
- trend-analysisSkill
- video-storytellingSkill
- visual-directionSkill
- code-reviewSkill
- documentationSkill
- idea-to-appSkill
- open-prSkill
- pre-commitSkill
- security-scanSkill
- unit-testsSkill
- modernize-dotnet-cloudrunSkill
- legacy-app-generatorSkill
- app-migration-executionSkill
- app-migration-orchestratorSkill
- network-translationSkill
- observability-translationSkill
- storage-translationSkill
- workload-translationSkill
- ingress2gatewaySkill
- eks-discoverySkill
- gke-landing-zoneSkill
- identity-translationSkill
- migration-assessmentSkill
- network-translationSkill
- observability-translationSkill
- platform-orchestratorSkill
- registry-migrationSkill
- storage-translationSkill
- validationSkill
- bigframes-bqmlSkill
- model-evaluationSkill
- pipeline-generatorSkill
- spark-lightning-optimizationSkill
- unified-model-registrySkill
- zero-copy-ingestionSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
13 rules. About 0 are common, 3 are distinctive, and 10 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
10
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 83
Verify that every EKS Kubernetes ServiceAccount (KSA) requiring cloud resource access has a corresponding Google Service Account (GSA) …
- Very specific: line 101
If validate_identity_map.py reports errors, take the following actions:
- Very specific: line 109
Add the missing mapping to identity-map.json:
- Very specific: line 134
Verify that ${HANDOFF_DIR} contains workload-handoff.json (or workload-handoff-namespace.json) and identity-map.json.
- Very specific: line 136
Verify that assets/schemas/identity-map.schema.json exists in the skill directory.
- Very specific: line 141
When translating each ServiceAccount manifest:
- Very specific: line 146
IRSA (Manifest annotation): If metadata.annotations exists and contains eks.amazonaws.com/role-arn:
- Distinctive: line 149
Remove all EKS-specific annotations:
- Very specific: line 152
EKS Pod Identity (Handoff cross-reference): If metadata.annotations does not exist or lacks eks.amazonaws.com/role-arn:
- Distinctive: line 161
Add the GKE Workload Identity annotation:
- Distinctive: line 162
If a source AWS IAM Role ARN resolves via step 2:
- Very specific: line 165
Add the annotation: iam.gke.io/gcp-service-account: <GSA_EMAIL>.
- Very specific: line 166
If no role ARN resolves, leave the ServiceAccount unannotated.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Identity translation
<!--
Disabling markdownlint MD029 to provide explicit ordering to avoid
confusing the LLM.
--><!-- markdownlint-disable MD029 --><!--
Disabling markdownlint MD030 to allow the list overflowing to numbers
>=10.
--><!-- markdownlint-disable MD030 -->Purpose
Automate the mapping and translation of application-level service account identities from Amazon Elastic Kubernetes Service (EKS) IRSA (IAM Roles for Service Accounts) and Amazon EKS Pod Identity to Google Kubernetes Engine (GKE) Workload Identity.
When to use this skill
Trigger on:
- "Translate EKS ServiceAccount annotations to GKE Workload Identity annotations"
- "Map AWS IRSA to GKE Workload Identity"
- "Translate EKS Pod Identity associations to GKE Workload Identity"
- "Generate Workload Identity mapping for Kubernetes ServiceAccounts in cluster production"
Prerequisites
python3version 3.10 or later- Install dependencies listed in
scripts/requirements.txt:pip install --require-hashes -r scripts/requirements.txt - Path to handoff directory containing
workload-handoff.json(orworkload-handoff-namespace.json) andidentity-map.json
Assets and references
The following schema files under assets/schemas/ define the JSON contracts
used by this skill:
identity-map.schema.json: Schema for validating ServiceAccount identity mappings.workload-handoff.schema.json: Schema for cluster-level workload handoff specifications.workload-handoff-namespace.schema.json: Schema for namespace-level workload handoff specifications.
The following reference document under references/ provides identity mapping
guidance:
- references/irsa_to_wif_mapping.md: Guidance for translating AWS IRSA roles to GKE Workload Identity Federation (WIF).
The following dependency files under scripts/ are used by this skill:
scripts/requirements.in: Input dependencies for python validation scripts.scripts/requirements.txt: Hashed dependency lockfile for python validation scripts. Install using:pip install --require-hashes -r scripts/requirements.txt
Procedure
Step 1 — Validate identity mapping completeness
Verify that every EKS Kubernetes ServiceAccount (KSA) requiring cloud resource
access has a corresponding Google Service Account (GSA) email mapping in
identity-map.json:
[!IMPORTANT]
Point
${HANDOFF_DIR}to a clean, specific directory for the current migration run (for example, containing only the relevantworkload-handoff.jsonandidentity-map.json). If multiple or archived migration runs exist in subdirectories, validation fails to prevent ambiguous mappings.
python3 scripts/validate_identity_map.py --handoff-dir "${HANDOFF_DIR:-.}"Failure handling and remediation
If validate_identity_map.py reports errors, take the following actions:
- Missing mappings (
Verification failed!):- Locate unmapped ServiceAccounts in the error output (for example,
<namespace>/<sa-name> (requires: <irsa-role-arn>)). - Request the target Google Service Account email from the platform engineer, or create a dedicated GSA with the necessary Google Cloud IAM roles.
Add the missing mapping to
identity-map.json:{ "source": "<irsa-role-arn>", "target": "<gsa-name>@<project-id>.iam.gserviceaccount.com" }- Re-run
validate_identity_map.pyto confirm all mappings resolve.
- Locate unmapped ServiceAccounts in the error output (for example,
- Conflicting IRSA Role ARNs for a ServiceAccount:
- Multiple workloads in the same namespace share a ServiceAccount name but specify conflicting IRSA Role ARNs.
- GKE Workload Identity annotations attach per ServiceAccount, not per Pod or workload.
- Refactor the workloads in the source cluster to use distinct ServiceAccounts, or standardize them to share a single IAM role.
- Conflicting duplicate source ARNs in
identity-map.json:- The same AWS IAM Role ARN maps to multiple differing GSA target emails.
- Edit
identity-map.jsonto resolve the conflict so each source role unambiguously maps to a single target GSA.
- Missing schema or handoff files (
FileNotFoundError):- Verify that
${HANDOFF_DIR}containsworkload-handoff.json(orworkload-handoff-namespace.json) andidentity-map.json. - Verify that
assets/schemas/identity-map.schema.jsonexists in the skill directory.
- Verify that
Step 2 — Translate workload annotations
When translating each ServiceAccount manifest:
- Identify any
ServiceAccountresource with itsnamespace(defaulting todefaultif unspecified) andname. - Resolve the source AWS IAM Role ARN:
- IRSA (Manifest annotation): If
metadata.annotationsexists and containseks.amazonaws.com/role-arn:- Extract the AWS IAM Role ARN from
eks.amazonaws.com/role-arn. - Remove all EKS-specific annotations:
eks.amazonaws.com/role-arneks.amazonaws.com/sts-regional-endpoints
- Extract the AWS IAM Role ARN from
- EKS Pod Identity (Handoff cross-reference): If
metadata.annotationsdoes not exist or lackseks.amazonaws.com/role-arn:- Cross-reference
workload-handoff.json(orworkload-handoff-namespace.json) matching(namespace, service_account)againstworkloads[].dependencies.service_account. - Extract
dependencies.irsa_role_arn(upstreameks-discoveryresolves both IRSA annotations and EKS Pod Identity associations into this field).
- Cross-reference
- IRSA (Manifest annotation): If
- Add the GKE Workload Identity annotation:
- If a source AWS IAM Role ARN resolves via step 2:
- Retrieve
<GSA_EMAIL>from the target mapping of that ARN inidentity-map.json. - Add the annotation:
iam.gke.io/gcp-service-account: <GSA_EMAIL>.
- Retrieve
- If no role ARN resolves, leave the
ServiceAccountunannotated.
- If a source AWS IAM Role ARN resolves via step 2:
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

