-
Notifications
You must be signed in to change notification settings - Fork 350
[Bugfix] Pod rolebinding are requiered even with k8s_discovery_mode=serivce-name #744
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Signed-off-by: nargit <NargiT@users.noreply.github.com>
Summary of ChangesHello @NargiT, 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 resolves a bug in the Kubernetes Helm chart configuration where the 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. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR modifies the conditional logic for rendering RoleBindings in the router service discovery configuration. The change removes the wrapping condition on the first RoleBinding and converts an else clause to an explicit condition check.
- Removes the conditional wrapper around the first RoleBinding (pod-ip discovery type)
- Changes the
elseclause to an explicit check for "service-name" discovery type
Comments suppressed due to low confidence (1)
helm/templates/rolebinding.yaml:19
- The first RoleBinding (lines 2-14) is now always rendered, while the second RoleBinding (lines 16-28) is rendered when k8sServiceDiscoveryType equals 'service-name'. This creates a conflict: both RoleBindings have the same name '{{ .Release.Name }}-deployment-access-binding' but reference different roles. When k8sServiceDiscoveryType is 'pod-ip' (the default), only the first RoleBinding should be created. When it's 'service-name', only the second should be created. Add a conditional wrapper around the first RoleBinding:
{{- if .Values.routerSpec.k8sServiceDiscoveryType | default \"pod-ip\" | eq \"pod-ip\" }}before line 2, or change line 15 to useelseto ensure mutual exclusivity.
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: {{ .Release.Name }}-deployment-access-binding
namespace: {{ .Release.Namespace }}
subjects:
- kind: ServiceAccount
name: {{ .Release.Name }}-router-service-account
namespace: {{ .Release.Namespace }}
roleRef:
kind: Role
name: {{ .Release.Name }}-pod-reader
apiGroup: rbac.authorization.k8s.io
{{- if .Values.routerSpec.k8sServiceDiscoveryType | default "pod-ip" | eq "service-name" }}
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: {{ .Release.Name }}-deployment-access-binding
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request aims to ensure that the pod-reader RoleBinding is always created, even when k8s_discovery_mode is service-name, because it's needed for checking sleep mode. This is a valid change.
However, the implementation in helm/templates/rolebinding.yaml has a critical issue: when k8s_discovery_mode is service-name, it generates two RoleBinding resources with the same name and without a --- separator, which will cause the Helm deployment to fail. I've provided a suggestion to fix this by giving each RoleBinding a unique name and separating them correctly.
Additionally, for this change to work, helm/templates/role.yaml also needs to be updated. Currently, it only creates the pod-reader Role when k8s_discovery_mode is pod-ip. It should be modified to always create the pod-reader Role and conditionally create the service-reader Role, similar to the logic for RoleBindings. Without this change, the pod-reader-binding will fail to bind to a non-existent Role.
Signed-off-by: nargit <NargiT@users.noreply.github.com>
ef91d1c to
cc53bc8
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| - apiGroups: [ "" ] # "" indicates the core API group | ||
| resources: [ "services", "endpoints" ] | ||
| verbs: [ "get", "watch", "list", "patch" ] | ||
| resources: ["pods", "services", "endpoints"] |
Copilot
AI
Oct 30, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When k8sServiceDiscoveryType is not 'pod-ip', the role now grants access to 'pods' in addition to 'services' and 'endpoints'. This is a permission expansion from the original configuration which only granted 'services' and 'endpoints' access. Verify this additional 'pods' permission is intentional for non-pod-ip discovery types, as it broadens the security scope of the service account.
| resources: ["pods", "services", "endpoints"] | |
| resources: ["services", "endpoints"] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I believe values.yaml is an interface for the end user whereas the template logic is here to hide complexity and allow easy maintenance for maintainer.
zerofishnoodles
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Because sleep mode is checked through pods, we still need pod role binding
production-stack/src/vllm_router/service_discovery.py
Lines 943 to 972 in 528f6d8
-swhen doinggit commit[Bugfix],[Feat], and[CI].Detailed Checklist (Click to Expand)
Thank you for your contribution to production-stack! Before submitting the pull request, please ensure the PR meets the following criteria. This helps us maintain the code quality and improve the efficiency of the review process.
PR Title and Classification
Please try to classify PRs for easy understanding of the type of changes. The PR title is prefixed appropriately to indicate the type of change. Please use one of the following:
[Bugfix]for bug fixes.[CI/Build]for build or continuous integration improvements.[Doc]for documentation fixes and improvements.[Feat]for new features in the cluster (e.g., autoscaling, disaggregated prefill, etc.).[Router]for changes to thevllm_router(e.g., routing algorithm, router observability, etc.).[Misc]for PRs that do not fit the above categories. Please use this sparingly.Note: If the PR spans more than one category, please include all relevant prefixes.
Code Quality
The PR need to meet the following code quality standards:
pre-committo format your code. SeeREADME.mdfor installation.DCO and Signed-off-by
When contributing changes to this project, you must agree to the DCO. Commits must include a
Signed-off-by:header which certifies agreement with the terms of the DCO.Using
-swithgit commitwill automatically add this header.What to Expect for the Reviews
We aim to address all PRs in a timely manner. If no one reviews your PR within 5 days, please @-mention one of YuhanLiu11
, Shaoting-Feng or ApostaC.