-
Notifications
You must be signed in to change notification settings - Fork 62
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-controller for managing data-plane life cycles #1739
Conversation
Add a view_logs RPC variant which takes a lower-bound last_logged_at and orders on ascending logged_at. Apply various column updates to `data_planes` row for a future data-plane-controller. Enforce a constraint that the data_planes configuration and deployment branch cannot be changed while it's status != Idle.
Instead of fetching all logs every RPC, pass an exclusive lower-bound logged_at from which further logs are fetched. Also add a raw command for fetching logs of a specific bearer token.
Calculate a suitable value for the Pulumi stack name of a data-plane. Prefix transform names with "from", because hashes with leading digits are invalid.
0a4d85a
to
be54ea5
Compare
TestingI performed extensive scenario testing against a private estuary_support/ data-plane in Vultr, including:
I used the new command I also spun up a local stack and verified the new |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, left a nit/question and one sanity check suggestion
The controller uses the recent `automations` crate to monitor structured changes to a bound data_planes and drive the data-plane to convergence. It's modeled as a CI/CD pipeline, where an indicated branch of our dry-dock repo (containing Pulumi and Ansible infrastructure) is deployed for the given data-plane. The controller performs the full lifecycle required for rolling updates: - `pulumi up` to create new resources or respond to replacements - Awaiting DNS propagation - Running the Ansible playbook to provision instances - Running `pulumi up` to reflect readiness of started instances - Awaiting DNS propagation (again) It also periodically refreshes a stack from remote providers to detect changed or deleted resources, such as EC2 instance replacements, and responds accordingly to heal the infrastructure.
be54ea5
to
0430e36
Compare
## What's Changed * flowctl: use new view_logs RPC with logged_at bound estuary/flow#1739 * flowctl raw bearer-logs: add --since parameter with 1 hour default estuary/flow#1752 * flowctl: add `raw spec` support for materializations estuary/flow#1798 * protocols/flow: add array inference to protocol estuary/flow#1787 **Full Changelog**: estuary/flow@v0.5.7...v0.5.8
## What's Changed * flowctl: use new view_logs RPC with logged_at bound estuary/flow#1739 * flowctl raw bearer-logs: add --since parameter with 1 hour default estuary/flow#1752 * flowctl: add `raw spec` support for materializations estuary/flow#1798 * protocols/flow: add array inference to protocol estuary/flow#1787 **Full Changelog**: estuary/flow@v0.5.7...v0.5.8
Description:
The controller uses the recent
automations
crate to monitor structuredchanges to a bound data_planes and drive the data-plane to convergence.
It's modeled as a CI/CD pipeline, where an indicated branch of our
dry-dock repo (containing Pulumi and Ansible infrastructure) is deployed
for the given data-plane.
The controller performs the full lifecycle required for rolling updates:
pulumi up
to create new resources or respond to replacementspulumi up
to reflect readiness of started instancesIt also periodically refreshes a stack from remote providers to detect
changed or deleted resources, such as EC2 instance replacements, and
responds accordingly to heal the infrastructure.
A number of sanity-checks are built in to verify that we're modifying data-plane configurations in allowed ways, and that we're not performing modifications while the controller is actively driving the data-plane towards convergence.
The controller also publishes a variety of exported Pulumi outputs which customers need to know about, such as IAM users and GCP service accounts, AWS private link bindings, and VPC CIDR blocks.
Fixes #1727
Workflow steps:
(How does one use this feature, and how has it changed)
Documentation links affected:
(list any documentation links that you created, or existing ones that you've identified as needing updates, along with a brief description)
Notes for reviewers:
(anything that might help someone review this PR)
This change is![Reviewable](https://camo.githubusercontent.com/1541c4039185914e83657d3683ec25920c672c6c5c7ab4240ee7bff601adec0b/68747470733a2f2f72657669657761626c652e696f2f7265766965775f627574746f6e2e737667)