Skip to content

[v2] Add backend, cli and ui - #604

Open
mjudeikis wants to merge 15 commits into
kbind-dev:v2-nextfrom
mjudeikis:add.backend
Open

[v2] Add backend, cli and ui#604
mjudeikis wants to merge 15 commits into
kbind-dev:v2-nextfrom
mjudeikis:add.backend

Conversation

@mjudeikis

@mjudeikis mjudeikis commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Summary

Add v2 extended implementation:

  • Add UI
  • Add new cli
  • Add backend
Screenshot 2026-07-30 at 10 34 24 Screenshot 2026-07-30 at 10 34 19 Screenshot 2026-07-30 at 10 34 11 Screenshot 2026-07-30 at 10 34 04

What Type of PR Is This?

/kind feature

Related Issue(s)

Fixes #

Release Notes

Add v2 extended core implementation (UI, Backend, CLI)

@mjudeikis
mjudeikis force-pushed the add.backend branch 2 times, most recently from 27b1922 to 23e792a Compare July 30, 2026 07:53
mjudeikis added 15 commits July 30, 2026 12:26
Signed-off-by: Mangirdas Judeikis <mangirdas@judeikis.lt>
kbind naming and root layout, stateless cookie sessions, one-time pickup
via Grant annotations, per-grant Lease link, TokenReview authenticator,
krew plugin name kept as 'bind'.

Signed-off-by: Mangirdas Judeikis <mangirdas@judeikis.lt>
The catalog is presentation + defaults on top of the core's discovery;
the Grant is the issuance record (identity x export, APIs resolved at
bind time) and the anchor for revocation, audit and the reaper.

Signed-off-by: Mangirdas Judeikis <mangirdas@judeikis.lt>
The Lease lands in the kubeconfig context's namespace when set (the
issuer pins it to the per-consumer boundary), named per (connection,
consumer cluster) and annotated with the Connection name — so a
service-layer reaper gets per-grant staleness, and tenant RBAC for
Leases stays namespace-scoped.

Signed-off-by: Mangirdas Judeikis <mangirdas@judeikis.lt>
kubeapply applies YAML multi-docs with CRD-establishment retries;
konnectorinstall embeds the konnector install (CRDs, RBAC, Deployment);
servicecrds embeds the catalog/iam CRDs for the backend's self-install.

Signed-off-by: Mangirdas Judeikis <mangirdas@judeikis.lt>
OIDC (code + PKCE) configured kube-apiserver-style, stateless encrypted
cookie/bearer sessions (no session store; HA needs only shared keys),
a TokenReview authenticator for in-platform callers, and an embedded
mock issuer behind a dev flag.

Signed-off-by: Mangirdas Judeikis <mangirdas@judeikis.lt>
Per-identity boundary namespace, ServiceAccount with RBAC enumerating
exactly the granted APIs (Cluster or Namespace scope), long-lived SA
token; Export validation against the exported-CRD labels; the bundle
builder emits the core's one-apply file with the context namespace
pinned to the boundary.

Signed-off-by: Mangirdas Judeikis <mangirdas@judeikis.lt>
Catalog browsing, bind with a single-use short-TTL pickup URL (enforced
via Grant annotations with optimistic concurrency — no gateway state),
consumer-cluster inventory from heartbeat Leases, per-export synced
instances, konnector install manifest, and flag-gated browser-apply.

Signed-off-by: Mangirdas Judeikis <mangirdas@judeikis.lt>
Marks grants stale per their own connection's heartbeat (conservative
fallback for renamed connections); revocation and boundary deletion are
explicit opt-ins.

Signed-off-by: Mangirdas Judeikis <mangirdas@judeikis.lt>
Dependency-free SPA: standalone login page, sidebar app with catalog
(related-resource chips, synced instances), clusters view, one-time
bundle ticket, connect-a-cluster flow.

Signed-off-by: Mangirdas Judeikis <mangirdas@judeikis.lt>
--enable-gateway/issuer/reaper/apply, kube-style OIDC flags, cookie
keys, CRD self-install, leader-elected controllers.

Signed-off-by: Mangirdas Judeikis <mangirdas@judeikis.lt>
login (browser dance), connect (konnector install), catalog, clusters,
instances, and binding an export via 'kubectl bind export <name>'.
Shipped to krew as the 'bind' plugin (binary kubectl-bind).

Signed-off-by: Mangirdas Judeikis <mangirdas@judeikis.lt>
Chart with module values and secret-backed OIDC/cookie config; a
two-kind-cluster Tilt setup (provider backend, consumer konnector,
seeded catalog with related resources); samples aligned with the seed.

Signed-off-by: Mangirdas Judeikis <mangirdas@judeikis.lt>
The Dockerfile gains a backend target (konnector stays the default);
image.yaml pushes both images on tags; the CLI releases via goreleaser
on final tags only (RCs skip) and krew-release-bot updates the 'bind'
plugin; make targets for backend, bind, tilt and cli-snapshot.

Signed-off-by: Mangirdas Judeikis <mangirdas@judeikis.lt>
The full-loop test drives catalog -> bind -> pickup -> one apply ->
sync through the issued RBAC-fenced credentials -> clusters/instances
views -> reaper -> revocation. The Dex test boots the real backend
binary against Dex in docker and logs in through its password form.

Signed-off-by: Mangirdas Judeikis <mangirdas@judeikis.lt>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant