adding new scripting module gke-backend-fetcher under community folder.#5593
Conversation
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request adds a new utility module to the community folder designed to bridge the gap between GKE Ingress and Google Cloud Load Balancer resources. By dynamically resolving non-deterministic backend service names, it allows for more robust and declarative infrastructure management, particularly for downstream configurations like Identity-Aware Proxy policies. Highlights
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request introduces the gke-backend-fetcher community module, which utilizes a Python script to retrieve the GCP Backend Service ID and name associated with a GKE Ingress. The review feedback identifies several necessary improvements: the module must be added to the repository's module index to comply with the style guide, and the Python script's naming pattern for backends should be updated to support standard GKE Ingress conventions. Additionally, feedback was provided to remove an unused import, synchronize default timeout values, improve error handling in subprocess calls, ensure the total timeout is respected across polling loops, and relax the Terraform version constraint to a minimum version rather than an exact pin.
kvenkatachala333
left a comment
There was a problem hiding this comment.
LGTM. Just a minor nit: please handle the gemini suggestion of ensuring new module is added to the index in the root modules/README.md file as required by the repository style guide
…r. (GoogleCloudPlatform#5593) adding new scripting module gke-backend-fetcher under community folder.
…r. (GoogleCloudPlatform#5593) adding new scripting module gke-backend-fetcher under community folder.
Adding a new module to dynamically discover GCP Backend Service IDs from GKE Ingress.
When a GKE Ingress controller creates a Global Load Balancer, it generates Backend Services with dynamic, non-deterministic names. This makes it difficult to reference these backends in declarative Terraform code (e.g., for applying Identity-Aware Proxy policies).
This module introduces a Python-based utility that queries the GKE cluster's ingress annotations to resolve the mapping between a Kubernetes Service/Port and the corresponding Google Cloud Backend Service ID.
Key Changes:
External Data Provider: Utilizes the Terraform external provider to execute a specialized Python discovery script.
Python Logic: Implements a robust polling loop with a configurable timeout to wait for the GKE Ingress controller to successfully provision the cloud resources and update the ingress annotations.
Credential Handling: The script automatically handles gcloud container clusters get-credentials to ensure kubectl context is available for the lookup.
Output: Provides the backend_service_id and backend_service_name as standard Terraform outputs for consumption by downstream IAM/IAP modules.
Submission Checklist
NOTE: Community submissions can take up to 2 weeks to be reviewed.
Please take the following actions before submitting this pull request.