Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion parcellab/common/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ apiVersion: v2
name: common
description: A Helm chart library for parcelLab charts
type: library
version: 1.2.3
version: 1.3.0
maintainers:
- name: parcelLab
email: engineering@parcellab.com
41 changes: 41 additions & 0 deletions parcellab/common/templates/_httproute.tpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Common httproute definition:
{{ include "common.httproute" (
dict
"Values" "the values scope"
) }}
*/}}

{{- define "common.httproute" -}}
{{- $envoy := .Values.envoy | default dict -}}
{{- $httproute := $envoy.httpRoute | default dict -}}
{{- if $httproute.enabled }}
{{- $name := include "common.fullname" . }}
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: {{ include "common.fullname" . }}
namespace: {{ .Release.Namespace }}
labels:
{{- include "common.labels" . | nindent 4 }}
spec:
parentRefs:
- name: {{ required "httproute.parentGateway is required" $httproute.parentGateway }}
namespace: {{ $httproute.parentGatewayNamespace | default "envoy-gateway" }}
{{- with $httproute.hosts }}
hostnames:
{{- range . }}
- {{ . | quote }}
{{- end }}
{{- end }}
rules:
- matches:
- path:
type: PathPrefix
value: {{ $httproute.path | default "/" }}
backendRefs:
- name: {{ include "common.fullname" . }}
port: {{ .Values.service.port }}
{{- end }}
{{- end -}}
58 changes: 58 additions & 0 deletions parcellab/common/templates/_referencegrant.tpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Common ReferenceGrant definition:
{{ include "common.referencegrant" (
dict
"Values" "the values scope"
"Release" .Release
) }}
*/}}

