From c04cf3d935f166f515b94493c678cedb60b78e2b Mon Sep 17 00:00:00 2001 From: Adam Hukalowicz Date: Sat, 29 Nov 2025 12:22:25 +0100 Subject: [PATCH] fix: enable service mesh --- .gitignore | 1 + backend/main.go | 1 + frontend/Dockerfile | 2 +- frontend/go.mod | 4 +++- frontend/main.go | 10 +++++++- local-dev/Tiltfile | 3 +++ local-dev/istio/Tiltfile | 12 +++++++--- local-dev/jaeger/Tiltfile | 32 +++++++++++++++++++++++++ manifests/base/backend/service.yaml | 5 ++-- manifests/base/peer-authentication.yaml | 2 +- 10 files changed, 63 insertions(+), 9 deletions(-) create mode 100644 local-dev/jaeger/Tiltfile diff --git a/.gitignore b/.gitignore index 8c8702a..5e0d58c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ .idea kind-logs +vendor/ diff --git a/backend/main.go b/backend/main.go index 81ab3f6..2a118b1 100644 --- a/backend/main.go +++ b/backend/main.go @@ -43,6 +43,7 @@ func main() { w.WriteHeader(http.StatusNoContent) return } + log.Printf("%s %s %s %s", r.Method, r.UserAgent(), r.URL.Path, r.Header) h.ServeHTTP(w, r) }) } diff --git a/frontend/Dockerfile b/frontend/Dockerfile index b26fd48..74d5c59 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -18,7 +18,7 @@ RUN adduser \ COPY go.mod go.mod COPY main.go main.go -RUN GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -ldflags="-w -s" -o frontend +RUN --mount=type=cache,target="/root/.cache/go-build" GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -ldflags="-w -s" -o frontend ####### demo-app FROM scratch diff --git a/frontend/go.mod b/frontend/go.mod index b2fda43..07fb3a3 100644 --- a/frontend/go.mod +++ b/frontend/go.mod @@ -1,3 +1,5 @@ module example.com/frontend -go 1.22 +go 1.23.0 + +toolchain go1.24.7 diff --git a/frontend/main.go b/frontend/main.go index 376ffc7..9621b25 100644 --- a/frontend/main.go +++ b/frontend/main.go @@ -22,6 +22,14 @@ func main() { } proxy := httputil.NewSingleHostReverseProxy(backendURL) + originalDirector := proxy.Director + proxy.Director = func(req *http.Request) { + originalDirector(req) + req.URL.Scheme = backendURL.Scheme + req.URL.Host = backendURL.Host + req.Host = backendURL.Host + } + mux := http.NewServeMux() mux.Handle("/api/", proxy) @@ -58,6 +66,6 @@ func loggingMiddleware(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { start := time.Now() next.ServeHTTP(w, r) - log.Printf("%s %s %s", r.Method, r.URL.Path, time.Since(start)) + log.Printf("%s %s %s %s %s", r.Method, r.UserAgent(), r.URL.Path, time.Since(start), r.Header) }) } diff --git a/local-dev/Tiltfile b/local-dev/Tiltfile index 6efe0ee..7a511c5 100644 --- a/local-dev/Tiltfile +++ b/local-dev/Tiltfile @@ -3,3 +3,6 @@ include('./istio/Tiltfile') # start local LoadBalancer include('./loadbalancer/Tiltfile') + +# Install Jaeger +include('./jaeger/Tiltfile') diff --git a/local-dev/istio/Tiltfile b/local-dev/istio/Tiltfile index 2397880..5dadcf4 100644 --- a/local-dev/istio/Tiltfile +++ b/local-dev/istio/Tiltfile @@ -13,7 +13,7 @@ helm_resource( namespace = 'istio-system', labels = 'System', flags = [ - '--version=1.27.1', + '--version=1.28.0', '--create-namespace', ], auto_init = True, @@ -29,9 +29,15 @@ helm_resource( namespace = 'istio-system', labels = 'System', flags = [ - '--version=1.27.1', + '--version=1.28.0', '--create-namespace', '--set=autoscaleEnabled=false', + '--set=traceSampling=100.0', + '--set=global.proxy.tracer=zipkin', + '--set=meshConfig.enableTracing=true', + '--set=meshConfig.ingressService=istio-gateway', + '--set=meshConfig.ingressSelector=gateway', + '--set=meshConfig.defaultConfig.tracing.zipkin.address=jaeger-collector.istio-system:9411', '--wait', ], auto_init = True @@ -45,7 +51,7 @@ helm_resource( namespace = 'istio-gateway', labels = 'System', flags = [ - '--version=1.27.1', + '--version=1.28.0', '--set=autoscaling.enabled=false', '--create-namespace', ], diff --git a/local-dev/jaeger/Tiltfile b/local-dev/jaeger/Tiltfile new file mode 100644 index 0000000..8f087ae --- /dev/null +++ b/local-dev/jaeger/Tiltfile @@ -0,0 +1,32 @@ +load('ext://helm_resource', 'helm_repo', 'helm_resource') + +helm_repo( + 'jaegertracing', + 'https://jaegertracing.github.io/helm-charts' +) + +helm_resource( + 'jaeger', + 'jaegertracing/jaeger', + resource_deps = ['istio'], + namespace = 'istio-system', + labels = 'System', + flags = [ + '--version=3.4.1', + '--create-namespace', + '--set=query.enabled=false', + '--set=provisionDataStore.cassandra=false', + '--set=allInOne.enabled=true', + '--set=storage.type=memory', + '--set=agent.enabled=false', + '--set=collector.enabled=false', + ], + auto_init = False, + pod_readiness = 'ignore' +) + +k8s_resource( + workload = 'jaeger', + labels = ['System'], + port_forwards = '16686:16686', +) diff --git a/manifests/base/backend/service.yaml b/manifests/base/backend/service.yaml index 46f021e..9314d69 100644 --- a/manifests/base/backend/service.yaml +++ b/manifests/base/backend/service.yaml @@ -4,8 +4,9 @@ metadata: name: backend spec: ports: - - name: tcp-api - targetPort: api + - name: http-api port: 80 + targetPort: api + appProtocol: http selector: app: backend diff --git a/manifests/base/peer-authentication.yaml b/manifests/base/peer-authentication.yaml index 4871780..259cb67 100644 --- a/manifests/base/peer-authentication.yaml +++ b/manifests/base/peer-authentication.yaml @@ -4,4 +4,4 @@ metadata: name: strict-mtls spec: mtls: - mode: PERMISSIVE + mode: STRICT