Skip to content

Conversation

@utkuozdemir
Copy link
Member

Add a brand new, more powerful helm chart.

Closes #1884.

Copy link

Copilot AI left a 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 skipValidation parameter to config initialization to support Helm chart templating
  • Introduced --print-config-and-exit flag 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.

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).
Copy link

Copilot AI Nov 21, 2025

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.

Suggested change
# -- 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).

Copilot uses AI. Check for mistakes.
@utkuozdemir utkuozdemir force-pushed the feat/helm-chart-v2 branch 2 times, most recently from 53bbf42 to 1a00a6c Compare November 21, 2025 14:08
Add a brand new, more powerful helm chart.

Signed-off-by: Utku Ozdemir <[email protected]>
Copy link

Copilot AI left a 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"
Copy link

Copilot AI Nov 21, 2025

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.

Suggested change
"go.yaml.in/yaml/v4"
"gopkg.in/yaml.v3"

Copilot uses AI. Check for mistakes.
Comment on lines +197 to +198
endpoint: https://siderolink.omni.example.com # TODO: probably needs to be advertisedURL instead
# advertisedURL: ""
Copy link

Copilot AI Nov 21, 2025

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.

Suggested change
endpoint: https://siderolink.omni.example.com # TODO: probably needs to be advertisedURL instead
# advertisedURL: ""
advertisedURL: https://siderolink.omni.example.com

Copilot uses AI. Check for mistakes.
spec:
type: {{ .Values.service.main.type }}
{{- with .Values.service.main.clusterIP }}
clusterIP: {{ . | quote}}
Copy link

Copilot AI Nov 21, 2025

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.

Suggested change
clusterIP: {{ . | quote}}
clusterIP: {{ . | quote }}

Copilot uses AI. Check for mistakes.
spec:
type: {{ .Values.service.wireguard.type }}
{{- with .Values.service.wireguard.clusterIP }}
clusterIP: {{ . | quote}}
Copy link

Copilot AI Nov 21, 2025

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.

Suggested change
clusterIP: {{ . | quote}}
clusterIP: {{ . | quote }}

Copilot uses AI. Check for mistakes.
Comment on lines +26 to +54
- 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
Copy link

Copilot AI Nov 21, 2025

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.

Suggested change
- 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

Copilot uses AI. Check for mistakes.
name: {{ include "omni-v2.fullname" $ }}
port:
number: {{ .Values.service.main.omniPort }}
- path: auth.AuthService
Copy link

Copilot AI Nov 21, 2025

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.

Suggested change
- path: auth.AuthService
- path: /auth.AuthService

Copilot uses AI. Check for mistakes.
ports:
- name: wireguard
{{- with .Values.service.wireguard.nodePort }}
nodePort: {{ .}}
Copy link

Copilot AI Nov 21, 2025

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.

Suggested change
nodePort: {{ .}}
nodePort: {{ . }}

Copilot uses AI. Check for mistakes.
name: {{ include "omni-v2.fullname" $ }}
port:
number: {{ .Values.service.main.omniPort }}
- path: management.ManagementService
Copy link

Copilot AI Nov 21, 2025

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.

Suggested change
- path: management.ManagementService
- path: /management.ManagementService

Copilot uses AI. Check for mistakes.
name: {{ include "omni-v2.fullname" $ }}
port:
number: {{ .Values.service.main.omniPort }}
- path: cosi.resource.State
Copy link

Copilot AI Nov 21, 2025

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.

Suggested change
- path: cosi.resource.State
- path: /cosi.resource.State

Copilot uses AI. Check for mistakes.
siderolink:
wireGuard:
# endpoint: 0.0.0.0:50180
advertisedEndpoint: IP_HERE:30180
Copy link

Copilot AI Nov 21, 2025

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").

Suggested change
advertisedEndpoint: IP_HERE:30180
# advertisedEndpoint: 1.2.3.4:30180 # Replace with your cluster's external IP and port

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feature] v2 Helm chart

1 participant