diff --git a/helm/taskchampion-sync-server/Chart.yaml b/helm/taskchampion-sync-server/Chart.yaml index ab6b79a..6f46da7 100644 --- a/helm/taskchampion-sync-server/Chart.yaml +++ b/helm/taskchampion-sync-server/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: taskchampion-sync-server description: A Helm chart for deploying TaskChampion Sync Server on Kubernetes type: application -version: 0.1.0 +version: 0.1.1 appVersion: "0.7.0" keywords: - taskchampion diff --git a/helm/taskchampion-sync-server/templates/httproute.yaml b/helm/taskchampion-sync-server/templates/httproute.yaml index 8ca5245..a3b30c7 100644 --- a/helm/taskchampion-sync-server/templates/httproute.yaml +++ b/helm/taskchampion-sync-server/templates/httproute.yaml @@ -5,19 +5,53 @@ metadata: name: {{ include "taskchampion-sync-server.fullname" . }} labels: {{- include "taskchampion-sync-server.labels" . | nindent 4 }} + {{- with .Values.httpRoute.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} spec: parentRefs: + {{- if .Values.httpRoute.parentRefs }} + {{- range .Values.httpRoute.parentRefs }} + - name: {{ .name }} + {{- if .namespace }} + namespace: {{ .namespace }} + {{- end }} + {{- if .sectionName }} + sectionName: {{ .sectionName }} + {{- end }} + {{- end }} + {{- else if .Values.httpRoute.gateway }} - name: {{ .Values.httpRoute.gateway }} - {{- if .Values.httpRoute.host }} + {{- end }} + {{- $hostnames := .Values.httpRoute.hostnames }} + {{- if and (not $hostnames) .Values.httpRoute.host }} + {{- $hostnames = list .Values.httpRoute.host }} + {{- end }} + {{- if $hostnames }} hostnames: - - {{ .Values.httpRoute.host }} + {{- range $hostnames }} + - {{ . | quote }} + {{- end }} {{- end }} rules: + {{- if .Values.httpRoute.rules }} + {{- range .Values.httpRoute.rules }} + - matches: + - path: + type: {{ .path.type | default "PathPrefix" }} + value: {{ .path.value | default "/" }} + backendRefs: + - name: {{ include "taskchampion-sync-server.fullname" $ }} + port: {{ .backendPort | default 8080 }} + {{- end }} + {{- else }} - matches: - path: type: PathPrefix - value: {{ .Values.httpRoute.path }} + value: {{ .Values.httpRoute.path | default "/" }} backendRefs: - name: {{ include "taskchampion-sync-server.fullname" . }} - port: {{ .Values.httpRoute.port }} + port: {{ .Values.httpRoute.port | default 8080 }} + {{- end }} {{- end }} diff --git a/helm/taskchampion-sync-server/values.yaml b/helm/taskchampion-sync-server/values.yaml index 103c45e..1c07ab3 100644 --- a/helm/taskchampion-sync-server/values.yaml +++ b/helm/taskchampion-sync-server/values.yaml @@ -38,8 +38,36 @@ ingress: # HTTPRoute configuration (Kubernetes Gateway API) httpRoute: enabled: false + annotations: {} + + # List of parent gateway references. + # name is required; namespace and sectionName are optional. + parentRefs: [] + # parentRefs: + # - name: my-gateway + # namespace: gateway-system # optional — cross-namespace gateway reference + # sectionName: https # optional — targets a specific listener on the gateway + + # List of hostnames the route applies to. + hostnames: [] + # hostnames: + # - tasks.example.com + # - tasks.internal.example.com + + # List of routing rules. Each rule matches a path and forwards to this chart's Service. + # When empty, falls back to the deprecated path/port fields below. + rules: [] + # rules: + # - path: + # type: PathPrefix # PathPrefix or Exact + # value: / + # backendPort: 8080 + + # Deprecated: use parentRefs instead gateway: "" + # Deprecated: use hostnames instead host: "" + # Deprecated: use rules instead path: "/" port: 8080