{{- define "common.referencegrant" -}}
{{- $envoy := .Values.envoy | default dict -}}
{{- $referenceGrant := $envoy.referenceGrant | default dict -}}
{{- if $referenceGrant.enabled }}
{{- $name := include "common.fullname" . }}
---
apiVersion: gateway.networking.k8s.io/v1beta1
kind: ReferenceGrant
metadata:
name: {{ $referenceGrant.name | default (printf "%s-grant" $name) }}
namespace: {{ $referenceGrant.namespace | default .Release.Namespace }}
labels:
{{- include "common.labels" . | nindent 4 }}
{{- with $referenceGrant.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
from:
{{- if $referenceGrant.from }}
{{- range $referenceGrant.from }}
- group: {{ .group | default "gateway.networking.k8s.io" | quote }}
kind: {{ required "referenceGrant.from.kind is required" .kind | quote }}
namespace: {{ .namespace | default $.Release.Namespace | quote }}
{{- with .name }}
name: {{ . | quote }}
{{- end }}
{{- end }}
{{- else }}
- group: gateway.networking.k8s.io
kind: HTTPRoute
namespace: {{ .Release.Namespace | quote }}
{{- end }}
to:
{{- if $referenceGrant.to }}
{{- range $referenceGrant.to }}
- group: {{ .group | default "" | quote }}
kind: {{ required "referenceGrant.to.kind is required" .kind | quote }}
{{- with .name }}
name: {{ . | quote }}
{{- end }}
{{- end }}
{{- else }}
- group: ""
kind: Service
{{- end }}
{{- end }}
{{- end -}}
12 changes: 12 additions & 0 deletions parcellab/common/templates/_routing.tpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{{- define "common.routing" -}}
{{- $envoy := .Values.envoy | default dict -}}
{{- $httproute := $envoy.httpRoute | default dict -}}
{{- $ingress := .Values.ingress | default dict -}}

{{- if $httproute.enabled }}
{{- include "common.httproute" . }}
{{- else if $ingress.enabled }}
{{- include "common.ingress" . }}
{{- end }}

{{- end -}}
34 changes: 34 additions & 0 deletions parcellab/common/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,40 @@ image:
tag: stable
ingress:
enabled: false

##
## Envoy Gateway Resources
##

# Configure Envoy Gateway resources under a single parent:
#
# envoy:
# httpRoute: {...}
# referenceGrant: {...}

envoy:
httpRoute:
enabled: false
# parentGateway: gateway-api
# parentGatewayNamespace: envoy-gateway
# hosts:
# - myapp.gateway.test.parcellab.dev
# path: /

referenceGrant:
enabled: false
# name: custom-grant # Optional: custom name
# namespace: envoy-gateway # Optional: where to create the grant (default: current namespace)
# from: # Optional: specify what can reference (default: HTTPRoute from current namespace)
# - group: gateway.networking.k8s.io
# kind: HTTPRoute
# namespace: myapp
# to: # Optional: specify what can be referenced (default: Service)
# - group: ""
# kind: Service
# - group: ""
# kind: Secret

name: common
terminationGracePeriodSeconds: 30
nodeSelector: {}
Expand Down
2 changes: 1 addition & 1 deletion parcellab/cronjob/Chart.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
apiVersion: v2
name: cronjob
description: Single cron job
version: 0.4.1
version: 0.4.2
dependencies:
- name: common
version: "*"
Expand Down
2 changes: 1 addition & 1 deletion parcellab/microservice/Chart.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
apiVersion: v2
name: microservice
description: Simple microservice
version: 0.4.2
version: 0.5.0
dependencies:
- name: common
version: "*"
Expand Down
2 changes: 2 additions & 0 deletions parcellab/microservice/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ needs.
Its generated secret's data values will be loaded as environment variables to the target pod.
- `hpa`
- Horizontal automatic scaling rules of pods. Can be defined with the `autoscaling` setting.
- `envoy`
- Envoy Gateway resources (HTTPRoute, ReferenceGrant). Defined under `envoy.*`.
- `ingress`
- Rules to open external access to the workload. Can be defined with `ingress`.
- `poddisruptionbudget`
Expand Down
1 change: 1 addition & 0 deletions parcellab/microservice/templates/httproute.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{{- include "common.httproute" . }}
1 change: 1 addition & 0 deletions parcellab/microservice/templates/referencegrant.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{{- include "common.referencegrant" . }}
27 changes: 27 additions & 0 deletions parcellab/microservice/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,33 @@ ingress:
# hosts:
# - chart-example.local

##
## Envoy Gateway Resources
##

envoy:
httpRoute:
enabled: false
# parentGateway: gateway-api
# parentGatewayNamespace: envoy-gateway
# hosts:
# - myapp.gateway.test.parcellab.dev
# path: /

referenceGrant:
enabled: false
# name: custom-grant # Optional: custom name
# namespace: envoy-gateway # Optional: where to create the grant (default: current namespace)
# from: # Optional: specify what can reference (default: HTTPRoute from current namespace)
# - group: gateway.networking.k8s.io
# kind: HTTPRoute
# namespace: myapp
# to: # Optional: specify what can be referenced (default: Service)
# - group: ""
# kind: Service
# - group: ""
# kind: Secret

##
## Cronjob
##
Expand Down
2 changes: 1 addition & 1 deletion parcellab/monolith/Chart.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
apiVersion: v2
name: monolith
description: Application that may define multiple services and cronjobs
version: 0.4.1
version: 0.5.0
dependencies:
- name: common
version: "*"
Expand Down
2 changes: 2 additions & 0 deletions parcellab/monolith/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ needs.
Its generated secret's data values will be loaded as environment variables to the target pod.
- `hpa`
- Horizontal automatic scaling rules of pods. Can be defined with the `autoscaling` setting.
- `envoy`
- Envoy Gateway resources (HTTPRoute, ReferenceGrant). Defined under `envoy.*`.
- `ingress`
- Rules to open external access to the workload. Can be defined with `ingress`.
- `poddisruptionbudget`
Expand Down
1 change: 1 addition & 0 deletions parcellab/monolith/templates/httproute.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{{- include "common.httproute" . }}
1 change: 1 addition & 0 deletions parcellab/monolith/templates/referencegrant.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{{- include "common.referencegrant" . }}
27 changes: 27 additions & 0 deletions parcellab/monolith/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,33 @@ ingress:
# hosts:
# - chart-example.local

##
## Envoy Gateway Resources
##

envoy:
httpRoute:
enabled: false
# parentGateway: gateway-api
# parentGatewayNamespace: envoy-gateway
# hosts:
# - myapp.gateway.test.parcellab.dev
# path: /

referenceGrant:
enabled: false
# name: custom-grant # Optional: custom name
# namespace: envoy-gateway # Optional: where to create the grant (default: current namespace)
# from: # Optional: specify what can reference (default: HTTPRoute from current namespace)
# - group: gateway.networking.k8s.io
# kind: HTTPRoute
# namespace: myapp
# to: # Optional: specify what can be referenced (default: Service)
# - group: ""
# kind: Service
# - group: ""
# kind: Secret

##
## Cronjob
##
Expand Down
2 changes: 1 addition & 1 deletion parcellab/worker-group/Chart.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
apiVersion: v2
name: worker-group
description: Set of workers that do not expose a service
version: 0.3.1
version: 0.3.2
dependencies:
- name: common
version: "*"
Expand Down