Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
d68c587
Flip to using DNSCluster for cluster discovery
michaeljguarino Mar 15, 2026
006f0a0
feat(observability-proxy): add initial setup with CI/CD integration a…
floreks Mar 17, 2026
55d6e55
docs(observability-proxy): fix relative link in README.md to logging …
floreks Mar 17, 2026
c09804b
`refactor(observability-proxy): remove IP rate limiting logic and its…
floreks Mar 17, 2026
9f8593a
chore(observability-proxy): remove ratelimit import and add bin to .g…
floreks Mar 17, 2026
329a4d5
refactor(observability-proxy): remove rate limiting logic and tests, …
floreks Mar 17, 2026
5aec6c0
Merge remote-tracking branch 'origin/master' into sebastian/prod-4541…
floreks Mar 17, 2026
b9031b8
`feat(observability-proxy): enhance with E2E tests and refactor mock …
floreks Mar 17, 2026
9393645
`chore(docker-compose): remove default mock hosts for observability-p…
floreks Mar 17, 2026
959a705
Merge remote-tracking branch 'origin/master' into sebastian/prod-4541…
floreks Mar 17, 2026
fe63cd9
`chore(observability-proxy): remove unused mock-upstream application`
floreks Mar 17, 2026
4ee2629
Merge remote-tracking branch 'origin/master' into sebastian/prod-4541…
floreks Mar 17, 2026
3a1e12e
feat(observability-proxy): add metering metrics and update Prometheus…
floreks Mar 17, 2026
5dd381b
refactor(observability-proxy): restructure main logic with run functi…
floreks Mar 17, 2026
e6391bf
feat(observability-proxy): introduce elastic bulk write service in do…
floreks Mar 17, 2026
f5ec72d
refactor(Dockerfile): enhance build process with architecture variabl…
floreks Mar 17, 2026
17ec477
refactor(observability-proxy): replace query metrics with metering in…
floreks Mar 17, 2026
6bdc778
`fix(metering): handle metering error gracefully in meter function`
floreks Mar 17, 2026
3302d7f
feat(observability-proxy): implement caching deduplication and method…
floreks Mar 17, 2026
0f44f01
feat(console): add NetworkPolicy for internal ports
floreks Mar 18, 2026
c5dfd60
feat(observability-proxy): enhance request byte counting and CI/CD wo…
floreks Mar 18, 2026
6b6ffc6
feat(observability-proxy): improve server startup and shutdown handling
floreks Mar 18, 2026
50b36ea
feat(console): update NetworkPolicy and service configurations
floreks Mar 18, 2026
74361b1
`refactor(observability-proxy): replace groupcache with x/sync for im…
floreks Mar 18, 2026
ae3f738
feat(observability-proxy): update Kubernetes labels
floreks Mar 18, 2026
8cdd84a
fix(observability-proxy): correct service labels for consistent deplo…
floreks Mar 18, 2026
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
210 changes: 210 additions & 0 deletions .github/workflows/observability-proxy-cd.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,210 @@
name: CD / Observability Proxy

on:
workflow_dispatch:
inputs:
tag:
description: "Tag to deploy"
required: true
push:
branches:
- "master"
tags:
- "v*.*.*"

permissions:
contents: read

env:
GOPATH: /home/runner/go
GOBIN: /home/runner/go/bin
GOPROXY: "https://proxy.golang.org"
REGISTRY_IMAGE: ghcr.io/pluralsh/observability-proxy

jobs:
test:
name: Unit test
runs-on: ubuntu-latest
defaults:
run:
shell: bash
working-directory: go/observability-proxy
timeout-minutes: 10
steps:
- uses: actions/checkout@v6
- uses: actions/setup-go@v6
with:
go-version-file: go/observability-proxy/go.mod
cache: true
- run: go mod download
- run: GOCACHE=/tmp/go-build go test ./...

build-observability-proxy:
name: Build observability-proxy image
needs: [test]
permissions:
contents: read
id-token: write
packages: write
strategy:
fail-fast: false
matrix:
platforms:
- platform: linux/amd64
runner: ubuntu-24.04
- platform: linux/arm64
runner: ubuntu-24.04-arm
runs-on: ${{ matrix.platforms.runner }}
steps:
- name: Checkout
uses: actions/checkout@v6
with:
fetch-depth: 0

- name: Prepare
run: |
platform=${{ matrix.platforms.platform }}
echo "PLATFORM_PAIR=${platform//\//-}" >> "$GITHUB_ENV"

- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY_IMAGE }}

- name: Login to GHCR
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}

- uses: google-github-actions/auth@v1
with:
workload_identity_provider: "projects/${{ secrets.GOOGLE_PROJECT_ID }}/locations/global/workloadIdentityPools/github/providers/github"
service_account: "terraform@pluralsh.iam.gserviceaccount.com"
token_format: "access_token"
create_credentials_file: true

- uses: google-github-actions/setup-gcloud@v1.0.1

- name: Login to GCR
run: gcloud auth configure-docker -q

- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}

- name: Set up QEMU
uses: docker/setup-qemu-action@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Build and push by digest
id: build
uses: docker/build-push-action@v6
with:
context: ./go/observability-proxy
file: ./go/observability-proxy/Dockerfile
tags: ${{ env.REGISTRY_IMAGE }}
labels: ${{ steps.meta.outputs.labels }}
platforms: ${{ matrix.platforms.platform }}
outputs: type=image,push-by-digest=true,name-canonical=true,push=true
cache-from: type=gha
cache-to: type=gha,mode=max

- name: Export digest
run: |
mkdir -p "${{ runner.temp }}/digests"
digest="${{ steps.build.outputs.digest }}"
touch "${{ runner.temp }}/digests/${digest#sha256:}"

