Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

System Context and Inventory

What an SQE deployment consists of, what it talks to, who owns each part, and how long each dependency stays supported. System Overview explains how the parts work; this page is the map and the parts list.

Context

Who uses SQE, and which systems it depends on.

flowchart LR
    users["Analysts, BI tools, dbt, AI agents"]
    ops["Operating team"]
    sqe["SQE"]
    idp["Identity provider (OIDC)"]
    catalog["Iceberg catalog (Polaris, Glue, Nessie, ...)"]
    store["Object store (S3-compatible)"]
    policy["Policy service (Ranger or catalog grants)"]
    siem["SIEM / OTLP collector"]
    prom["Prometheus"]

    users -- "SQL over Flight SQL, Trino HTTP, MCP" --> sqe
    sqe -- "validate token" --> idp
    sqe -- "load and commit tables as the user" --> catalog
    sqe -- "read and write data files as the user" --> store
    sqe -- "fetch row filters, masks, grants" --> policy
    sqe -- "audit events, traces" --> siem
    prom -- "scrape metrics" --> sqe
    ops -- "deploy, operate" --> sqe

Every data access runs as the calling user: SQE forwards the user’s token to the catalog and object store and holds no service account for data.

Containers

The processes and volumes inside one deployment.

flowchart TB
    subgraph deployment["SQE deployment (one Helm release)"]
        coord["Coordinator: parse, authorize, plan, join, aggregate"]
        workers["Workers (0..n): scan Parquet, stream Arrow back"]
        audit[("Audit volume: native log + export spool")]
        spill[("Spill: local disk or S3")]
    end
    coord -- "scan tasks, user token" --> workers
    workers -- "heartbeat" --> coord
    coord --> audit
    coord --> spill
    workers --> spill

The coordinator is a single replica; workers are stateless and scale out. Nothing else in the deployment holds state.

Runtime inventory

ComponentKindOwnerState it holdsConfigured by
CoordinatorDeployment, 1 replicaOperating team, running the SQE imageSessions (memory, or a file when persistence = "file")sqe.toml via the chart ConfigMap
WorkersDeployment, 0..n replicasOperating teamNoneSame ConfigMap
Audit volumePersistentVolumeClaimOperating teamAudit log and export spoolaudit.persistence
Container imagesqe on the registry; releases tagged vX.Y.Z and :stableSQE maintainersNoneChart image
Source codeCanonical repository with CI, plus the public mirror github.com/schubergphilis/sqeSQE maintainersHistory, tagsn/a
Identity providerExternalOperating teamUsers, groups, MFA[auth]
Iceberg catalogExternalOperating teamTable metadata[catalog]
Object storeExternalOperating teamTable data[storage]
Policy serviceExternalOperating teamRow filters, masks, grants[policy], [access_control]
SIEM / collectorExternalOperating teamAudit and trace history[metrics.audit_export], metrics.otlp_endpoint

Labels. Every object the chart creates carries app.kubernetes.io/name, app.kubernetes.io/instance (the release), app.kubernetes.io/version (the SQE version), app.kubernetes.io/component (coordinator or worker) and helm.sh/chart. The chart has no value for extra labels, so add your own ownership and cost labels (team, environment, cost centre) in your deployment tooling, for example a Kustomize commonLabels overlay or a Helm post-renderer. With those in place the inventory in your CMDB can be built from the cluster.

Lifecycle register

Each dependency, the version SQE pins today, and how it is kept current. Renovate proposes updates for everything pinned in this repository, and its dependency dashboard issue is the live pinned-versus-latest view: every dependency with a newer release is listed there with its pending or blocked update. Read the “latest” column from that issue rather than from this page, which would go stale.

DependencyPinned versionSupport modelHow SQE tracks it
Rust toolchain1.98.1 (rust-toolchain.toml)Only the latest stable gets fixesBumped with each stable release
Apache DataFusion55Latest release only, no LTSMajor upgrades are planned work; minors via Renovate
Apache Arrow / Parquet (Rust)59Latest release onlyMoves with DataFusion
iceberg-rustVendored: apache main plus the RisingWave write stackUpstream main, no releases usedWeekly advisory watch on the vendored crates; periodic re-vendor
Runtime image basecgr.dev/chainguard/glibc-dynamic, digest-pinnedRolling, rebuilt daily upstreamRenovate bumps the digest; the image scan blocks high findings
Helm chartapiVersion v2, chart version = SQE versionReleased with SQELint and hardening check in CI
KubernetesChart kubeVersion: >=1.21 (policy/v1 PDB, pod seccompProfile)The three newest minors are supported upstreamThat is the technical floor; run an upstream-supported minor
Apache Polaris (quickstarts)1.7.0Latest releaseRenovate
Apache Ranger (quickstarts)2.8.0Latest releaseRenovate
Keycloak (quickstarts)26.7.0Latest releaseRenovate
PostgreSQL (quickstarts, test stack)17Five years per majorRenovate keeps 17.x patched; a major move is a hand change, with the volume name carrying the major

A dependency past its end of life is a finding: upgrade it, or record why it stays and until when.