From b5b7ceb85ac0fe11d91a7ae1f716277c4002d0b5 Mon Sep 17 00:00:00 2001 From: Ryan D McGuire Date: Mon, 31 Mar 2025 16:09:22 -0400 Subject: [PATCH] add make rename support, update README --- .gitea/workflows/ci.yml | 12 +- Makefile | 9 +- README.md | 3 + api/demo/app/v1alpha1/app.pb.go | 2 +- go.sum | 1 + helm/.gitignore | 2 + helm/Chart.yaml | 30 ++ helm/library-hull.yaml | 643 ++++++++++++++++++++++++++++++++ helm/templates/app.yaml | 1 + helm/values.yaml | 195 ++++++++++ 10 files changed, 890 insertions(+), 8 deletions(-) create mode 100644 helm/.gitignore create mode 100644 helm/Chart.yaml create mode 100644 helm/library-hull.yaml create mode 100644 helm/templates/app.yaml create mode 100644 helm/values.yaml diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 9ab915f..db708c8 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -5,19 +5,19 @@ on: branches: ["main"] env: - PACKAGE_NAME: go-http-server-with-otel + PACKAGE_NAME: go-server-with-otel BINARY_PATH: bin - BINARY_NAME: go-http-server-with-otel - GO_MOD_PATH: gitea.libretechconsulting.com/rmcguire/go-http-server-with-otel + BINARY_NAME: go-server-with-otel + GO_MOD_PATH: gitea.libretechconsulting.com/rmcguire/go-server-with-otel GO_GIT_HOST: gitea.libretechconsulting.com VER_PKG: gitea.libretechconsulting.com/rmcguire/go-app/pkg/config.Version VERSION: ${{ github.ref_name }} PLATFORMS: linux/amd64 linux/arm64 darwin/amd64 darwin/arm64 DOCKER_REGISTRY: gitea.libretechconsulting.com DOCKER_USER: rmcguire - DOCKER_REPO: rmcguire/go-http-server-with-otel + DOCKER_REPO: rmcguire/go-server-with-otel DOCKER_IMG: ${{ env.DOCKER_REGISTRY }}/${{ env.DOCKER_REPO }} - CHART_DIR: helm/go-http-server-with-otel + CHART_DIR: helm/ jobs: release: @@ -103,7 +103,7 @@ jobs: base: ${{ github.ref }} filters: | chart: - - helm/go-http-server-with-otel/Chart.yaml + - helm/Chart.yaml helm-release: runs-on: ubuntu-latest diff --git a/Makefile b/Makefile index 7593f68..9a312af 100644 --- a/Makefile +++ b/Makefile @@ -72,5 +72,12 @@ rename: echo "Aborted."; \ exit 1; \ fi - @find . -type f \( -name '*.go' -o -name 'go.mod' -o -name 'go.sum' -o -name '*.proto' -o -name 'Makefile' \) -exec sed -i "s|$(GIT_REPO)|$(NAME)|g" {} + + @find . -type f -a \ + \( -name '*.go' -o -name 'go.mod' \ + -o -name 'go.sum' -o -name '*.proto' \ + -o -name 'Makefile' \ + -o -name '*.yml' -o -name '*.yaml' \ + \) \ + -not -path './.git' -not -path './.git/*' \ + -exec sed -i "s|$(GIT_REPO)|$(NAME)|g" {} + @echo "Project renamed to $(NAME)" diff --git a/README.md b/README.md index adac686..298d360 100644 --- a/README.md +++ b/README.md @@ -17,4 +17,7 @@ use with postman, etc.. 1. Ensure you have yaml+json tags 1. The yaml-language-server lsp plugin for your favorite editor should pull in the schema using the comment in `config.yaml` +1. Run `make proto` after updating proto changes, and add any + 1. paths under proto/ as necessary 1. Implement your things +1. Update parameters in `.gitea/workflows/ci.yaml` for your app diff --git a/api/demo/app/v1alpha1/app.pb.go b/api/demo/app/v1alpha1/app.pb.go index 5477889..7148251 100644 --- a/api/demo/app/v1alpha1/app.pb.go +++ b/api/demo/app/v1alpha1/app.pb.go @@ -153,7 +153,7 @@ const file_demo_app_v1alpha1_app_proto_rawDesc = "" + "\x06source\x18\x03 \x01(\tR\x06source\x12\x1a\n" + "\blanguage\x18\x04 \x01(\tR\blanguage2z\n" + "\x0eDemoAppService\x12h\n" + - "\aGetDemo\x12!.demo.app.v1alpha1.GetDemoRequest\x1a\".demo.app.v1alpha1.GetDemoResponse\"\x16\x82\xd3\xe4\x93\x02\x10\x12\x0e/v1alpha1/demoBSZQgitea.libretechconsulting.com/rmcguire/go-server-with-otel/api/v1alpha1/demob\x06proto3" + "\aGetDemo\x12!.demo.app.v1alpha1.GetDemoRequest\x1a\".demo.app.v1alpha1.GetDemoResponse\"\x16\x82\xd3\xe4\x93\x02\x10\x12\x0e/v1alpha1/demoBNZLgitea.libretechconsulting.com/rmcguire/go-server-with-otel/api/v1alpha1/demob\x06proto3" var ( file_demo_app_v1alpha1_app_proto_rawDescOnce sync.Once diff --git a/go.sum b/go.sum index fd001b1..9dff03b 100644 --- a/go.sum +++ b/go.sum @@ -33,6 +33,7 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.1 h1:KcFzXwzM/kGhIRHvc8jdixfIJjVzuUJdnv+5xsPutog= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.1/go.mod h1:qOchhhIlmRcqk/O9uCo/puJlyo07YINaIqdZfZG3Jkc= +github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo= github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI= github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJn+Ichc= diff --git a/helm/.gitignore b/helm/.gitignore new file mode 100644 index 0000000..f791801 --- /dev/null +++ b/helm/.gitignore @@ -0,0 +1,2 @@ +charts/ +Chart.lock diff --git a/helm/Chart.yaml b/helm/Chart.yaml new file mode 100644 index 0000000..1b7d1c5 --- /dev/null +++ b/helm/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +name: go-server-with-otel +description: Golang HTTP and GRPC server with OTEL + +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +type: application + +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 0.1.0 + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +# It is recommended to use it with quotes. +appVersion: "v0.1.0" + +dependencies: + - name: hull + repository: https://vidispine.github.io/hull + version: 1.32.2 + diff --git a/helm/library-hull.yaml b/helm/library-hull.yaml new file mode 100644 index 0000000..6d338db --- /dev/null +++ b/helm/library-hull.yaml @@ -0,0 +1,643 @@ +################################ +### values.yaml for HULL +### The basic pre-configuration takes place here. +### +### Do not change this file, use additional values.hull.yaml +### to overwrite the selected fields! +################################ + +################################################### +### CONFIG +config: + general: + rbac: true + fullnameOverride: "" + nameOverride: "" + namespaceOverride: "" + noObjectNamePrefixes: false + createImagePullSecretsFromRegistries: true + globalImageRegistryServer: "" + globalImageRegistryToFirstRegistrySecretServer: false + serialization: + configmap: + enabled: true + fileExtensions: + json: toPrettyJson + yml: toYaml + yaml: toYaml + secret: + enabled: true + fileExtensions: + json: toPrettyJson + yml: toYaml + yaml: toYaml + render: + passes: 3 + emptyLabels: false + emptyAnnotations: false + emptyTemplateLabels: false + emptyTemplateAnnotations: false + emptyHullObjects: false + postRender: + globalStringReplacements: + instanceKey: + enabled: false + string: _HULL_OBJECT_TYPE_DEFAULT_ + replacement: OBJECT_INSTANCE_KEY + instanceKeyResolved: + enabled: false + string: _HULL_OBJECT_TYPE_DEFAULT_ + replacement: OBJECT_INSTANCE_KEY_RESOLVED + instanceName: + enabled: false + string: _HULL_OBJECT_TYPE_DEFAULT_ + replacement: OBJECT_INSTANCE_NAME + errorChecks: + objectYamlValid: true + hullGetTransformationReferenceValid: true + containerImageValid: true + virtualFolderDataPathExists: true + virtualFolderDataInlineValid: false + debug: + renderBrokenHullGetTransformationReferences: false + renderNilWhenInlineIsNil: false + renderPathMissingWhenPathIsNonExistent: false + metadata: + labels: + common: + 'app.kubernetes.io/managed-by': + 'app.kubernetes.io/version': + 'app.kubernetes.io/part-of': + 'app.kubernetes.io/name': + 'app.kubernetes.io/instance': + 'app.kubernetes.io/component': + 'helm.sh/chart': + 'vidispine.hull/version': + custom: {} + annotations: + hashes: false + custom: {} + data: {} + specific: {} + templates: + pod: + global: {} + container: + global: {} +################################################### + +################################################### +### OBJECTS +objects: + +# NAMESPACE + namespace: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + staticName: true + annotations: {} + labels: {} +################################################### + +# CONFIGMAPS + configmap: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} +################################################### + +# SECRETS + secret: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} +################################################### + +# REGISTRIES + registry: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} +################################################### + +# SERVICEACCOUNTS + serviceaccount: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} + default: + enabled: _HT?eq (dig "serviceAccountName" "" _HT*hull.config.templates.pod.global) "" + annotations: {} + labels: {} +################################################### + +# ROLES + role: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} + rules: + _HULL_OBJECT_TYPE_DEFAULT_: {} + default: + enabled: _HT?eq (dig "serviceAccountName" "" _HT*hull.config.templates.pod.global) "" + rules: {} +################################################### + +# ROLEBINDINGS + rolebinding: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} + default: + enabled: _HT?eq (dig "serviceAccountName" "" _HT*hull.config.templates.pod.global) "" + roleRef: + apiGroup: "rbac.authorization.k8s.io" + kind: "Role" + name: _HT^default + subjects: + - kind: ServiceAccount + name: _HT^default + namespace: _HT**Release.Namespace +################################################### + +# CLUSTERROLES + clusterrole: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} + rules: + _HULL_OBJECT_TYPE_DEFAULT_: {} +################################################### + +# CLUSTERROLEBINDINGS + clusterrolebinding: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} +################################################### + +# CUSTOMRESOURCEDEFINITIONS (deprecated with Helm3) +# customresourcedefinitions: +# _HULL_OBJECT_TYPE_DEFAULT_: +# enabled: true +# annotations: {} +# labels: {} +################################################### + +# CUSTOMRESOURCES + customresource: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} +################################################### + +# PERSISTENTVOLUMECLAIMS + persistentvolumeclaim: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} +################################################### + +# PERSISTENTVOLUMES + persistentvolume: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} +################################################### + +# STORAGECLASSES + storageclass: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} +################################################### + +# SERVICES + service: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} + ports: + _HULL_OBJECT_TYPE_DEFAULT_: {} + +################################################### + +# INGRESSES + ingress: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} + tls: + _HULL_OBJECT_TYPE_DEFAULT_: {} + rules: + _HULL_OBJECT_TYPE_DEFAULT_: + http: + paths: + _HULL_OBJECT_TYPE_DEFAULT_: {} + +################################################### + +# INGRESSCLASSES + ingressclass: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} + +################################################### + +# DEPLOYMENTS + deployment: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} + templateAnnotations: {} + templateLabels: {} + pod: + initContainers: + _HULL_OBJECT_TYPE_DEFAULT_: + env: + _HULL_OBJECT_TYPE_DEFAULT_: {} + envFrom: + _HULL_OBJECT_TYPE_DEFAULT_: {} + volumeMounts: + _HULL_OBJECT_TYPE_DEFAULT_: {} + containers: + _HULL_OBJECT_TYPE_DEFAULT_: + env: + _HULL_OBJECT_TYPE_DEFAULT_: {} + envFrom: + _HULL_OBJECT_TYPE_DEFAULT_: {} + volumeMounts: + _HULL_OBJECT_TYPE_DEFAULT_: {} + volumes: + _HULL_OBJECT_TYPE_DEFAULT_: {} +################################################### + +# JOBS + job: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} + templateAnnotations: {} + templateLabels: {} + pod: + initContainers: + _HULL_OBJECT_TYPE_DEFAULT_: + env: + _HULL_OBJECT_TYPE_DEFAULT_: {} + envFrom: + _HULL_OBJECT_TYPE_DEFAULT_: {} + volumeMounts: + _HULL_OBJECT_TYPE_DEFAULT_: {} + containers: + _HULL_OBJECT_TYPE_DEFAULT_: + env: + _HULL_OBJECT_TYPE_DEFAULT_: {} + envFrom: + _HULL_OBJECT_TYPE_DEFAULT_: {} + volumeMounts: + _HULL_OBJECT_TYPE_DEFAULT_: {} + volumes: + _HULL_OBJECT_TYPE_DEFAULT_: {} +################################################### + +# CRONJOBS + cronjob: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} + job: + templateAnnotations: {} + templateLabels: {} + pod: + initContainers: + _HULL_OBJECT_TYPE_DEFAULT_: + env: + _HULL_OBJECT_TYPE_DEFAULT_: {} + envFrom: + _HULL_OBJECT_TYPE_DEFAULT_: {} + volumeMounts: + _HULL_OBJECT_TYPE_DEFAULT_: {} + containers: + _HULL_OBJECT_TYPE_DEFAULT_: + env: + _HULL_OBJECT_TYPE_DEFAULT_: {} + envFrom: + _HULL_OBJECT_TYPE_DEFAULT_: {} + volumeMounts: + _HULL_OBJECT_TYPE_DEFAULT_: {} + volumes: + _HULL_OBJECT_TYPE_DEFAULT_: {} +################################################### + +# DAEMONSETS + daemonset: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} + templateAnnotations: {} + templateLabels: {} + pod: + initContainers: + _HULL_OBJECT_TYPE_DEFAULT_: + env: + _HULL_OBJECT_TYPE_DEFAULT_: {} + envFrom: + _HULL_OBJECT_TYPE_DEFAULT_: {} + volumeMounts: + _HULL_OBJECT_TYPE_DEFAULT_: {} + containers: + _HULL_OBJECT_TYPE_DEFAULT_: + env: + _HULL_OBJECT_TYPE_DEFAULT_: {} + envFrom: + _HULL_OBJECT_TYPE_DEFAULT_: {} + volumeMounts: + _HULL_OBJECT_TYPE_DEFAULT_: {} + volumes: + _HULL_OBJECT_TYPE_DEFAULT_: {} +################################################### + +# STATEFULSETS + statefulset: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} + templateAnnotations: {} + templateLabels: {} + pod: + initContainers: + _HULL_OBJECT_TYPE_DEFAULT_: + env: + _HULL_OBJECT_TYPE_DEFAULT_: {} + envFrom: + _HULL_OBJECT_TYPE_DEFAULT_: {} + volumeMounts: + _HULL_OBJECT_TYPE_DEFAULT_: {} + containers: + _HULL_OBJECT_TYPE_DEFAULT_: + env: + _HULL_OBJECT_TYPE_DEFAULT_: {} + envFrom: + _HULL_OBJECT_TYPE_DEFAULT_: {} + volumeMounts: + _HULL_OBJECT_TYPE_DEFAULT_: {} + volumes: + _HULL_OBJECT_TYPE_DEFAULT_: {} +################################################### + +# SERVICEMONITORS + servicemonitor: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} +################################################### + +# HORIZONTALPODAUTOSCALER + horizontalpodautoscaler: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} +################################################### + +# PODDISRUPTIONBUDGET + poddisruptionbudget: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} +################################################### + +# PRIORITYCLASS + priorityclass: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} +################################################### + +# ENDPOINTS + endpoints: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} +################################################### + +# ENDPOINTSLICE + endpointslice: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} +################################################### + +# LIMITRANGE + limitrange: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} +################################################### + +# MUTATINGWEBHOOKCONFIGURATION + mutatingwebhookconfiguration: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} + webhooks: + _HULL_OBJECT_TYPE_DEFAULT_: {} +################################################### + +# VALIDATINGWEBHOOKCONFIGURATION + validatingwebhookconfiguration: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} + webhooks: + _HULL_OBJECT_TYPE_DEFAULT_: {} +################################################### + +# RESOURCEQUOTA + resourcequota: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} +################################################## + +# NETWORKPOLICY + networkpolicy: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} +################################################## + +# GATEWAY API - BACKENDLBPOLICY + backendlbpolicy: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} + targetRefs: + _HULL_OBJECT_TYPE_DEFAULT_: {} + +################################################## + +# GATEWAY API - BACKENDTLSPOLICY + backendtlspolicy: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} + targetRefs: + _HULL_OBJECT_TYPE_DEFAULT_: {} +################################################## + +# GATEWAY API - GATEWAYCLASS + gatewayclass: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} +################################################## + +# GATEWAY API - GATEWAY + gateway: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} + addresses: + _HULL_OBJECT_TYPE_DEFAULT_: {} + listeners: + _HULL_OBJECT_TYPE_DEFAULT_: + tls: + certificateRefs: + _HULL_OBJECT_TYPE_DEFAULT_: {} + frontendValidation: + caCertificateRefs: + _HULL_OBJECT_TYPE_DEFAULT_: {} + allowedRoutes: + kinds: + _HULL_OBJECT_TYPE_DEFAULT_: {} +################################################## + +# GATEWAY API - GRPCROUTE + grpcroute: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} + parentRefs: + _HULL_OBJECT_TYPE_DEFAULT_: {} + rules: + _HULL_OBJECT_TYPE_DEFAULT_: + matches: + _HULL_OBJECT_TYPE_DEFAULT_: {} + filters: + _HULL_OBJECT_TYPE_DEFAULT_: {} + backendRefs: + _HULL_OBJECT_TYPE_DEFAULT_: + filters: + _HULL_OBJECT_TYPE_DEFAULT_: {} +################################################## + +# GATEWAY API - REFERENCEGRANT + referencegrant: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} + from: + _HULL_OBJECT_TYPE_DEFAULT_: {} + to: + _HULL_OBJECT_TYPE_DEFAULT_: {} +################################################## + +# GATEWAY API - TCPROUTE + tcproute: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} + parentRefs: + _HULL_OBJECT_TYPE_DEFAULT_: {} + rules: + _HULL_OBJECT_TYPE_DEFAULT_: + backendRefs: + _HULL_OBJECT_TYPE_DEFAULT_: {} +################################################## + +# GATEWAY API - TLSROUTE + tlsroute: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} + parentRefs: + _HULL_OBJECT_TYPE_DEFAULT_: {} + rules: + _HULL_OBJECT_TYPE_DEFAULT_: + backendRefs: + _HULL_OBJECT_TYPE_DEFAULT_: {} +################################################## + +# GATEWAY API - UDPROUTE + udproute: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} + parentRefs: + _HULL_OBJECT_TYPE_DEFAULT_: {} + rules: + _HULL_OBJECT_TYPE_DEFAULT_: + backendRefs: + _HULL_OBJECT_TYPE_DEFAULT_: {} +################################################## + +# GATEWAY API - HTTPROUTE + httproute: + _HULL_OBJECT_TYPE_DEFAULT_: + enabled: true + annotations: {} + labels: {} + parentRefs: + _HULL_OBJECT_TYPE_DEFAULT_: {} + rules: + _HULL_OBJECT_TYPE_DEFAULT_: + matches: + _HULL_OBJECT_TYPE_DEFAULT_: {} + filters: + _HULL_OBJECT_TYPE_DEFAULT_: {} + backendRefs: + _HULL_OBJECT_TYPE_DEFAULT_: + filters: + _HULL_OBJECT_TYPE_DEFAULT_: {} +################################################## diff --git a/helm/templates/app.yaml b/helm/templates/app.yaml new file mode 100644 index 0000000..1739244 --- /dev/null +++ b/helm/templates/app.yaml @@ -0,0 +1 @@ +{{- include "hull.objects.prepare.all" (dict "HULL_ROOT_KEY" "hull" "ROOT_CONTEXT" $) }} diff --git a/helm/values.yaml b/helm/values.yaml new file mode 100644 index 0000000..07e988c --- /dev/null +++ b/helm/values.yaml @@ -0,0 +1,195 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/vidispine/hull/refs/heads/main/hull/values.schema.json +hull: + config: + ## go-server-with-otel custom settings (config.yaml) + appConfig: + # Custom app config + timezone: EST5EDT + opts: + factLang: en + factType: random + # go-app config + name: Demo go-app + logging: + format: json + level: debug + enabled: true + otel: + enabled: true + stdoutEnabled: false + http: + enabled: true + listen: :8080 + logRequests: true + grpc: + enabled: true + enableReflection: true + listen: :8081 + grpcGatewayPath: /api + enableGRPCGateway: true + enableInstrumentation: true + logRequests: true + ## Chart settings + settings: + resources: {} # Applies to the app container + repo: gitea.libretechconsulting.com/rmcguire/go-server-with-otel + tag: _HT**Chart.AppVersion + + httpPort: 8080 # Should match appConfig http.listen + grpcPort: 8081 # Should match appConfig grpc.listen + + # Use this as a shortcut, or create your own hull.objects.httproute + httproute: + enabled: false + hostnames: + - app.mydomain.com + gatewayName: istio-ingressgateway + gatewayNamespace: istio-system + + # Use this as a shortcut, or create your own hull.objects.grpcroute + grpcroute: + enabled: false + hostnames: + - app.mydomain.com + gatewayName: istio-ingressgateway + gatewayNamespace: istio-system + + otelServiceName: go-server-with-otel + otelResourceAttributes: app=go-server-with-otel + otlpEndpoint: http://otel.otel.svc.cluster.local:4317 # Replace me + + serviceType: ClusterIP + serviceLbIP: "" # Used if serviceTyps=LoadBalancer + + general: + rbac: false + render: + passes: 2 + # Applies to all objects + metadata: + labels: + custom: + app: _HT**Release.Name + version: _HT**Chart.AppVersion + + objects: + configmap: + config: + data: + config.yaml: + serialization: toYaml + inline: _HT*hull.config.appConfig + environment: + data: + OTEL_EXPORTER_OTLP_ENDPOINT: + serialization: none + inline: _HT*hull.config.settings.otlpEndpoint + OTEL_SERVICE_NAME: + serialization: none + inline: _HT*hull.config.settings.otelServiceName + OTEL_RESOURCE_ATTRIBUTES: + serialization: none + inline: _HT! + {{ printf "deployment.name=%s,%s" _HT**Release.Name _HT*hull.config.settings.otelResourceAttributes }} + serviceaccount: + default: + enabled: false + role: + default: + enabled: false + rolebinding: + default: + enabled: false + + deployment: + main: + pod: + containers: + main: + image: + repository: _HT*hull.config.settings.repo + tag: _HT*hull.config.settings.tag + imagePullPolicy: Always + args: + - -config + - /app/config.yaml + ports: + http: + containerPort: _HT*hull.config.settings.httpPort + grpc: + containerPort: _HT*hull.config.settings.grpcPort + envFrom: + main: + configMapRef: + name: environment + resources: _HT*hull.config.settings.resources + readinessProbe: + httpGet: + path: /health + port: 8080 + scheme: HTTP + periodSeconds: 10 + failureThreshold: 2 + livenessProbe: + httpGet: + path: /health + port: 8080 + scheme: HTTP + periodSeconds: 10 + failureThreshold: 2 + volumeMounts: + config: + name: config + mountPath: /app/config.yaml + subPath: config.yaml + volumes: + environment: + configMap: + name: environment + config: + configMap: + name: config + + service: + main: + type: _HT*hull.config.settings.serviceType + loadBalancerIP: _HT*hull.config.settings.serviceLbIP + ports: + http: + port: _HT*hull.config.settings.httpPort + targetPort: http + grpc: + port: _HT*hull.config.settings.grpcPort + targetPort: grpc + + httproute: + main: + enabled: _HT*hull.config.settings.httproute.enabled + hostnames: _HT*hull.config.settings.httproute.hostnames + parentRefs: + - group: gateway.networking.k8s.io + kind: Gateway + name: _HT*hull.config.settings.httproute.gatewayName + namespace: _HT*hull.config.settings.httproute.gatewayNamespace + rules: + - backendRefs: + - group: "" + kind: Service + name: _HT^main + port: _HT*hull.config.settings.httpPort + + grpcroute: + main: + enabled: _HT*hull.config.settings.grpcroute.enabled + hostnames: _HT*hull.config.settings.grpcroute.hostnames + parentRefs: + - group: gateway.networking.k8s.io + kind: Gateway + name: _HT*hull.config.settings.grpcroute.gatewayName + namespace: _HT*hull.config.settings.grpcroute.gatewayNamespace + rules: + - backendRefs: + - group: "" + kind: Service + name: _HT^main + port: _HT*hull.config.settings.grpcPort