Skip to main content

ingress2gateway

Automates migrating legacy GKE Ingress resources to the modern Gateway API. Use when migrating legacy GKE or NGINX Ingress resources to GKE Gateway API specifications.

Source facts

Repository
GoogleCloudPlatform/cloud-solutions
Last source activity
September 1, 2026 at 14:13
Detected SKILL.md language
English
Stars
139
Forks
43

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
15 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
ingress2gateway
description
Automates migrating legacy GKE Ingress resources to the modern Gateway API. Use when migrating legacy GKE or NGINX Ingress resources to GKE Gateway API specifications.
# Skill name: ingress2gateway ## Intent and objective Automate the discovery, analysis, risk-profiling, and translation of legacy GKE and NGINX Ingress resources into native GKE Gateway API specifications using the `ingress2gateway` tool. ### Activation criteria - **Use when:** Migrating legacy GKE or NGINX Ingress manifests to native GKE Gateway API specifications (Gateway, HTTPRoute) ## Prerequisites and sandbox configuration ### 1. Environment sandbox specification This skill runs in a local sandbox environment with the following specifications: - **Type:** `local-sandbox` - **Python Version:** `>=3.10` - **Virtual Environment Path:** `.agent/skills/ingress2gateway/scripts/.venv` - **Requirements Lockfile:** `.agent/skills/ingress2gateway/scripts/requirements.txt` ### 2. Host binary constraints (prerequisites validation) Before execution, verify the following host binary constraints: - **python3:** Must be version `>=3.10` (check using `python3 --version`). - **gcloud:** Required to handle identity challenges, project queries, and GKE cluster authentication (check using `gcloud --version`). - **kubectl:** Must be version `>=1.30` (check using `kubectl version --client -o json`). Required to interact with GKE 1.30+ compatible APIs. ### 3. Secure outbound network allowlists (egress guardrails) The sandbox requires outbound HTTPS access to the following domains: - `github.com`: To verify network download access to the `ingress2gateway` repository releases without downloading assets. - `*.googleapis.com`: To authenticate Google Cloud identities and communicate with GKE Control Planes. - `dl.google.com`: To download Google Cloud SDK framework assets and `kubectl` components if missing. - `bootstrap.pypa.io`: As a secure fallback to fetch `get-pip.py` if the host environment lacks pip and ensurepip completely. ## Interactive JSON exchange protocol (crucial) This skill utilizes a strict JSON payload protocol on `stdout` (delimited by `__AGENT_UI_DATA_START__` and `__AGENT_UI_DATA_END__`) and expects a JSON response on `stdin` for every user input step. The executing agent must: 1. **Never truncate or summarize any JSON payloads** emitted between `__AGENT_UI_DATA_START__` and `__AGENT_UI_DATA_END__`. Display them in full to the user. 1. **Never make assumptions or skip user input.** Prompt the user for input at every single stage the script pauses and waits for `stdin`. 1. **Format user choices as the required JSON structure and append a** **newline (`\n`)** before writing to the script's `stdin`. 1. **Render Risk Profiles Visually:** When presenting the risk profile at Phase 4, the agent must render a clear Markdown table of the compatible (Green Lane) and incompatible (Red Lane) resources, detailing the risks/blockers, so the operator can make an informed decision. ## Strict execution lifecycle and master report pipeline ### Master report markdown template (to be updated incrementally) The structural markdown template for the migration analysis report is maintained in `assets/report_template.md`. When initialized or updated across the pipeline phases, the runtime engine automatically copies this template to output `GKE_Ingress_to_Gateway_API_Migration_Analysis_Report.md` and incrementally populates its section placeholders. ## Structured macro-pipeline execution phases You will advance strictly through these 6 consecutive operational phases. - **Phase 1:** Environment Sandbox Pre-flight Validation. - **Phase 2:** Identity & Context Resolution - **Phase 3:** Resource Discovery & Target Inventory. - **Phase 4:** Ingress scanning & Risk Profiling. - **Phase 5:** Translation & Dry Run validation. - **Phase 6:** Approval and execution ### Phase 1: Environment sandbox pre-flight validation Before executing any Python scripts or processing cluster manifests, you **must** verify and initialize the local environment by reading and following the pre-flight validation instructions in `references/preflight_validation.md`. ### Phase 2: Identity and context resolution 1. **Invoke the Core Python Script:** Instantly upon entering Phase 2, run the python orchestrator script: ```bash python3 .agent/skills/ingress2gateway/scripts/main.py ``` 1. **Cluster Discovery UI Payload:** The script discovers GKE clusters and emits a JSON payload (`select_cluster`). Intercept this payload, present options to the operator, and write the choice to the script's `stdin`. 1. **Kubeconfig Sandboxing:** Once selected, the script configures local sandboxed credentials for the chosen GKE cluster. ### Phase 3: Resource discovery and target inventory 1. **Orchestrated Scanning:** The active script scans the target GKE cluster context to discover Ingress manifests. 1. **Incremental Report Generation:** The script copies the report template to `GKE_Ingress_to_Gateway_API_Migration_Analysis_Report.md` and updates the `[Populated in Phase 3]` placeholder with the target inventory. 1. **Intermediate UI Exchange:** The script does not pause at this stage, but advances to Phase 4. ### Phase 4: Ingress scanning and risk profiling 1. **Automated Risk Triage:** The scanner.py sub-component will programmatically evaluate metadata arrays for custom or native rewrite snippets. 1. **Incremental Document Update:** The script replaces the [Populated in Phase 4] placeholder with a breakdown of Critical Blockers and Translation Warnings discovered during verification. 1. **Interactive JSON Handoff Gate:** The agent must capture the script's emitted stdout payload between **AGENT_UI_DATA_START** and **AGENT_UI_DATA_END**. Display the comprehensive risk inventory full-string array to the operator, pause processing execution, and wait for a structured JSON map selection on stdin identifying approved migration asset targets. ### Phase 5: Translation and dry run validation 1. **Translation Execution:** The engine passes approved target JSON structures to translator.py, which pulls down and runs the pre-compiled ingress2gateway compiler to generate native Gateway API resource maps. 1. **Validation & Safety Check:** The script executes the dry-run `kubectl apply --dry-run=server -f {GATEWAY_API_MANIFEST_YAML}` command against the target cluster context. It analyzes the resulting stdout/stderr for validation errors and captures the server response using Kubernetes API. 1. **Incremental Document Update:** The script replaces the [Populated in Phase 5 & 6] placeholder with the consolidated raw Gateway, HttpRoute and URLMap API manifest, the detected server-side validation results, and a detailed explanation of any translation or deployment anomalies. 1. **Interactive Deployment Signature:** The script prints out the compilation details using the approve_deployment UI protocol template. The agent must display this text entirely and halt, blocking the runtime sequence until the user submits a signed APPROVE or CANCEL string map to stdin. 1. **Conditional Execution Gate:** - If the validation response indicates zero deploy-time errors, the agent immediately proceeds to Phase 6 (Execution). - If validation errors are returned, the agent **must halt**, append a comprehensive error report to the bottom of the Markdown document, display the final document, and explicitly **ask the user for permission to proceed with manual correction or bypass strict validation rules.** ### Phase 6: Approval and execution 1. **Live Data Plane Injection:** If the interaction response on stdin reads APPROVE, the script applies the manifests to the cluster using kubectl apply -f -. It then overwrites the final placeholders with a complete transaction receipt string block. 1. **Conditional Execution Gate:** If the response reads CANCEL, the script intercepts the rejection, dumps the fully compiled Gateway configurations locally into a migration-fallback.yaml asset backup, and posts a Deployment Paused status block to the analysis file. 1. **Mandatory Hold & Exit:** Once the underlying script lifecycle gracefully exits, the agent must present a final execution summary to the workspace terminal and wait for further user interaction commands.
View on GitHub