-
Notifications
You must be signed in to change notification settings - Fork 55
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
data-plane-gateway deprecation #1627
Labels
change:planned
This is a planned change
Comments
jgraettinger
added a commit
that referenced
this issue
Sep 16, 2024
`authorize/user/task` enables UI shard listings/status and retrieval of task logs, as well as access to private connector networking. `authorize/user/collection` enables UI journal listing and data preview. Both offer temporary support for the current data-plane-gateway, which implements legacy authorization checks using claimed prefixes. Also introduce an address rewrite mechanism for mapping an internal data-plane legacy service address into the data-plane-gateway address in external call contexts. Issue #1627
jgraettinger
added a commit
that referenced
this issue
Sep 16, 2024
…utes `/authorize/user/task` enables UI shard listings/status and retrieval of task logs, as well as access to private connector networking. `/authorize/user/collection` enables UI journal listing and data preview. Both offer temporary support for the current data-plane-gateway, which implements legacy authorization checks using claimed prefixes. Also introduce an address rewrite mechanism for mapping an internal data-plane legacy service address into the data-plane-gateway address in external call contexts. Issue #1627
jgraettinger
added a commit
that referenced
this issue
Sep 16, 2024
…utes `/authorize/user/task` enables UI shard listings/status and retrieval of task logs, as well as access to private connector networking. `/authorize/user/collection` enables UI journal listing and data preview. Both offer temporary support for the current data-plane-gateway, which implements legacy authorization checks using claimed prefixes. Also introduce an address rewrite mechanism for mapping an internal data-plane legacy service address into the data-plane-gateway address in external call contexts. Issue #1627
jgraettinger
added a commit
that referenced
this issue
Sep 17, 2024
…utes `/authorize/user/task` enables UI shard listings/status and retrieval of task logs, as well as access to private connector networking. `/authorize/user/collection` enables UI journal listing and data preview. Both offer temporary support for the current data-plane-gateway, which implements legacy authorization checks using claimed prefixes. Also introduce an address rewrite mechanism for mapping an internal data-plane legacy service address into the data-plane-gateway address in external call contexts. Issue #1627
jgraettinger
added a commit
that referenced
this issue
Sep 17, 2024
…ions This change introduces the agent API to `flowctl`, which is the proverbial straw which motivated a deeper refactor of flowctl configuration. As a headline feature, `flowctl` supports the new task and collection authorization APIs and uses them in support of serving existing subcommands for reading collections, previews, and read ops logs or stats. Clean up management of access and refresh tokens by obtaining access tokens or generating refresh tokens prior to calling into a particular sub-command. Preserve the ability to run `flowctl` in an unauthenticated mode. Make it easier to use `flowctl` against a local stack by introducing alternative defaults when running under a "local" profile. Also fix handling of single-use refresh tokens, where we must retain the updated secret after using it to generate a new access token. We could now consider having `flowctl` create single-use refresh tokens rather than multi-use ones, but I didn't want to take that step just yet. Also fix mis-ordering of output when reading journals. Also fix OffsetNotYetAvailable error when reading a journal in non-blocking mode. Issue #1627
jgraettinger
added a commit
that referenced
this issue
Sep 20, 2024
…utes `/authorize/user/task` enables UI shard listings/status and retrieval of task logs, as well as access to private connector networking. `/authorize/user/collection` enables UI journal listing and data preview. Both offer temporary support for the current data-plane-gateway, which implements legacy authorization checks using claimed prefixes. Also introduce an address rewrite mechanism for mapping an internal data-plane legacy service address into the data-plane-gateway address in external call contexts. Issue #1627
jgraettinger
added a commit
that referenced
this issue
Sep 20, 2024
…ions This change introduces the agent API to `flowctl`, which is the proverbial straw which motivated a deeper refactor of flowctl configuration. As a headline feature, `flowctl` supports the new task and collection authorization APIs and uses them in support of serving existing subcommands for reading collections, previews, and read ops logs or stats. Clean up management of access and refresh tokens by obtaining access tokens or generating refresh tokens prior to calling into a particular sub-command. Preserve the ability to run `flowctl` in an unauthenticated mode. Make it easier to use `flowctl` against a local stack by introducing alternative defaults when running under a "local" profile. Also fix handling of single-use refresh tokens, where we must retain the updated secret after using it to generate a new access token. We could now consider having `flowctl` create single-use refresh tokens rather than multi-use ones, but I didn't want to take that step just yet. Also fix mis-ordering of output when reading journals. Also fix OffsetNotYetAvailable error when reading a journal in non-blocking mode. Issue #1627
jgraettinger
added a commit
that referenced
this issue
Sep 20, 2024
…utes `/authorize/user/task` enables UI shard listings/status and retrieval of task logs, as well as access to private connector networking. `/authorize/user/collection` enables UI journal listing and data preview. Both offer temporary support for the current data-plane-gateway, which implements legacy authorization checks using claimed prefixes. Also introduce an address rewrite mechanism for mapping an internal data-plane legacy service address into the data-plane-gateway address in external call contexts. Issue #1627
jgraettinger
added a commit
that referenced
this issue
Sep 20, 2024
…ions This change introduces the agent API to `flowctl`, which is the proverbial straw which motivated a deeper refactor of flowctl configuration. As a headline feature, `flowctl` supports the new task and collection authorization APIs and uses them in support of serving existing subcommands for reading collections, previews, and read ops logs or stats. Clean up management of access and refresh tokens by obtaining access tokens or generating refresh tokens prior to calling into a particular sub-command. Preserve the ability to run `flowctl` in an unauthenticated mode. Make it easier to use `flowctl` against a local stack by introducing alternative defaults when running under a "local" profile. Also fix handling of single-use refresh tokens, where we must retain the updated secret after using it to generate a new access token. We could now consider having `flowctl` create single-use refresh tokens rather than multi-use ones, but I didn't want to take that step just yet. Also fix mis-ordering of output when reading journals. Also fix OffsetNotYetAvailable error when reading a journal in non-blocking mode. Issue #1627
Merged
6 tasks
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Federated data-planes are mostly out, with a couple lingering issues related to data-plane-gateway:
Both issues revolve around
data-plane-gateway
, which is a legacy component that pre-dates the federated data-planes work (which introduced "TLS everywhere", a full-fledged authorization system for brokers and reactors, and an authorization API within the control plane for brokered access).High level, we seek to remove
data-plane-gateway
altogether and enable a) direct UI access to data-planes brokered through an authorization API and b) direct support for connector networking within data-planes.Getting shard status, listing, and collection data preview working:
/authorize/user/task
API/authorize/user/collection
APIprefixes
claims used by old DPG auth checks.flowctl
to use new authorization APIs for interacting with tasks and collections.Discussion
For this stage, we're leaving DPG in place and unmodified, but are routing "around" it via new authorization APIs. These APIs will include DPG addresses for tasks / collections in the legacy data-plane, but the caller is able to use these addresses without being aware that it's the DPG versus a new data-plane. New data-planes speak the same grpc-web API which DPG provides.
The legacy data-plane cannot directly be reached by the UI, which means DPG must still be in the loop. The authorization APIs have compatibility measures in place which mean the unmodified DPG is able to use access tokens minted by these new APIs.
Getting connector networking working:
37b065a8796c8d1-8080
), thereactor.the-data-plane.dp.estuary-data.com
service address, or a specificreactor-XYZ-003.reactor.the-data-plane.dp.estuary-data.com
host underneath./authorize/user/task
to obtain an authorization token, which is then used with ProxyConnector.Discussion
This works because reactors already use a wildcard TLS cert
*.reactor.the-data-plane.estuary-data.com, reactor.the-data-plane.estuary-data.com
. We can add a wildcard DNS entry for the service address so that TLS connections to37b065a8796c8d1-8080.reactor.the-data-plane.dp.estuary-data.com
route to a reactor, which can then examine the subdomain to determine what kind of connection it is.DPG will continue to serve connector connections for the legacy data-plane but will never support new data-planes.
Allowing cross data-plane access into the legacy data-plane.
/authorize/task
API transparently re-writes legacy data-plane broker address to use DPG in cross-data-plane contextsDiscussion
It's already the case that the legacy data-plane can read or write to new data-planes, but we can also achieve the inverse and allow tasks in new data-planes to read or write collections in the legacy data-plane.
Tasks in new data-planes will transparently interact with the DPG instead of brokers, where the DPG proxies Read/List/Append on their behalf. A gotcha to watch out for is that instances of DPG spread RPCs around the cluster and don't, for example, send all List watches to a single broker.
Cleanups
data_planes
row are updated and DPG grpc-web APIs immediately stop being usedThe text was updated successfully, but these errors were encountered: