Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
104 commits
Select commit Hold shift + click to select a range
86397a8
Changes needed to get clickhouse e2e test working with external click…
ddelnano Apr 13, 2026
f590005
Implement parquet export format
ddelnano Apr 16, 2026
3510794
Allow prometheus recorders to specifiy different kubeconfig or kubeco…
ddelnano Apr 16, 2026
5a8fb65
Fix parquet file overflow bug
ddelnano Apr 16, 2026
17188d5
Add duck db wasm visualization file
ddelnano Apr 16, 2026
63f7d5f
Temporary changes to make load testing easier
ddelnano Apr 17, 2026
839af02
Add clickhouse perf_tool suite, ability to query cross kubeconfig/kub…
ddelnano Apr 20, 2026
06a8d3a
Ensure px delete works with external k8s ApiService
ddelnano Apr 20, 2026
1f9c121
Add github workflow for perf clickhouse suite
ddelnano Apr 22, 2026
5ecab7c
Ignore non alphabetic characters in the service account json
ddelnano Apr 22, 2026
5112a10
Add tailscale debugging info for perf workflow
ddelnano Apr 22, 2026
bb80ebb
Initial sovereign_soc suite, which segfaults kelvin on first run
ddelnano Apr 22, 2026
f1302fd
Fix segfault issues, but fails with missing alerts clickhouse table
ddelnano Apr 22, 2026
cf29e2b
Add --skaffold_stderr_file to perf_tool to ease github workflow debug…
ddelnano Apr 23, 2026
026e3eb
Add x86_64_sysroot in profile
ddelnano Apr 23, 2026
6dd6107
Don't use verbose logging
ddelnano Apr 23, 2026
267ea25
Remove verbosity flag that was missed
ddelnano Apr 24, 2026
5c0eb9f
fix protocol_loadtest build
ddelnano Apr 24, 2026
d9b9adc
Install the px cli
ddelnano Apr 24, 2026
78f2853
Use correct cloud
ddelnano Apr 24, 2026
eb1abb3
Reduce test time
ddelnano Apr 24, 2026
dfcf602
Get redis-attack experiment working
ddelnano Apr 25, 2026
1d6ad69
Add perf github action for soc attack
ddelnano Apr 25, 2026
7cf848f
Don't let cronjobs fail the build
ddelnano Apr 25, 2026
1790956
Only attempt job once
ddelnano Apr 25, 2026
8af6f8a
experiment with the adaptive feature
entlein Apr 20, 2026
756d88d
settings for lab as default
entlein Apr 21, 2026
09e28ba
not sure about the scheduler annotations, but the main.go now sets th…
entlein Apr 22, 2026
e2e124b
address linting issues 1
entlein Apr 23, 2026
b7b0389
pinning trivvy to higher version
entlein Apr 23, 2026
4868412
linting part 2
entlein Apr 23, 2026
e89641d
linting part 3
entlein Apr 23, 2026
be963f5
linting part 4
entlein Apr 23, 2026
c293d90
Fix and modernize release workflows, complete ghcr.io migration, and …
ddelnano Apr 27, 2026
689ce7b
redesigning the adaptive write
entlein May 7, 2026
9ce8730
addressing the rabbit;
entlein May 8, 2026
487be4a
adaptive_export/trigger: dedupe at watermark boundary
May 8, 2026
9e8f74d
adaptive_export/trigger: validate identifiers + cover dedup with a test
May 8, 2026
546e03d
adaptive_export/trigger: stricter Endpoint validation, streaming pars…
May 8, 2026
79c60c1
adaptive_export/cmd: ADAPTIVE_SKIP_APPLY env to opt out of in-process…
May 8, 2026
996b2cb
adaptive_export: fix event_time unit + preset-script bootstrap
May 8, 2026
4243bdf
adaptive_export/cmd: built-in preset scripts fallback
May 8, 2026
428a2aa
adaptive_export/cmd: add internal/script bazel dep for builtin presets
May 8, 2026
c731d4d
adaptive_export: parse CH UInt64 wire format + diagnostic logs on pre…
May 8, 2026
7a88b4f
adaptive_export/cmd: log cluster + preset script names on install
May 8, 2026
950a2c5
adaptive_export: ignore cloud presets, install builtins, purge stale
May 8, 2026
d284491
adaptive_export: rev-1 push path (operator queries pixie + writes CH)
May 8, 2026
7e4b786
adaptive_export/cmd: skip dotted-name tables from push list (PxL limi…
May 8, 2026
b8a90ca
adaptive_export/controller: instrument pushPixieRows + per-query timeout
May 8, 2026
a79b373
adaptive_export/pxl: filter pod by namespaced key (px.upid_to_pod_nam…
May 9, 2026
59f4d68
adaptive_export/pixieapi: direct-mode JWT path bypassing cloud passth…
May 9, 2026
98ac1f0
addressing the rabbit2
entlein May 9, 2026
90c6858
adaptive_export/controller: periodic re-fan-out for full window coverage
May 9, 2026
e4329d1
addressing the rabbit3
entlein May 9, 2026
9f91360
addressing the rabbit4
entlein May 9, 2026
bb11514
addressing the rabbit5
entlein May 9, 2026
feb3a03
addressing the rabbit6
entlein May 9, 2026
e84cbac
addressing the rabbit7
entlein May 9, 2026
b599e77
addressing the rabbit8
entlein May 9, 2026
b386ce8
addressing the rabbit9
entlein May 9, 2026
9b74bc7
addressing the rabbit10
entlein May 9, 2026
833c5e5
fix perf soc eval test
entlein May 14, 2026
3b7bcab
perf soc workflow: set SOC_VIZIER_EXISTING to bind to running Vizier
May 14, 2026
02df73d
perf_tool/px deploy: diagnose + fix SetClusterID for existing-Vizier …
May 14, 2026
1d6a93e
adding load test yamls
entlein May 14, 2026
8083eeb
Merge branch 'entlein/adaptive-write-perf' of https://github.com/k8ss…
entlein May 14, 2026
57fc32d
first round of fixes and scripts for locally running the e2e test
entlein May 16, 2026
5a6e787
loadtest: lower http/redis/pgsql server cpu limit 8→4
entlein May 17, 2026
444044b
merge origin/main into entlein/adaptive-write-perf
entlein May 17, 2026
896685d
address coderabbit: fix $SCRIPT_DIR/src path bug + set -euo in e2e-test
entlein May 17, 2026
bcf902f
address coderabbit: kubescape SBOB labels + bounded init waits
entlein May 17, 2026
44ec55e
address coderabbit: 3 perf_tool Go fixes
entlein May 17, 2026
3c2af0e
address coderabbit: 3 adaptive_export fixes
entlein May 17, 2026
03caaaa
address coderabbit: clickhouse/apply.go strengthen endpoint validation
entlein May 17, 2026
ebfd740
address coderabbit: 3 perf_tool quick wins
entlein May 17, 2026
d6552dc
address coderabbit: pflag.Parse before viper bind + guard invalid config
entlein May 17, 2026
91598eb
address coderabbit: bound consecutive-failure tolerance in prom + pxl…
entlein May 17, 2026
19bcf34
address coderabbit: k8s manifest hardening + pixie cluster filter + r…
entlein May 17, 2026
bd05fd4
address coderabbit: bq_exporter honor ctx + wait for inserter drain
entlein May 17, 2026
023c086
fix sovereign-soc workflow wiring + address CR feedback (cmd/run/suites)
entlein May 17, 2026
357864f
name of experiement is redis4x
entlein May 17, 2026
b4824a0
watermark didnt get set
entlein May 17, 2026
acc9451
pgsql connection lifetime
entlein May 17, 2026
9268d9d
less parallelism
entlein May 17, 2026
413bec6
deployment needs new variables for AW
entlein May 17, 2026
8f94949
rewrite step1
entlein May 17, 2026
2ced893
refactor step 2
entlein May 17, 2026
d01b901
TDD
entlein May 17, 2026
0c8bd1e
linting and diff timeout for unittests
entlein May 18, 2026
0c6caec
adaptive_export: address CR review on rev-3 streaming
entlein May 18, 2026
0d09a8c
lint cleanup for PR #38 CI gate
entlein May 18, 2026
63b53f0
new diagramme
entlein May 18, 2026
d47dfd9
ci: address remaining lint + flaky BPF test failures on PR #38
entlein May 18, 2026
def4c69
ci: stop routing .pxl files through mypy
entlein May 18, 2026
06cec7f
ci: golangci-lint timeout + more BPF test timeout bumps
entlein May 19, 2026
4f1ae72
carnot/exec: fix the two clickhouse_*_node_test failures
entlein May 19, 2026
ab53a07
skaffold/skaffold_vizier.yaml: fix yamllint indentation on cloud-conn…
entlein May 19, 2026
3e00bb0
ci: add adaptive_export image publish workflow
entlein May 19, 2026
681eb5e
ci(adaptive_export_image): build the .tar output, drop .executable parse
entlein May 19, 2026
b6f9387
ci(adaptive_export_image): use the pixie idiomatic bazel container_pu…
entlein May 19, 2026
4d0dd08
carnot/exec/clickhouse_export_sink_node_test: clang-format auto-fix
entlein May 19, 2026
624c098
ci: exclude .local/ from shellcheck — same scope as flake8/mypy
entlein May 20, 2026
62913e7
src/stirling/obj_tools: bump elf_reader_symbolizer_bpf_test timeout
entlein May 20, 2026
41b0d36
sink/clickhouse: detect silent-write-drop from CH summary
entlein May 24, 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
15 changes: 12 additions & 3 deletions .arclint
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
"(^private\/credentials\/.*\\.yaml)",
"(^src/operator/client/versioned/)",
"(^src/operator/apis/px.dev/v1alpha1/zz_generated.deepcopy.go)",
"(^src/e2e_test/perf_tool/pkg/suites/k8s/sovereign-soc/helm-rendered/)",
"(^src/stirling/bpf_tools/bcc_bpf/system-headers)",
"(^src/stirling/mysql/testing/.*\\.json$)",
"(^src/stirling/obj_tools/testdata/go/test_go_binary.go)",
Expand Down Expand Up @@ -107,6 +108,9 @@
],
"include": [
"(\\.py$)"
],
"exclude": [
"(^\\.local/)"
]
},
"flake8-pxl": {
Expand All @@ -121,8 +125,10 @@
"mypy": {
"type": "script-and-regex",
"include": [
"(\\.py$)",
"(\\.pxl$)"
"(\\.py$)"
],
"exclude": [
"(^\\.local/)"
],
"script-and-regex.script": "mypy --config-file=mypy.ini",
"script-and-regex.regex": "/^(?P<file>.*):(?P<line>\\d+): (?P<severity>error|warning): (?P<message>.*)$/m"
Expand All @@ -142,7 +148,7 @@
"(\\.go$)"
],
"flags": [
"--timeout=5m0s",
"--timeout=15m0s",
"--output.checkstyle.path=stdout"
]
},
Expand Down Expand Up @@ -201,6 +207,9 @@
"type": "shellcheck",
"include": [
"(.*\\.sh$)"
],
"exclude": [
"(^\\.local/)"
]
},
"spelling": {
Expand Down
6 changes: 6 additions & 0 deletions .flake8rc
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,9 @@ max-line-length = 120
# N802: Function names have to be lower case. This is for GRPC service.
# E999: Mistaken error see https://github.com/PyCQA/pycodestyle/issues/584
ignore = N802,E999,W503

# .local/ holds working artifacts (sweep render scripts, runbook tooling)
# that evolve quickly and don't justify production-grade style
# enforcement. The scripts already pass mypy; flake8's aesthetic rules
# would just generate churn in every PR that touches them.
exclude = .local/
100 changes: 100 additions & 0 deletions .github/workflows/adaptive_export_image.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
---
# Build and push the adaptive_export operator image to
# ghcr.io/k8sstormcenter/vizier-adaptive_export_image. Modelled on
# vizier_release.yaml + ci/image_utils.sh::push_images_for_arch — the
# Pixie-idiomatic flow that does `bazel run :<container_push>` with
# --//k8s:image_repository / --//k8s:image_version overrides. The
# scope here is intentionally just the adaptive_export image (a
# dedicated :adaptive_export_image_push bundle in
# src/vizier/services/adaptive_export/BUILD.bazel) so the SBOB PoC
# can rebuild this one component without rebuilding kelvin / pem /
# metadata.
#
# Triggers:
# - workflow_dispatch (manual rebuild for any commit)
# - push to entlein/adaptive-write-perf (the PoC branch)
#
# Tag scheme matches the existing manually-pushed tags on
# ghcr.io/k8sstormcenter/vizier-adaptive_export_image:
# - <YYYY-MM-DD_HH-MM-SS.mmm_UTC> (timestamp, primary tag)
# - <short-sha> (commit pin, secondary tag)
# `latest` is intentionally NOT updated so we don't shift what an
# `:latest` puller resolves to without an explicit ack.
name: adaptive-export-image
on:
workflow_dispatch:
inputs:
ref:
description: 'Branch, tag or SHA to build (defaults to the workflow ref)'
required: false
type: string
push:
branches:
- entlein/adaptive-write-perf
paths:
- 'src/vizier/services/adaptive_export/**'
- '.github/workflows/adaptive_export_image.yaml'
permissions:
contents: read
packages: write
jobs:
get-dev-image-with-extras:
uses: ./.github/workflows/get_image.yaml
with:
image-base-name: "dev_image_with_extras"
ref: ${{ inputs.ref }}

build-and-push:
name: Build and push adaptive_export image
needs: get-dev-image-with-extras
runs-on: oracle-vm-16cpu-64gb-x86-64
container:
image: ${{ needs.get-dev-image-with-extras.outputs.image-with-tag }}
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: ${{ inputs.ref }}
fetch-depth: 0
- name: Add pwd to git safe dir
run: git config --global --add safe.directory `pwd`
- id: tags
run: |
TS="$(date -u +%Y-%m-%d_%H-%M-%S.%3N_UTC)"
SHA="$(git rev-parse --short HEAD)"
echo "ts=${TS}" >> "$GITHUB_OUTPUT"
echo "sha=${SHA}" >> "$GITHUB_OUTPUT"
- name: Use github bazel config
uses: ./.github/actions/bazelrc
with:
download_toplevel: 'true'
BB_API_KEY: ${{ secrets.BB_IO_API_KEY }}
- name: Log in to GHCR
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: echo "${GH_TOKEN}" | docker login ghcr.io -u "${{ github.actor }}" --password-stdin
- name: Build and push image
shell: bash
env:
IMAGE_REPO: ghcr.io/k8sstormcenter
TS: ${{ steps.tags.outputs.ts }}
SHA: ${{ steps.tags.outputs.sha }}
run: |
# Same shape as ci/image_utils.sh::push_images_for_arch — bazel
# run on the container_push target with the standard
# --//k8s:image_repository / --//k8s:image_version flags. Run
# twice with two image_versions so we publish both <ts> and
# <sha> tags; analysis is cached after the first run so only
# the push action actually re-executes.
for TAG in "${TS}" "${SHA}"; do
echo "::group::push ${IMAGE_REPO}/vizier-adaptive_export_image:${TAG}"
bazel run -c opt \
--config=stamp \
--config=x86_64_sysroot \
--//k8s:image_repository="${IMAGE_REPO}" \
--//k8s:image_version="${TAG}" \
//src/vizier/services/adaptive_export:adaptive_export_image_push
echo "::endgroup::"
done
echo "Pushed:"
echo " ${IMAGE_REPO}/vizier-adaptive_export_image:${TS}"
echo " ${IMAGE_REPO}/vizier-adaptive_export_image:${SHA}"
16 changes: 13 additions & 3 deletions .github/workflows/perf_clickhouse.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,9 @@ jobs:
run: |
tailscale status
tailscale netcheck
api_host="$(kubectl --kubeconfig="$KUBECONFIG" config view --minify -o jsonpath='{.clusters[0].cluster.server}' | sed -E 's|https?://||; s|/.*||')"
api_host="$(kubectl --kubeconfig="$KUBECONFIG" config view --minify \
-o jsonpath='{.clusters[0].cluster.server}' \
| sed -E 's|https?://||; s|/.*||')"
api_ip="${api_host%%:*}"
api_port="${api_host##*:}"
echo "--- tailscale ping ${api_ip} ---"
Expand Down Expand Up @@ -118,7 +120,7 @@ jobs:

- name: Build and install px CLI
run: |
bazel build //src/pixie_cli:px
bazel build --config=x86_64_sysroot //src/pixie_cli:px
install -m 0755 bazel-bin/src/pixie_cli/px_/px /usr/local/bin/px
px version

Expand All @@ -130,7 +132,7 @@ jobs:
run: |
bazel run //src/e2e_test/perf_tool:perf_tool -- run \
--api_key="${PX_API_KEY}" \
--cloud_addr=${{ vars.PERF_CLOUD_ADDR }}
--cloud_addr=pixie.austrianopencloudcommunity.org:443 \
--commit_sha="${{ steps.get-commit-sha.outputs.commit-sha }}" \
--experiment_name=clickhouse-export \
--suite=clickhouse-exec \
Expand All @@ -141,6 +143,14 @@ jobs:
--prom_recorder_override 'clickhouse-operator=:k8ss-forensic' \
--tags "${{ inputs.tags }}"

- name: Upload skaffold stderr log
if: always()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: skaffold-stderr-${{ github.run_id }}-${{ github.run_attempt }}
path: ${{ runner.temp }}/skaffold-stderr.log
if-no-files-found: ignore

- name: Deactivate gcloud service account
if: always()
run: gcloud auth revoke || true
Expand Down
8 changes: 6 additions & 2 deletions .github/workflows/perf_soc_attack.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,9 @@ jobs:
run: |
tailscale status
tailscale netcheck
api_host="$(kubectl --kubeconfig="$KUBECONFIG" config view --minify -o jsonpath='{.clusters[0].cluster.server}' | sed -E 's|https?://||; s|/.*||')"
api_host="$(kubectl --kubeconfig="$KUBECONFIG" config view --minify \
-o jsonpath='{.clusters[0].cluster.server}' \
| sed -E 's|https?://||; s|/.*||')"
api_ip="${api_host%%:*}"
api_port="${api_host##*:}"
echo "--- tailscale ping ${api_ip} ---"
Expand Down Expand Up @@ -138,18 +140,20 @@ jobs:
PX_API_KEY: ${{ secrets.PX_API_KEY }}
GOOGLE_APPLICATION_CREDENTIALS: ${{ steps.gcloud-creds.outputs.gcloud-creds }}
KUBECONFIG: ${{ runner.temp }}/kubeconfig
SOC_VIZIER_EXISTING: "1"
run: |
bazel run //src/e2e_test/perf_tool:perf_tool -- run \
--api_key="${PX_API_KEY}" \
--cloud_addr=pixie.austrianopencloudcommunity.org:443 \
--commit_sha="${{ steps.get-commit-sha.outputs.commit-sha }}" \
--experiment_name=redis-attack \
--experiment_name=redis-attack-4x \
--suite=sovereign-soc \
--use_local_cluster \
--export_backend=parquet-gcs \
--gcs_bucket=k8sstormcenter-soc-perf \
--container_repo=ghcr.io/k8sstormcenter \
--prom_recorder_override 'clickhouse-operator=:k8ss-forensic' \
--max_retries=1 \
--tags "${{ inputs.tags }}"

- name: Tailscale logout
Expand Down
Loading
Loading