Compare commits
7 Commits
070e94fb55
...
v0.1.0
Author | SHA1 | Date | |
---|---|---|---|
4e23b8de1c | |||
842cb5ad2c | |||
dd87a3a570 | |||
676f9b7755 | |||
b5b7ceb85a | |||
c8e461729f | |||
95aa1e47d1 |
133
.gitea/workflows/ci.yml
Normal file
133
.gitea/workflows/ci.yml
Normal file
@ -0,0 +1,133 @@
|
|||||||
|
name: Build and Publish
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags: ["v*"]
|
||||||
|
branches: ["main"]
|
||||||
|
|
||||||
|
env:
|
||||||
|
PACKAGE_NAME: go-server-with-otel
|
||||||
|
BINARY_PATH: bin
|
||||||
|
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-server-with-otel
|
||||||
|
DOCKER_IMG: ${{ env.DOCKER_REGISTRY }}/${{ env.DOCKER_REPO }}
|
||||||
|
CHART_DIR: helm/
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
release:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: startsWith(github.ref, 'refs/tags/v') # Only run on tag push
|
||||||
|
steps:
|
||||||
|
- name: Checkout Code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Set up Go Environment
|
||||||
|
uses: actions/setup-go@v4
|
||||||
|
with:
|
||||||
|
go-version: '1.23'
|
||||||
|
|
||||||
|
- name: Build Binary
|
||||||
|
run: make build
|
||||||
|
|
||||||
|
- name: Upload Binaries to Generic Registry
|
||||||
|
env:
|
||||||
|
API_TOKEN: ${{ secrets.API_TOKEN }}
|
||||||
|
run: |
|
||||||
|
for platform in $PLATFORMS; do
|
||||||
|
OS=$(echo $platform | cut -d/ -f1)
|
||||||
|
ARCH=$(echo $platform | cut -d/ -f2)
|
||||||
|
BINARY_FILE="${BINARY_PATH}/${PACKAGE_NAME}-${OS}-${ARCH}"
|
||||||
|
echo "Uploading $BINARY_FILE"
|
||||||
|
if [ -f "$BINARY_FILE" ]; then
|
||||||
|
curl -X PUT \
|
||||||
|
-H "Authorization: token ${API_TOKEN}" \
|
||||||
|
--upload-file "$BINARY_FILE" \
|
||||||
|
"${GITHUB_SERVER_URL}/api/packages/${GITHUB_REPOSITORY_OWNER}/generic/${PACKAGE_NAME}/${{ github.ref_name }}/${PACKAGE_NAME}-${OS}-${ARCH}"
|
||||||
|
else
|
||||||
|
echo "Error: Binary $BINARY_FILE not found."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
- name: Run Go List
|
||||||
|
continue-on-error: true
|
||||||
|
env:
|
||||||
|
TAG_NAME: ${{ github.ref_name }} # Use the pushed tag name
|
||||||
|
run: |
|
||||||
|
if [[ "$TAG_NAME" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
||||||
|
GOPROXY=proxy.golang.org go list -m ${GO_GIT_HOST}/${GITHUB_REPOSITORY}@$TAG_NAME
|
||||||
|
else
|
||||||
|
echo "Error: Invalid tag format '$TAG_NAME'. Expected 'vX.X.X'."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
|
- name: Log in to Custom Registry
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
registry: ${{ env.DOCKER_REGISTRY }}
|
||||||
|
username: ${{ env.DOCKER_USER }}
|
||||||
|
password: ${{ secrets.API_TOKEN }}
|
||||||
|
|
||||||
|
- name: Build and Push Docker Image
|
||||||
|
uses: docker/build-push-action@v6
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
push: true
|
||||||
|
tags: |
|
||||||
|
${{ env.DOCKER_IMG }}:${{ github.ref_name }}
|
||||||
|
${{ env.DOCKER_IMG }}:latest
|
||||||
|
build-args: |
|
||||||
|
VER_PKG=${{ env.VER_PKG }}
|
||||||
|
VERSION=${{ github.ref_name }}
|
||||||
|
|
||||||
|
# Detect if the helm chart was updated
|
||||||
|
check-chart:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
chart-updated: ${{ steps.filter.outputs.chart }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Check Chart Changed
|
||||||
|
uses: dorny/paths-filter@v3
|
||||||
|
id: filter
|
||||||
|
with:
|
||||||
|
base: ${{ github.ref }}
|
||||||
|
filters: |
|
||||||
|
chart:
|
||||||
|
- helm/Chart.yaml
|
||||||
|
|
||||||
|
helm-release:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: check-chart
|
||||||
|
if: ${{ needs.check-chart.outputs.chart-updated == 'true' }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout Code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Install Helm
|
||||||
|
env:
|
||||||
|
BINARY_NAME: helm
|
||||||
|
run: |
|
||||||
|
curl -fsSL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
|
||||||
|
|
||||||
|
- name: Package Chart
|
||||||
|
run: |
|
||||||
|
helm package --app-version ${VERSION} ${CHART_DIR}
|
||||||
|
|
||||||
|
- name: Publish Chart
|
||||||
|
env:
|
||||||
|
API_TOKEN: ${{ secrets.API_TOKEN }}
|
||||||
|
run: |
|
||||||
|
curl -X POST \
|
||||||
|
-H "Authorization: token ${API_TOKEN}" \
|
||||||
|
--upload-file ./${PACKAGE_NAME}-*.tgz \
|
||||||
|
https://gitea.libretechconsulting.com/api/packages/${GITHUB_REPOSITORY_OWNER}/helm/api/charts
|
38
Makefile
38
Makefile
@ -1,13 +1,13 @@
|
|||||||
.PHONY: all test build docker install clean proto check_protoc
|
.PHONY: all test build docker install clean proto check_protoc
|
||||||
|
|
||||||
CMD_NAME := demo-app # TODO: Update app name
|
CMD_NAME := demo-app
|
||||||
VERSION ?= development # Default to "development" if VERSION is not set
|
VERSION ?= development
|
||||||
API_DIR := api/
|
API_DIR := api/
|
||||||
PROTO_DIRS := $(wildcard proto/demo/app/*) # TODO: Update path (probably not demo)
|
PROTO_DIRS := $(wildcard proto/demo/app/*) # TODO: Update path (probably not demo)
|
||||||
PLATFORMS := linux/amd64 linux/arm64 darwin/amd64 darwin/arm64
|
PLATFORMS := linux/amd64 linux/arm64 darwin/amd64 darwin/arm64
|
||||||
OUTPUT_DIR := bin
|
OUTPUT_DIR := bin
|
||||||
VER_PKG := gitea.libretechconsulting.com/rmcguire/go-app/pkg/config.Version
|
VER_PKG := gitea.libretechconsulting.com/rmcguire/go-app/pkg/config.Version
|
||||||
DOCKER_IMG := gitea.libretechconsulting.com/rmcguire/go-http-server-with-otel
|
GIT_REPO := gitea.libretechconsulting.com/rmcguire/go-server-with-otel
|
||||||
|
|
||||||
all: proto test build docker
|
all: proto test build docker
|
||||||
|
|
||||||
@ -28,7 +28,9 @@ build: test
|
|||||||
OS=$$(echo $$platform | cut -d/ -f1); \
|
OS=$$(echo $$platform | cut -d/ -f1); \
|
||||||
ARCH=$$(echo $$platform | cut -d/ -f2); \
|
ARCH=$$(echo $$platform | cut -d/ -f2); \
|
||||||
OUTPUT="$(OUTPUT_DIR)/$(CMD_NAME)-$$OS-$$ARCH"; \
|
OUTPUT="$(OUTPUT_DIR)/$(CMD_NAME)-$$OS-$$ARCH"; \
|
||||||
GOOS=$$OS GOARCH=$$ARCH go build -ldflags "-X $(VER_PKG)=$(VERSION)" -o $$OUTPUT; \
|
mkdir -vp $(OUTPUT_DIR); \
|
||||||
|
echo "Building for $$platform into $$OUTPUT"; \
|
||||||
|
GOOS=$$OS GOARCH=$$ARCH go build -ldflags "-X $(VER_PKG)=$(VERSION)" -o $$OUTPUT .; \
|
||||||
echo "Built $$OUTPUT"; \
|
echo "Built $$OUTPUT"; \
|
||||||
done
|
done
|
||||||
go build -ldflags "-X $(VER_PKG)=$(VERSION)" -o bin/${CMD_NAME}
|
go build -ldflags "-X $(VER_PKG)=$(VERSION)" -o bin/${CMD_NAME}
|
||||||
@ -37,12 +39,12 @@ schema:
|
|||||||
go run . -schema > contrib/schema.json
|
go run . -schema > contrib/schema.json
|
||||||
|
|
||||||
docker:
|
docker:
|
||||||
@echo "Building Docker image $(DOCKER_IMG):$(VERSION)"
|
@echo "Building Docker image $(GIT_REPO):$(VERSION)"
|
||||||
docker build \
|
docker build \
|
||||||
--build-arg VER_PKG=$(VER_PKG) \
|
--build-arg VER_PKG=$(VER_PKG) \
|
||||||
--build-arg VERSION=$(VERSION) \
|
--build-arg VERSION=$(VERSION) \
|
||||||
-t $(DOCKER_IMG):$(VERSION) .
|
-t $(GIT_REPO):$(VERSION) .
|
||||||
docker push $(DOCKER_IMG):$(VERSION)
|
docker push $(GIT_REPO):$(VERSION)
|
||||||
|
|
||||||
install:
|
install:
|
||||||
go install -v -ldflags "-X $(VER_PKG)=$(VERSION)" .
|
go install -v -ldflags "-X $(VER_PKG)=$(VERSION)" .
|
||||||
@ -59,3 +61,25 @@ check_protoc:
|
|||||||
echo "Error: protoc-gen-go-grpc not found in PATH"; \
|
echo "Error: protoc-gen-go-grpc not found in PATH"; \
|
||||||
exit 1; \
|
exit 1; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
rename:
|
||||||
|
@echo "Current module path: $(GIT_REPO)"
|
||||||
|
@echo "Usage: make rename NAME=your/new/module/name"
|
||||||
|
@if [ -z "$(NAME)" ]; then \
|
||||||
|
echo "No name provided. Aborting."; \
|
||||||
|
exit 1; \
|
||||||
|
fi
|
||||||
|
@echo "New name: $(NAME)"
|
||||||
|
@echo "Are you sure you want to proceed? (y/N): " && read CONFIRM && if [ "$$CONFIRM" != "y" ] && [ "$$CONFIRM" != "Y" ]; then \
|
||||||
|
echo "Aborted."; \
|
||||||
|
exit 1; \
|
||||||
|
fi
|
||||||
|
@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)"
|
||||||
|
67
README.md
67
README.md
@ -1,3 +1,66 @@
|
|||||||
# go-http-server-with-otel
|
# go-server-with-otel 🚀
|
||||||
|
|
||||||
Template for a go http server with OTEL support
|
A powerful and flexible template for building Go HTTP + GRPC servers with full OpenTelemetry (OTEL) support.
|
||||||
|
Bootstrapped with the go-app framework to provide all the bells and whistles right out of the box.
|
||||||
|
Ideal for rapidly creating production-ready microservices.
|
||||||
|
|
||||||
|
Check out the [go-app framework](https://gitea.libretechconsulting.com/rmcguire/go-app) for more detail there.
|
||||||
|
|
||||||
|
## 🌟 Features
|
||||||
|
|
||||||
|
- **📈 OpenTelemetry (OTEL) Metrics & Traces** – Comprehensive observability with built-in support for metrics and traces.
|
||||||
|
- 📝 Logging with Zerolog – High-performance structured logging with zerolog for ultra-fast, leveled logging.
|
||||||
|
- **💬 GRPC + GRPC-Gateway** – Supports RESTful JSON APIs alongside gRPC with auto-generated Swagger (OpenAPI2) specs.
|
||||||
|
- 🌐 HTTP and GRPC Middleware – Flexible middleware support for HTTP and GRPC to enhance request handling, authentication, and observability.
|
||||||
|
- **📦 Multi-Arch Builds** – Robust Makefile that supports building for multiple architectures (amd64, arm64, etc.).
|
||||||
|
- **🐳 Docker Image Generation** – Easily build Docker images using `make docker`.
|
||||||
|
- **📜 Config Schema Generation** – Automatically generate JSON schemas for configuration validation.
|
||||||
|
- **📝 Proto Compilation** – Seamlessly compile .proto files with `make proto`.
|
||||||
|
- **🔄 Project Renaming** – Easily rename your project using `make rename NAME=your.gitremote.com/pathto/repo`.
|
||||||
|
- **📦 Helm Chart** – Deploy your application with Kubernetes using the provided Helm chart.
|
||||||
|
- **🤖 Gitea CI Integration** – Out-of-the-box Gitea CI pipeline configuration with `.gitea/workflows/ci.yaml`.
|
||||||
|
- **⚙️ Expandable Configuration** – Extend your app-specific configuration with go-app's built-in logging, HTTP, and GRPC config support.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📚 Getting Started
|
||||||
|
|
||||||
|
1. **Rename your package:**
|
||||||
|
```sh
|
||||||
|
make rename NAME=my.gitremote.com/pathto/repo
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Review the config struct:**
|
||||||
|
Update and customize your app-specific configuration. This merges with go-app's configuration, providing logging, HTTP, and GRPC config for free.
|
||||||
|
|
||||||
|
3. **Generate a new JSON schema:**
|
||||||
|
```sh
|
||||||
|
make schema
|
||||||
|
```
|
||||||
|
- Ensure your structs have `yaml` and `json` tags.
|
||||||
|
- With the `yaml-language-server` LSP plugin, the schema will be auto-detected in your `config.yaml`.
|
||||||
|
|
||||||
|
4. **Compile proto files:**
|
||||||
|
```sh
|
||||||
|
make proto
|
||||||
|
```
|
||||||
|
- Add paths under `proto/` as necessary.
|
||||||
|
|
||||||
|
5. **Implement your application logic.**
|
||||||
|
|
||||||
|
6. **Update Gitea CI configuration:**
|
||||||
|
Modify parameters in `.gitea/workflows/ci.yaml` as needed.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📂 Project Structure
|
||||||
|
- `proto/` - Protobuf definitions and generated files.
|
||||||
|
- `api/` - Auto-generated code for proto, grpc-gateway, and OpenAPI2 spec
|
||||||
|
- `pkg/config/` - Custom config, merged with go-app configuration
|
||||||
|
- `pkg/demo(http|grpc)/` - HTTP and GRPC server implementations
|
||||||
|
- `helm/` - Helm chart for deploying your application to Kubernetes.
|
||||||
|
- `.gitea/workflows/` - CI pipelines for automated builds and tests.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔥 Ready to build something awesome? Let's go! 🎉
|
||||||
|
8
TODO.md
8
TODO.md
@ -1,6 +1,6 @@
|
|||||||
# Demo app TODO
|
# Demo app TODO
|
||||||
|
|
||||||
- [ ] Rename project
|
- [x] Rename project
|
||||||
- [ ] Finish grpc sample implementation
|
- [x] Finish grpc sample implementation
|
||||||
- [ ] Add Dockerfile
|
- [x] Add Dockerfile
|
||||||
- [ ] Add gitea CI
|
- [x] Add gitea CI
|
||||||
|
@ -153,7 +153,7 @@ const file_demo_app_v1alpha1_app_proto_rawDesc = "" +
|
|||||||
"\x06source\x18\x03 \x01(\tR\x06source\x12\x1a\n" +
|
"\x06source\x18\x03 \x01(\tR\x06source\x12\x1a\n" +
|
||||||
"\blanguage\x18\x04 \x01(\tR\blanguage2z\n" +
|
"\blanguage\x18\x04 \x01(\tR\blanguage2z\n" +
|
||||||
"\x0eDemoAppService\x12h\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-http-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 (
|
var (
|
||||||
file_demo_app_v1alpha1_app_proto_rawDescOnce sync.Once
|
file_demo_app_v1alpha1_app_proto_rawDescOnce sync.Once
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# App Config
|
# App Config
|
||||||
APP_NAME="go-http-server-with-otel"
|
APP_NAME="go-server-with-otel"
|
||||||
APP_LOG_LEVEL=trace ## For testing only
|
APP_LOG_LEVEL=trace ## For testing only
|
||||||
APP_LOG_FORMAT=console ## console, json
|
APP_LOG_FORMAT=console ## console, json
|
||||||
APP_LOG_TIME_FORMAT=long ## long, short, unix, rfc3339, off
|
APP_LOG_TIME_FORMAT=long ## long, short, unix, rfc3339, off
|
||||||
@ -10,5 +10,5 @@ APP_OTEL_METRIC_INTERVAL_SECS=15
|
|||||||
|
|
||||||
# OTEL SDK Config
|
# OTEL SDK Config
|
||||||
OTEL_EXPORTER_OTLP_ENDPOINT="otel-collector.otel.svc.cluster.local" # Set to your otel collector
|
OTEL_EXPORTER_OTLP_ENDPOINT="otel-collector.otel.svc.cluster.local" # Set to your otel collector
|
||||||
OTEL_SERVICE_NAME="go-http-server-with-otel"
|
OTEL_SERVICE_NAME="go-server-with-otel"
|
||||||
OTEL_RESOURCE_ATTRIBUTES="env=development,service.version=(devel)"
|
OTEL_RESOURCE_ATTRIBUTES="env=development,service.version=(devel)"
|
||||||
|
7
go.mod
7
go.mod
@ -1,4 +1,4 @@
|
|||||||
module gitea.libretechconsulting.com/rmcguire/go-http-server-with-otel
|
module gitea.libretechconsulting.com/rmcguire/go-server-with-otel
|
||||||
|
|
||||||
go 1.24.1
|
go 1.24.1
|
||||||
|
|
||||||
@ -7,11 +7,11 @@ require (
|
|||||||
github.com/go-resty/resty/v2 v2.16.5
|
github.com/go-resty/resty/v2 v2.16.5
|
||||||
github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3
|
github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3
|
||||||
github.com/rs/zerolog v1.34.0
|
github.com/rs/zerolog v1.34.0
|
||||||
|
go.opentelemetry.io/otel/trace v1.35.0
|
||||||
golang.org/x/sys v0.31.0
|
golang.org/x/sys v0.31.0
|
||||||
google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463
|
google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463
|
||||||
google.golang.org/grpc v1.71.0
|
google.golang.org/grpc v1.71.0
|
||||||
google.golang.org/protobuf v1.36.6
|
google.golang.org/protobuf v1.36.6
|
||||||
k8s.io/utils v0.0.0-20250321185631-1f6e0b77f77e
|
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
@ -23,7 +23,7 @@ require (
|
|||||||
github.com/swaggest/refl v1.3.1 // indirect
|
github.com/swaggest/refl v1.3.1 // indirect
|
||||||
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 // indirect
|
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 // indirect
|
||||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 // indirect
|
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 // indirect
|
||||||
go.opentelemetry.io/otel v1.35.0 // indirect
|
go.opentelemetry.io/otel v1.35.0
|
||||||
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.35.0 // indirect
|
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.35.0 // indirect
|
||||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 // indirect
|
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 // indirect
|
||||||
go.opentelemetry.io/otel/exporters/prometheus v0.57.0 // indirect
|
go.opentelemetry.io/otel/exporters/prometheus v0.57.0 // indirect
|
||||||
@ -51,7 +51,6 @@ require (
|
|||||||
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
|
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
|
||||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 // indirect
|
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 // indirect
|
||||||
go.opentelemetry.io/otel/metric v1.35.0 // indirect
|
go.opentelemetry.io/otel/metric v1.35.0 // indirect
|
||||||
go.opentelemetry.io/otel/trace v1.35.0 // indirect
|
|
||||||
go.opentelemetry.io/proto/otlp v1.5.0 // indirect
|
go.opentelemetry.io/proto/otlp v1.5.0 // indirect
|
||||||
golang.org/x/net v0.38.0 // indirect
|
golang.org/x/net v0.38.0 // indirect
|
||||||
golang.org/x/text v0.23.0 // indirect
|
golang.org/x/text v0.23.0 // indirect
|
||||||
|
6
go.sum
6
go.sum
@ -1,5 +1,3 @@
|
|||||||
gitea.libretechconsulting.com/rmcguire/go-app v0.9.1 h1:QihWX1YeCqttpAjXq6nHWvNk1MpIhuW8bSO3G+fbsRg=
|
|
||||||
gitea.libretechconsulting.com/rmcguire/go-app v0.9.1/go.mod h1:W6YHFSGf4nJrgs9DqEaw+3J6ufIARsr1zpOs/V6gRTQ=
|
|
||||||
gitea.libretechconsulting.com/rmcguire/go-app v0.9.2 h1:DTbGae0TR7O+kKI1ZE8txgFnGb0vsYX/urFUFuoZfQM=
|
gitea.libretechconsulting.com/rmcguire/go-app v0.9.2 h1:DTbGae0TR7O+kKI1ZE8txgFnGb0vsYX/urFUFuoZfQM=
|
||||||
gitea.libretechconsulting.com/rmcguire/go-app v0.9.2/go.mod h1:W6YHFSGf4nJrgs9DqEaw+3J6ufIARsr1zpOs/V6gRTQ=
|
gitea.libretechconsulting.com/rmcguire/go-app v0.9.2/go.mod h1:W6YHFSGf4nJrgs9DqEaw+3J6ufIARsr1zpOs/V6gRTQ=
|
||||||
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
|
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
|
||||||
@ -128,6 +126,8 @@ golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
|
|||||||
golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
|
golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
|
||||||
golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
|
golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
|
||||||
golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
|
golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
|
||||||
|
golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U=
|
||||||
|
golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
|
||||||
google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463 h1:hE3bRWtU6uceqlh4fhrSnUyjKHMKB9KrTLLG+bc0ddM=
|
google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463 h1:hE3bRWtU6uceqlh4fhrSnUyjKHMKB9KrTLLG+bc0ddM=
|
||||||
google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463/go.mod h1:U90ffi8eUL9MwPcrJylN5+Mk2v3vuPDptd5yyNUiRR8=
|
google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463/go.mod h1:U90ffi8eUL9MwPcrJylN5+Mk2v3vuPDptd5yyNUiRR8=
|
||||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250324211829-b45e905df463 h1:e0AIkUUhxyBKh6ssZNrAMeqhA7RKUj42346d1y02i2g=
|
google.golang.org/genproto/googleapis/rpc v0.0.0-20250324211829-b45e905df463 h1:e0AIkUUhxyBKh6ssZNrAMeqhA7RKUj42346d1y02i2g=
|
||||||
@ -141,5 +141,3 @@ gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntN
|
|||||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
|
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
|
||||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
k8s.io/utils v0.0.0-20250321185631-1f6e0b77f77e h1:KqK5c/ghOm8xkHYhlodbp6i6+r+ChV2vuAuVRdFbLro=
|
|
||||||
k8s.io/utils v0.0.0-20250321185631-1f6e0b77f77e/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
|
|
||||||
|
2
helm/.gitignore
vendored
Normal file
2
helm/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
charts/
|
||||||
|
Chart.lock
|
30
helm/Chart.yaml
Normal file
30
helm/Chart.yaml
Normal file
@ -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
|
||||||
|
|
643
helm/library-hull.yaml
Normal file
643
helm/library-hull.yaml
Normal file
@ -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_: {}
|
||||||
|
##################################################
|
1
helm/templates/app.yaml
Normal file
1
helm/templates/app.yaml
Normal file
@ -0,0 +1 @@
|
|||||||
|
{{- include "hull.objects.prepare.all" (dict "HULL_ROOT_KEY" "hull" "ROOT_CONTEXT" $) }}
|
195
helm/values.yaml
Normal file
195
helm/values.yaml
Normal file
@ -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
|
10
main.go
10
main.go
@ -20,12 +20,12 @@ import (
|
|||||||
"golang.org/x/sys/unix"
|
"golang.org/x/sys/unix"
|
||||||
|
|
||||||
"gitea.libretechconsulting.com/rmcguire/go-app/pkg/app"
|
"gitea.libretechconsulting.com/rmcguire/go-app/pkg/app"
|
||||||
"gitea.libretechconsulting.com/rmcguire/go-app/pkg/srv/grpc/opts"
|
optsgrpc "gitea.libretechconsulting.com/rmcguire/go-app/pkg/srv/grpc/opts"
|
||||||
optshttp "gitea.libretechconsulting.com/rmcguire/go-app/pkg/srv/http/opts"
|
optshttp "gitea.libretechconsulting.com/rmcguire/go-app/pkg/srv/http/opts"
|
||||||
|
|
||||||
"gitea.libretechconsulting.com/rmcguire/go-http-server-with-otel/pkg/config"
|
"gitea.libretechconsulting.com/rmcguire/go-server-with-otel/pkg/config"
|
||||||
"gitea.libretechconsulting.com/rmcguire/go-http-server-with-otel/pkg/demogrpc"
|
"gitea.libretechconsulting.com/rmcguire/go-server-with-otel/pkg/demogrpc"
|
||||||
"gitea.libretechconsulting.com/rmcguire/go-http-server-with-otel/pkg/demohttp"
|
"gitea.libretechconsulting.com/rmcguire/go-server-with-otel/pkg/demohttp"
|
||||||
)
|
)
|
||||||
|
|
||||||
var flagSchema bool
|
var flagSchema bool
|
||||||
@ -54,7 +54,7 @@ func main() {
|
|||||||
// Prepare app
|
// Prepare app
|
||||||
app := &app.App{
|
app := &app.App{
|
||||||
AppContext: ctx,
|
AppContext: ctx,
|
||||||
GRPC: &opts.AppGRPC{
|
GRPC: &optsgrpc.AppGRPC{
|
||||||
Services: demoGRPC.GetServices(),
|
Services: demoGRPC.GetServices(),
|
||||||
GRPCDialOpts: demoGRPC.GetDialOpts(),
|
GRPCDialOpts: demoGRPC.GetDialOpts(),
|
||||||
},
|
},
|
||||||
|
@ -15,8 +15,8 @@ import (
|
|||||||
|
|
||||||
"gitea.libretechconsulting.com/rmcguire/go-app/pkg/otel"
|
"gitea.libretechconsulting.com/rmcguire/go-app/pkg/otel"
|
||||||
|
|
||||||
pb "gitea.libretechconsulting.com/rmcguire/go-http-server-with-otel/api/demo/app/v1alpha1"
|
pb "gitea.libretechconsulting.com/rmcguire/go-server-with-otel/api/demo/app/v1alpha1"
|
||||||
"gitea.libretechconsulting.com/rmcguire/go-http-server-with-otel/pkg/config"
|
"gitea.libretechconsulting.com/rmcguire/go-server-with-otel/pkg/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -3,7 +3,7 @@ package demogrpc
|
|||||||
import (
|
import (
|
||||||
"google.golang.org/protobuf/types/known/timestamppb"
|
"google.golang.org/protobuf/types/known/timestamppb"
|
||||||
|
|
||||||
pb "gitea.libretechconsulting.com/rmcguire/go-http-server-with-otel/api/demo/app/v1alpha1"
|
pb "gitea.libretechconsulting.com/rmcguire/go-server-with-otel/api/demo/app/v1alpha1"
|
||||||
)
|
)
|
||||||
|
|
||||||
type RandomFact struct {
|
type RandomFact struct {
|
||||||
|
@ -5,7 +5,7 @@ import (
|
|||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
"google.golang.org/grpc/credentials/insecure"
|
"google.golang.org/grpc/credentials/insecure"
|
||||||
|
|
||||||
demoAppPb "gitea.libretechconsulting.com/rmcguire/go-http-server-with-otel/api/demo/app/v1alpha1"
|
demoAppPb "gitea.libretechconsulting.com/rmcguire/go-server-with-otel/api/demo/app/v1alpha1"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (ds *DemoGRPCServer) GetDialOpts() []grpc.DialOption {
|
func (ds *DemoGRPCServer) GetDialOpts() []grpc.DialOption {
|
||||||
|
@ -6,7 +6,7 @@ import (
|
|||||||
|
|
||||||
"gitea.libretechconsulting.com/rmcguire/go-app/pkg/srv/http/opts"
|
"gitea.libretechconsulting.com/rmcguire/go-app/pkg/srv/http/opts"
|
||||||
|
|
||||||
"gitea.libretechconsulting.com/rmcguire/go-http-server-with-otel/pkg/config"
|
"gitea.libretechconsulting.com/rmcguire/go-server-with-otel/pkg/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
type DemoHTTPServer struct {
|
type DemoHTTPServer struct {
|
||||||
|
@ -4,7 +4,7 @@ package demo.app.v1alpha1;
|
|||||||
import "google/api/annotations.proto";
|
import "google/api/annotations.proto";
|
||||||
import "google/protobuf/timestamp.proto";
|
import "google/protobuf/timestamp.proto";
|
||||||
|
|
||||||
option go_package = "gitea.libretechconsulting.com/rmcguire/go-http-server-with-otel/api/v1alpha1/demo";
|
option go_package = "gitea.libretechconsulting.com/rmcguire/go-server-with-otel/api/v1alpha1/demo";
|
||||||
|
|
||||||
// Options for random fact, in this case
|
// Options for random fact, in this case
|
||||||
// just a language
|
// just a language
|
||||||
|
Reference in New Issue
Block a user