- name: Upload digest
uses: actions/upload-artifact@v7
with:
name: digests-observability-proxy-${{ env.PLATFORM_PAIR }}-${{ github.run_id }}
path: ${{ runner.temp }}/digests/*
if-no-files-found: error
Comment thread
floreks marked this conversation as resolved.
retention-days: 1

publish-observability-proxy:
name: Publish observability-proxy image
needs: [build-observability-proxy]
permissions:
contents: read
id-token: write
packages: write
strategy:
fail-fast: false
matrix:
images:
- ghcr.io/pluralsh/observability-proxy
- gcr.io/pluralsh/observability-proxy
- docker.io/pluralsh/observability-proxy
runs-on: ubuntu-latest
steps:
- name: Download digests
uses: actions/download-artifact@v7
with:
path: ${{ runner.temp }}/digests
pattern: digests-observability-proxy-*
merge-multiple: true

- name: Login to GHCR
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}

- uses: google-github-actions/auth@v1
with:
workload_identity_provider: "projects/${{ secrets.GOOGLE_PROJECT_ID }}/locations/global/workloadIdentityPools/github/providers/github"
service_account: "terraform@pluralsh.iam.gserviceaccount.com"
token_format: "access_token"
create_credentials_file: true

- uses: google-github-actions/setup-gcloud@v1.0.1

- name: Login to GCR
run: gcloud auth configure-docker -q

- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Resolve tag version
id: tag_version
if: startsWith(github.ref, 'refs/tags/')
run: |
echo "version=${GITHUB_REF_NAME#v}" >> "$GITHUB_OUTPUT"

- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ matrix.images }}
tags: |
type=ref,event=branch
type=ref,event=pr
type=sha
type=semver,pattern={{version}},value=${{ steps.tag_version.outputs.version }},enable=${{ steps.tag_version.outputs.version != '' }}
type=raw,value=${{ github.event.inputs.tag }},enable=${{ github.event.inputs.tag != '' }}

- name: Create manifest list and push
working-directory: ${{ runner.temp }}/digests
run: |
docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
$(printf '${{ env.REGISTRY_IMAGE }}@sha256:%s ' *)

- name: Inspect image
run: |
docker buildx imagetools inspect ${{ matrix.images }}:${{ steps.meta.outputs.version }}
163 changes: 163 additions & 0 deletions .github/workflows/observability-proxy-ci.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
name: CI / Observability Proxy

on:
pull_request:
branches:
- "**"
paths:
- ".github/workflows/observability-proxy-ci.yaml"
- "go/observability-proxy/**"
- "proto/console.proto"

env:
GOPATH: /home/runner/go/
GOPROXY: "https://proxy.golang.org"
REGISTRY_IMAGE: ghcr.io/pluralsh/observability-proxy

jobs:
test:
name: Test
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v6

- name: Set up Go
uses: actions/setup-go@v6
with:
go-version-file: go/observability-proxy/go.mod

- name: Run tests
run: GOCACHE=/tmp/go-build go test ./...
working-directory: go/observability-proxy

build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v6

- name: Set up Go
uses: actions/setup-go@v6
with:
go-version-file: go/observability-proxy/go.mod

- name: Build binary
run: make build
working-directory: go/observability-proxy

build-image:
name: Build image
if: ${{ github.event.pull_request.head.repo.full_name == github.repository }}
needs: [build, test]
permissions:
contents: read
packages: write
strategy:
fail-fast: false
matrix:
platforms:
- platform: linux/amd64
runner: ubuntu-24.04
- platform: linux/arm64
runner: ubuntu-24.04-arm
runs-on: ${{ matrix.platforms.runner }}
steps:
- name: Checkout
uses: actions/checkout@v6
with:
fetch-depth: 0

- name: Prepare
run: |
platform=${{ matrix.platforms.platform }}
echo "PLATFORM_PAIR=${platform//\//-}" >> "$GITHUB_ENV"

- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY_IMAGE }}

- name: Set up QEMU
uses: docker/setup-qemu-action@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Login to GHCR
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build and push by digest
id: build
uses: docker/build-push-action@v6
with:
context: go/observability-proxy
file: go/observability-proxy/Dockerfile
tags: ${{ env.REGISTRY_IMAGE }}
labels: ${{ steps.meta.outputs.labels }}
platforms: ${{ matrix.platforms.platform }}
outputs: type=image,push-by-digest=true,name-canonical=true,push=true
cache-from: type=gha
cache-to: type=gha,mode=max

- name: Export digest
run: |
mkdir -p "${{ runner.temp }}/digests"
digest="${{ steps.build.outputs.digest }}"
touch "${{ runner.temp }}/digests/${digest#sha256:}"

- name: Upload digest
uses: actions/upload-artifact@v7
with:
name: digests-observability-proxy-${{ env.PLATFORM_PAIR }}
path: ${{ runner.temp }}/digests/*
if-no-files-found: error
retention-days: 1

publish-image:
name: Publish PR image
if: ${{ github.event.pull_request.head.repo.full_name == github.repository }}
needs: [build-image]
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Download digests
uses: actions/download-artifact@v7
with:
path: ${{ runner.temp }}/digests
pattern: digests-observability-proxy-*
merge-multiple: true

- name: Login to GHCR
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY_IMAGE }}
tags: |
type=sha
type=ref,event=pr
type=raw,value=pr-${{ github.event.pull_request.number }}

- name: Create manifest list and push
working-directory: ${{ runner.temp }}/digests
run: |
docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
$(printf '${{ env.REGISTRY_IMAGE }}@sha256:%s ' *)
3 changes: 3 additions & 0 deletions charts/console/templates/deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,9 @@ spec:
- name: epmd
containerPort: 4369
protocol: TCP
- name: grpc
containerPort: 50051
protocol: TCP
livenessProbe:
{{ toYaml .Values.livenessProbe | nindent 10 }}
readinessProbe:
Expand Down
Loading
Loading