Skip to content
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

orchestrator: initial support #130

Merged
merged 10 commits into from
Dec 14, 2020
Merged

orchestrator: initial support #130

merged 10 commits into from
Dec 14, 2020

Conversation

sougou
Copy link
Member

@sougou sougou commented Sep 8, 2020

This is an experimental support for Orchestrator. The deployment principles are similar to that of vtctld. There are some differences:

  • API is marked as experimental.
  • Default replica count is 0. If Orchestrator is unspecified, it will not be launched.
  • It expects an additional secret: a config file with orchestrator and replication credentials among other things.
  • It's highly recommended to set disable_active_reparents=true and enable_semi_sync=false on the tablets. Right now, the user has to set them manually. This part will be enforced after we finalize the API.

I have a corresponding PR on the vitess branch that demonstrates how this works. I'll submit that later.

There is a high likelihood that we'll quickly move away from this. One possibility is to go per-shard, in which case this can become a property in the shard object.

There are no tests because this is only for people to play with. We'll need to write tests once we finalize the API.

@sougou sougou requested review from enisoc and PrismaPhonic and removed request for enisoc September 8, 2020 01:37
Copy link
Contributor

@PrismaPhonic PrismaPhonic left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Most of this seems pretty boilerplate. I assume you tested this out?

Also, I had thought that vorchestrator was going to get integrated directly in with vtctld. Did I misunderstand that? This seems to deploy orchestrator as a standalone deployment?

Also, I see that you said enable_semi_sync should be false. What's the reasoning for recommending that it's false? If this is an important recommendation, it should be documented on that flag ideally.

@@ -102,7 +106,7 @@ type VitessClusterSpec struct {
Keyspaces []VitessKeyspaceTemplate `json:"keyspaces,omitempty" patchStrategy:"merge" patchMergeKey:"name"`

// ExtraVitessFlags can optionally be used to pass flags to all Vitess components.
// WARNING: Any flags passed here must be flags that can be accepted by vtgate, vtctld and vttablet.
// WARNING: Any flags passed here must be flags that can be accepted by vtgate, vtctld, orchestrator and vttablet.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this actually true? If so this seems like a pretty big downside to this integration right now. Have we verified which flags orchestrator does not accept that vtgate, vtctld and vttablet does accept?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would think that if Orchestrator is independent of Vitess (is this orchestrator support or vorchestrator support?) that these flags should NOT be passed to orchestrator.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should generally be true. This version of Orchestrator is a vitess component. It shares (and requires) the same flags the other components do.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ahh, I see. So this is vorchestrator? If it's a Vitess component style of orchestrator, then we might want to clear this language up some. To me as a reader, it sounds like I need to go reference the main orchestrator code base to find what flags it accepts.

In other words, this reads as if it is a breaking change, when it's not.

pkg/controller/vitesscluster/reconcile_orchestrator.go Outdated Show resolved Hide resolved
pkg/controller/vitesscluster/reconcile_orchestrator.go Outdated Show resolved Hide resolved
@sougou
Copy link
Member Author

sougou commented Sep 18, 2020

Most of this seems pretty boilerplate. I assume you tested this out?

Yes. I only tested manually.

Also, I had thought that vorchestrator was going to get integrated directly in with vtctld. Did I misunderstand that? This seems to deploy orchestrator as a standalone deployment?

This is only a POC. This will allow people to play with it and give early feedback. In the endgame, there may be no separate Orchestrator component.

Also, I see that you said enable_semi_sync should be false. What's the reasoning for recommending that it's false? If this is an important recommendation, it should be documented on that flag ideally.

This is actually very important. It's going to be so important that the flag value will be either overridden by the operator, or we may go one step further and ignore it in vttablet itself. For this reason, I'm refraining from changing documentation of other components until we finalize how we're going to enforce these.

Signed-off-by: Sugu Sougoumarane <ssougou@gmail.com>
Signed-off-by: Sugu Sougoumarane <ssougou@gmail.com>
Signed-off-by: Sugu Sougoumarane <ssougou@gmail.com>
Signed-off-by: Sugu Sougoumarane <ssougou@gmail.com>
Signed-off-by: Sugu Sougoumarane <ssougou@gmail.com>
@sougou sougou closed this Oct 4, 2020
@sougou sougou reopened this Oct 4, 2020
Signed-off-by: Sugu Sougoumarane <ssougou@gmail.com>
Copy link
Collaborator

@shlomi-noach shlomi-noach left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just signalling that I've viewed this PR; I don't have the k8s/operator background to give it a technical review.

Signed-off-by: Anthony Yeh <enisoc@planetscale.com>
Signed-off-by: Anthony Yeh <enisoc@planetscale.com>
Signed-off-by: Anthony Yeh <enisoc@planetscale.com>
Signed-off-by: Anthony Yeh <enisoc@planetscale.com>
@enisoc enisoc merged commit 4624c6b into master Dec 14, 2020
@enisoc enisoc deleted the oc1-inital branch December 14, 2020 23:44
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.

4 participants