-
Notifications
You must be signed in to change notification settings - Fork 72
WIP: feat: implement helm chart v2 #1909
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
base: main
Are you sure you want to change the base?
Conversation
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 implements a new Helm chart (v2) for deploying Omni, along with supporting code changes to enable configuration validation skipping and better debugging capabilities. The changes introduce a comprehensive Kubernetes deployment configuration with ingress, services, persistence, and security settings.
Key Changes:
- Added
skipValidationparameter to config initialization to support Helm chart templating - Introduced
--print-config-and-exitflag for debugging configuration issues - Created complete Helm chart v2 with deployment, services, ingress, and persistence resources
Reviewed Changes
Copilot reviewed 20 out of 20 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
| internal/pkg/config/config.go | Added skipValidation parameter to Init function; updated field documentation (contains errors) |
| internal/pkg/config/config_test.go | Updated test to include new skipValidation parameter in Init call |
| internal/backend/server.go | Added debug logging for registered gRPC services |
| cmd/omni/pkg/app/app.go | Updated PrepareConfig to accept skipValidation parameter |
| cmd/omni/cmd/cmd.go | Added print-config-and-exit flag, refactored logger setup, added YAML import (incorrect path) |
| deploy/helm/omni-v2/Chart.yaml | New Helm chart metadata with version 2.0.0 |
| deploy/helm/omni-v2/values.yaml | Comprehensive configuration values for Omni deployment |
| deploy/helm/omni-v2/.helmignore | Standard Helm ignore patterns |
| deploy/helm/omni-v2/templates/_helpers.tpl | Helm template helpers for naming and labels |
| deploy/helm/omni-v2/templates/deployment.yaml | Main deployment resource with volume mounts (has volume mount issue) |
| deploy/helm/omni-v2/templates/configmap.yaml | ConfigMap for Omni configuration (uses non-existent function) |
| deploy/helm/omni-v2/templates/secret.yaml | Secret template for environment variables (creates empty secrets) |
| deploy/helm/omni-v2/templates/serviceaccount.yaml | ServiceAccount resource definition |
| deploy/helm/omni-v2/templates/service.yaml | Main service for Omni endpoints |
| deploy/helm/omni-v2/templates/service-wireguard.yaml | Separate service for WireGuard with NodePort |
| deploy/helm/omni-v2/templates/pvc.yaml | PersistentVolumeClaim for data storage |
| deploy/helm/omni-v2/templates/ingress-ui.yaml | Ingress for UI access |
| deploy/helm/omni-v2/templates/ingress-grpc.yaml | Ingress for gRPC services |
| deploy/helm/omni-v2/templates/ingress-siderolink-api.yaml | Ingress for Siderolink API |
| deploy/helm/omni-v2/templates/ingress-k8s-proxy.yaml | Ingress for Kubernetes proxy (incorrect port reference) |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
deploy/helm/omni-v2/values.yaml
Outdated
| name: default | ||
| services: | ||
| api: | ||
| # -- REQUIRED: The URL used to access Omni UI and the API. When ingress is used, it must match the ingress.main config (host, TLS, port). |
Copilot
AI
Nov 21, 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.
The comment references "ingress.main config" but the actual ingress configuration is at "ingress.ui", not "ingress.main". This should say "ingress.ui config" instead.
| # -- REQUIRED: The URL used to access Omni UI and the API. When ingress is used, it must match the ingress.main config (host, TLS, port). | |
| # -- REQUIRED: The URL used to access Omni UI and the API. When ingress is used, it must match the ingress.ui config (host, TLS, port). |
53bbf42 to
1a00a6c
Compare
Add a brand new, more powerful helm chart. Signed-off-by: Utku Ozdemir <[email protected]>
1a00a6c to
b076a40
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 21 out of 21 changed files in this pull request and generated 11 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| "github.com/spf13/cobra" | ||
| "go.uber.org/zap" | ||
| "go.uber.org/zap/zapcore" | ||
| "go.yaml.in/yaml/v4" |
Copilot
AI
Nov 21, 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.
The import path go.yaml.in/yaml/v4 appears unusual. The standard YAML library for Go uses the import path gopkg.in/yaml.v3. Please verify this is the correct package and that go.yaml.in/yaml/v4 is a valid, maintained library. If this is experimental or an RC version (v4.0.0-rc.2 as seen in go.mod), consider using the stable gopkg.in/yaml.v3 instead.
| "go.yaml.in/yaml/v4" | |
| "gopkg.in/yaml.v3" |
| endpoint: https://siderolink.omni.example.com # TODO: probably needs to be advertisedURL instead | ||
| # advertisedURL: "" |
Copilot
AI
Nov 21, 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.
This TODO comment should be resolved before merging. Either confirm that endpoint is correct and remove the TODO, or change the field to advertisedURL as suggested.
| endpoint: https://siderolink.omni.example.com # TODO: probably needs to be advertisedURL instead | |
| # advertisedURL: "" | |
| advertisedURL: https://siderolink.omni.example.com |
| spec: | ||
| type: {{ .Values.service.main.type }} | ||
| {{- with .Values.service.main.clusterIP }} | ||
| clusterIP: {{ . | quote}} |
Copilot
AI
Nov 21, 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.
Missing space before the closing braces in the template expression.
| clusterIP: {{ . | quote}} | |
| clusterIP: {{ . | quote }} |
| spec: | ||
| type: {{ .Values.service.wireguard.type }} | ||
| {{- with .Values.service.wireguard.clusterIP }} | ||
| clusterIP: {{ . | quote}} |
Copilot
AI
Nov 21, 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.
Missing space before the closing braces in the template expression.
| clusterIP: {{ . | quote}} | |
| clusterIP: {{ . | quote }} |
| - path: omni.resources.ResourceService | ||
| pathType: ImplementationSpecific | ||
| backend: | ||
| service: | ||
| name: {{ include "omni-v2.fullname" $ }} | ||
| port: | ||
| number: {{ .Values.service.main.omniPort }} | ||
| - path: oidc.OIDCService | ||
| pathType: ImplementationSpecific | ||
| backend: | ||
| service: | ||
| name: {{ include "omni-v2.fullname" $ }} | ||
| port: | ||
| number: {{ .Values.service.main.omniPort }} | ||
| - path: management.ManagementService | ||
| pathType: ImplementationSpecific | ||
| backend: | ||
| service: | ||
| name: {{ include "omni-v2.fullname" $ }} | ||
| port: | ||
| number: {{ .Values.service.main.omniPort }} | ||
| - path: auth.AuthService | ||
| pathType: ImplementationSpecific | ||
| backend: | ||
| service: | ||
| name: {{ include "omni-v2.fullname" $ }} | ||
| port: | ||
| number: {{ .Values.service.main.omniPort }} | ||
| - path: cosi.resource.State |
Copilot
AI
Nov 21, 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.
The path value should start with a forward slash. gRPC service paths in Kubernetes Ingress should be formatted as /omni.resources.ResourceService (with a leading slash) for proper routing. Without the leading slash, this will likely fail to match incoming requests.
| - path: omni.resources.ResourceService | |
| pathType: ImplementationSpecific | |
| backend: | |
| service: | |
| name: {{ include "omni-v2.fullname" $ }} | |
| port: | |
| number: {{ .Values.service.main.omniPort }} | |
| - path: oidc.OIDCService | |
| pathType: ImplementationSpecific | |
| backend: | |
| service: | |
| name: {{ include "omni-v2.fullname" $ }} | |
| port: | |
| number: {{ .Values.service.main.omniPort }} | |
| - path: management.ManagementService | |
| pathType: ImplementationSpecific | |
| backend: | |
| service: | |
| name: {{ include "omni-v2.fullname" $ }} | |
| port: | |
| number: {{ .Values.service.main.omniPort }} | |
| - path: auth.AuthService | |
| pathType: ImplementationSpecific | |
| backend: | |
| service: | |
| name: {{ include "omni-v2.fullname" $ }} | |
| port: | |
| number: {{ .Values.service.main.omniPort }} | |
| - path: cosi.resource.State | |
| - path: /omni.resources.ResourceService | |
| pathType: ImplementationSpecific | |
| backend: | |
| service: | |
| name: {{ include "omni-v2.fullname" $ }} | |
| port: | |
| number: {{ .Values.service.main.omniPort }} | |
| - path: /oidc.OIDCService | |
| pathType: ImplementationSpecific | |
| backend: | |
| service: | |
| name: {{ include "omni-v2.fullname" $ }} | |
| port: | |
| number: {{ .Values.service.main.omniPort }} | |
| - path: /management.ManagementService | |
| pathType: ImplementationSpecific | |
| backend: | |
| service: | |
| name: {{ include "omni-v2.fullname" $ }} | |
| port: | |
| number: {{ .Values.service.main.omniPort }} | |
| - path: /auth.AuthService | |
| pathType: ImplementationSpecific | |
| backend: | |
| service: | |
| name: {{ include "omni-v2.fullname" $ }} | |
| port: | |
| number: {{ .Values.service.main.omniPort }} | |
| - path: /cosi.resource.State |
| name: {{ include "omni-v2.fullname" $ }} | ||
| port: | ||
| number: {{ .Values.service.main.omniPort }} | ||
| - path: auth.AuthService |
Copilot
AI
Nov 21, 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.
The path value should start with a forward slash. Change to /auth.AuthService for proper routing.
| - path: auth.AuthService | |
| - path: /auth.AuthService |
| ports: | ||
| - name: wireguard | ||
| {{- with .Values.service.wireguard.nodePort }} | ||
| nodePort: {{ .}} |
Copilot
AI
Nov 21, 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.
Missing space before the closing braces in the template expression.
| nodePort: {{ .}} | |
| nodePort: {{ . }} |
| name: {{ include "omni-v2.fullname" $ }} | ||
| port: | ||
| number: {{ .Values.service.main.omniPort }} | ||
| - path: management.ManagementService |
Copilot
AI
Nov 21, 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.
The path value should start with a forward slash. Change to /management.ManagementService for proper routing.
| - path: management.ManagementService | |
| - path: /management.ManagementService |
| name: {{ include "omni-v2.fullname" $ }} | ||
| port: | ||
| number: {{ .Values.service.main.omniPort }} | ||
| - path: cosi.resource.State |
Copilot
AI
Nov 21, 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.
The path value should start with a forward slash. Change to /cosi.resource.State for proper routing.
| - path: cosi.resource.State | |
| - path: /cosi.resource.State |
| siderolink: | ||
| wireGuard: | ||
| # endpoint: 0.0.0.0:50180 | ||
| advertisedEndpoint: IP_HERE:30180 |
Copilot
AI
Nov 21, 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.
The placeholder IP_HERE should be replaced with a more descriptive comment or example. Consider using a comment like # advertisedEndpoint: 1.2.3.4:30180 or providing clearer documentation about what IP address should be used here (e.g., "your cluster's external IP").
| advertisedEndpoint: IP_HERE:30180 | |
| # advertisedEndpoint: 1.2.3.4:30180 # Replace with your cluster's external IP and port |
Add a brand new, more powerful helm chart.
Closes #1884.