api7 / api7/aisix

GCS cloud_identity keyless: verify the real round-trip on a GKE/GCE runner (object_store ADC needs the metadata server)

Open
#573 1 comment 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

P1 real chain test
Dominant language
Rust
Stars
157
Forks
32
Avg merge
1h 25m
Merged PRs (30d)
145

Description

Context

#572 added keyless cloud_identity real-cloud smoke CI. The AWS keyless path passes end-to-end in CI: a GitHub-OIDC-assumed IAM role → AmazonS3Builder::from_env() reads the role's credentials from the environment → real keyless S3 round-trip. ✅

The GCS keyless path could not be exercised on the GitHub Actions runner. With google-github-actions/auth (Workload Identity Federation, default create_credentials_file: true), the runner's GOOGLE_APPLICATION_CREDENTIALS points at a WIF external_account credentials file. But object_store's GCS Application Default Credentials resolution went straight to the GCE metadata server instead:

Generic GCS error: Error performing token request: Error performing GET
http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/token?audience=...

A non-GCE GitHub runner has no metadata server, so the round-trip fails. This is an environment/tooling limitation, not a product bug: on a real GKE Workload Identity / GCE deployment the metadata server is present, which is exactly the path build_object_store_ambient(Gcs, …) (no service-account key → ADC) uses in production.

What's verified vs. not

  • ✅ GCS ambient builder constructs offline — unit test build_object_store_ambient_dispatches_gcs.
  • ✅ GCS credential_ref (static SA key) real round-trip — objstore-real-cloud.yml (#569), green against real GCS.
  • ⏳ GCS keyless (ADC via metadata) real round-trip — not exercisable on a non-GCE CI runner; needs a real GKE/GCE environment.

Ask

Run objstore_smoke_gcs_cloud_identity (already in crates/aisix-obs/src/sink/object_store.rs, gated on AISIX_E2E_OBJSTORE_CLOUDID_GCS_BUCKET) on a real GKE pod with Workload Identity (or a GCE VM with an attached service account) that has roles/storage.objectAdmin on the test bucket — there the ambient ADC hits the metadata server and the round-trip should green. Optionally investigate whether a newer object_store supports the WIF external_account file so it could run on a plain GitHub runner.

Refs: #572 (keyless cloud_identity CI), #552 (item 3), #549 (DP cloud_identity).

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in crates/aisix-obs/src/sink/object_store.rs at objstore_smoke_gcs_cloud_identity and review build_object_store_ambient_dispatches_gcs. Run the smoke test from a GKE pod with Workload Identity or a GCE VM with an attached service account, setting AISIX_E2E_OBJSTORE_CLOUDID_GCS_BUCKET and granting roles/storage.objectAdmin. Done means the real GCS keyless round-trip passes through the metadata server.

Written by the indexing model from the issue text.

Assessment

Tech stack
github-actions, google-cloud, kubernetes, rust
Domain
ci-cd, cloud, devops
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.