Skip to content

Commit 0bda401

Browse files
separate out orchestratord clap definitions from controller config
1 parent 156f327 commit 0bda401

File tree

5 files changed

+385
-286
lines changed

5 files changed

+385
-286
lines changed

src/orchestratord/src/bin/orchestratord.rs

Lines changed: 258 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,25 @@ use std::{
1313
sync::{Arc, LazyLock},
1414
};
1515

16-
use k8s_openapi::apiextensions_apiserver::pkg::apis::apiextensions::v1::CustomResourceColumnDefinition;
16+
use http::HeaderValue;
17+
use k8s_openapi::{
18+
api::core::v1::{Affinity, ResourceRequirements, Toleration},
19+
apiextensions_apiserver::pkg::apis::apiextensions::v1::CustomResourceColumnDefinition,
20+
};
1721
use kube::runtime::watcher;
22+
use mz_cloud_provider::CloudProvider;
1823
use tracing::info;
1924

2025
use mz_build_info::{BuildInfo, build_info};
21-
use mz_orchestrator_kubernetes::util::create_client;
26+
use mz_orchestrator_kubernetes::{KubernetesImagePullPolicy, util::create_client};
2227
use mz_orchestrator_tracing::{StaticTracingConfig, TracingCliArgs};
2328
use mz_orchestratord::{
24-
controller,
29+
controller::{self, materialize::DefaultCertificateSpecs},
2530
k8s::register_crds,
2631
metrics::{self, Metrics},
2732
};
2833
use mz_ore::{
29-
cli::{self, CliConfig},
34+
cli::{self, CliConfig, KeyValueArg},
3035
error::ErrorExt,
3136
metrics::MetricsRegistry,
3237
};
@@ -45,8 +50,159 @@ pub struct Args {
4550
#[clap(long, default_value = "[::]:3100")]
4651
metrics_listen_address: SocketAddr,
4752

48-
#[clap(flatten)]
49-
materialize_controller_args: controller::materialize::MaterializeControllerArgs,
53+
#[clap(long)]
54+
cloud_provider: CloudProvider,
55+
#[clap(long)]
56+
region: String,
57+
#[clap(long)]
58+
create_balancers: bool,
59+
#[clap(long)]
60+
create_console: bool,
61+
#[clap(long)]
62+
helm_chart_version: Option<String>,
63+
#[clap(long, default_value = "kubernetes")]
64+
secrets_controller: String,
65+
#[clap(long)]
66+
collect_pod_metrics: bool,
67+
#[clap(long)]
68+
enable_prometheus_scrape_annotations: bool,
69+
#[clap(long)]
70+
disable_authentication: bool,
71+
72+
#[clap(long)]
73+
segment_api_key: Option<String>,
74+
#[clap(long)]
75+
segment_client_side: bool,
76+
77+
#[clap(long)]
78+
console_image_tag_default: String,
79+
#[clap(long)]
80+
console_image_tag_map: Vec<KeyValueArg<String, String>>,
81+
82+
#[clap(long)]
83+
aws_account_id: Option<String>,
84+
#[clap(long)]
85+
environmentd_iam_role_arn: Option<String>,
86+
#[clap(long)]
87+
environmentd_connection_role_arn: Option<String>,
88+
#[clap(long)]
89+
aws_secrets_controller_tags: Vec<String>,
90+
#[clap(long)]
91+
environmentd_availability_zones: Option<Vec<String>>,
92+
93+
#[clap(long)]
94+
ephemeral_volume_class: Option<String>,
95+
#[clap(long)]
96+
scheduler_name: Option<String>,
97+
#[clap(long)]
98+
enable_security_context: bool,
99+
#[clap(long)]
100+
enable_internal_statement_logging: bool,
101+
#[clap(long, default_value = "false")]
102+
disable_statement_logging: bool,
103+
104+
#[clap(long)]
105+
orchestratord_pod_selector_labels: Vec<KeyValueArg<String, String>>,
106+
#[clap(long)]
107+
environmentd_node_selector: Vec<KeyValueArg<String, String>>,
108+
#[clap(long, value_parser = parse_affinity)]
109+
environmentd_affinity: Option<Affinity>,
110+
#[clap(long = "environmentd-toleration", value_parser = parse_tolerations)]
111+
environmentd_tolerations: Option<Vec<Toleration>>,
112+
#[clap(long, value_parser = parse_resources)]
113+
environmentd_default_resources: Option<ResourceRequirements>,
114+
#[clap(long)]
115+
clusterd_node_selector: Vec<KeyValueArg<String, String>>,
116+
#[clap(long, value_parser = parse_affinity)]
117+
clusterd_affinity: Option<Affinity>,
118+
#[clap(long = "clusterd-toleration", value_parser = parse_tolerations)]
119+
clusterd_tolerations: Option<Vec<Toleration>>,
120+
#[clap(long)]
121+
balancerd_node_selector: Vec<KeyValueArg<String, String>>,
122+
#[clap(long, value_parser = parse_affinity)]
123+
balancerd_affinity: Option<Affinity>,
124+
#[clap(long = "balancerd-toleration", value_parser = parse_tolerations)]
125+
balancerd_tolerations: Option<Vec<Toleration>>,
126+
#[clap(long, value_parser = parse_resources)]
127+
balancerd_default_resources: Option<ResourceRequirements>,
128+
#[clap(long)]
129+
console_node_selector: Vec<KeyValueArg<String, String>>,
130+
#[clap(long, value_parser = parse_affinity)]
131+
console_affinity: Option<Affinity>,
132+
#[clap(long = "console-toleration", value_parser = parse_tolerations)]
133+
console_tolerations: Option<Vec<Toleration>>,
134+
#[clap(long, value_parser = parse_resources)]
135+
console_default_resources: Option<ResourceRequirements>,
136+
#[clap(long, default_value = "always", value_enum)]
137+
image_pull_policy: KubernetesImagePullPolicy,
138+
#[clap(long)]
139+
network_policies_internal_enabled: bool,
140+
#[clap(long)]
141+
network_policies_ingress_enabled: bool,
142+
#[clap(long)]
143+
network_policies_ingress_cidrs: Vec<String>,
144+
#[clap(long)]
145+
network_policies_egress_enabled: bool,
146+
#[clap(long)]
147+
network_policies_egress_cidrs: Vec<String>,
148+
149+
#[clap(long)]
150+
environmentd_cluster_replica_sizes: Option<String>,
151+
#[clap(long)]
152+
bootstrap_default_cluster_replica_size: Option<String>,
153+
#[clap(long)]
154+
bootstrap_builtin_system_cluster_replica_size: Option<String>,
155+
#[clap(long)]
156+
bootstrap_builtin_probe_cluster_replica_size: Option<String>,
157+
#[clap(long)]
158+
bootstrap_builtin_support_cluster_replica_size: Option<String>,
159+
#[clap(long)]
160+
bootstrap_builtin_catalog_server_cluster_replica_size: Option<String>,
161+
#[clap(long)]
162+
bootstrap_builtin_analytics_cluster_replica_size: Option<String>,
163+
#[clap(long)]
164+
bootstrap_builtin_system_cluster_replication_factor: Option<u32>,
165+
#[clap(long)]
166+
bootstrap_builtin_probe_cluster_replication_factor: Option<u32>,
167+
#[clap(long)]
168+
bootstrap_builtin_support_cluster_replication_factor: Option<u32>,
169+
#[clap(long)]
170+
bootstrap_builtin_analytics_cluster_replication_factor: Option<u32>,
171+
172+
#[clap(
173+
long,
174+
default_values = &["http://local.dev.materialize.com:3000", "http://local.mtrlz.com:3000", "http://localhost:3000", "https://staging.console.materialize.com"],
175+
)]
176+
environmentd_allowed_origins: Vec<HeaderValue>,
177+
#[clap(long, default_value = "https://console.materialize.com")]
178+
internal_console_proxy_url: String,
179+
180+
#[clap(long, default_value = "6875")]
181+
environmentd_sql_port: u16,
182+
#[clap(long, default_value = "6876")]
183+
environmentd_http_port: u16,
184+
#[clap(long, default_value = "6877")]
185+
environmentd_internal_sql_port: u16,
186+
#[clap(long, default_value = "6878")]
187+
environmentd_internal_http_port: u16,
188+
#[clap(long, default_value = "6879")]
189+
environmentd_internal_persist_pubsub_port: u16,
190+
191+
#[clap(long, default_value = "6875")]
192+
balancerd_sql_port: u16,
193+
#[clap(long, default_value = "6876")]
194+
balancerd_http_port: u16,
195+
#[clap(long, default_value = "8080")]
196+
balancerd_internal_http_port: u16,
197+
198+
#[clap(long, default_value = "8080")]
199+
console_http_port: u16,
200+
201+
#[clap(long, default_value = "{}")]
202+
default_certificate_specs: DefaultCertificateSpecs,
203+
204+
#[clap(long, hide = true)]
205+
disable_license_key_checks: bool,
50206

51207
#[clap(flatten)]
52208
tracing: TracingCliArgs,
@@ -55,6 +211,18 @@ pub struct Args {
55211
additional_crd_columns: Option<std::vec::Vec<CustomResourceColumnDefinition>>,
56212
}
57213

214+
fn parse_affinity(s: &str) -> anyhow::Result<Affinity> {
215+
Ok(serde_json::from_str(s)?)
216+
}
217+
218+
fn parse_tolerations(s: &str) -> anyhow::Result<Toleration> {
219+
Ok(serde_json::from_str(s)?)
220+
}
221+
222+
fn parse_resources(s: &str) -> anyhow::Result<ResourceRequirements> {
223+
Ok(serde_json::from_str(s)?)
224+
}
225+
58226
fn parse_crd_columns(val: &str) -> Result<Vec<CustomResourceColumnDefinition>, serde_json::Error> {
59227
serde_json::from_str(val)
60228
}
@@ -130,10 +298,90 @@ async fn run(args: Args) -> Result<(), anyhow::Error> {
130298
|| "materialize controller",
131299
k8s_controller::Controller::namespaced_all(
132300
client.clone(),
133-
mz_orchestratord::controller::materialize::Context::new(
134-
args.materialize_controller_args,
135-
args.tracing,
136-
namespace,
301+
controller::materialize::Context::new(
302+
controller::materialize::Config {
303+
cloud_provider: args.cloud_provider,
304+
region: args.region,
305+
create_balancers: args.create_balancers,
306+
create_console: args.create_console,
307+
helm_chart_version: args.helm_chart_version,
308+
secrets_controller: args.secrets_controller,
309+
collect_pod_metrics: args.collect_pod_metrics,
310+
enable_prometheus_scrape_annotations: args.enable_prometheus_scrape_annotations,
311+
segment_api_key: args.segment_api_key,
312+
segment_client_side: args.segment_client_side,
313+
console_image_tag_default: args.console_image_tag_default,
314+
console_image_tag_map: args.console_image_tag_map,
315+
aws_account_id: args.aws_account_id,
316+
environmentd_iam_role_arn: args.environmentd_iam_role_arn,
317+
environmentd_connection_role_arn: args.environmentd_connection_role_arn,
318+
aws_secrets_controller_tags: args.aws_secrets_controller_tags,
319+
environmentd_availability_zones: args.environmentd_availability_zones,
320+
ephemeral_volume_class: args.ephemeral_volume_class,
321+
scheduler_name: args.scheduler_name,
322+
enable_security_context: args.enable_security_context,
323+
enable_internal_statement_logging: args.enable_internal_statement_logging,
324+
disable_statement_logging: args.disable_statement_logging,
325+
orchestratord_pod_selector_labels: args.orchestratord_pod_selector_labels,
326+
environmentd_node_selector: args.environmentd_node_selector,
327+
environmentd_affinity: args.environmentd_affinity,
328+
environmentd_tolerations: args.environmentd_tolerations,
329+
environmentd_default_resources: args.environmentd_default_resources,
330+
clusterd_node_selector: args.clusterd_node_selector,
331+
clusterd_affinity: args.clusterd_affinity,
332+
clusterd_tolerations: args.clusterd_tolerations,
333+
balancerd_node_selector: args.balancerd_node_selector,
334+
balancerd_affinity: args.balancerd_affinity,
335+
balancerd_tolerations: args.balancerd_tolerations,
336+
balancerd_default_resources: args.balancerd_default_resources,
337+
console_node_selector: args.console_node_selector,
338+
console_affinity: args.console_affinity,
339+
console_tolerations: args.console_tolerations,
340+
console_default_resources: args.console_default_resources,
341+
image_pull_policy: args.image_pull_policy,
342+
network_policies_internal_enabled: args.network_policies_internal_enabled,
343+
network_policies_ingress_enabled: args.network_policies_ingress_enabled,
344+
network_policies_ingress_cidrs: args.network_policies_ingress_cidrs,
345+
network_policies_egress_enabled: args.network_policies_egress_enabled,
346+
network_policies_egress_cidrs: args.network_policies_egress_cidrs,
347+
environmentd_cluster_replica_sizes: args.environmentd_cluster_replica_sizes,
348+
bootstrap_default_cluster_replica_size: args
349+
.bootstrap_default_cluster_replica_size,
350+
bootstrap_builtin_system_cluster_replica_size: args
351+
.bootstrap_builtin_system_cluster_replica_size,
352+
bootstrap_builtin_probe_cluster_replica_size: args
353+
.bootstrap_builtin_probe_cluster_replica_size,
354+
bootstrap_builtin_support_cluster_replica_size: args
355+
.bootstrap_builtin_support_cluster_replica_size,
356+
bootstrap_builtin_catalog_server_cluster_replica_size: args
357+
.bootstrap_builtin_catalog_server_cluster_replica_size,
358+
bootstrap_builtin_analytics_cluster_replica_size: args
359+
.bootstrap_builtin_analytics_cluster_replica_size,
360+
bootstrap_builtin_system_cluster_replication_factor: args
361+
.bootstrap_builtin_system_cluster_replication_factor,
362+
bootstrap_builtin_probe_cluster_replication_factor: args
363+
.bootstrap_builtin_probe_cluster_replication_factor,
364+
bootstrap_builtin_support_cluster_replication_factor: args
365+
.bootstrap_builtin_support_cluster_replication_factor,
366+
bootstrap_builtin_analytics_cluster_replication_factor: args
367+
.bootstrap_builtin_analytics_cluster_replication_factor,
368+
environmentd_allowed_origins: args.environmentd_allowed_origins,
369+
internal_console_proxy_url: args.internal_console_proxy_url,
370+
environmentd_sql_port: args.environmentd_sql_port,
371+
environmentd_http_port: args.environmentd_http_port,
372+
environmentd_internal_sql_port: args.environmentd_internal_sql_port,
373+
environmentd_internal_http_port: args.environmentd_internal_http_port,
374+
environmentd_internal_persist_pubsub_port: args
375+
.environmentd_internal_persist_pubsub_port,
376+
balancerd_sql_port: args.balancerd_sql_port,
377+
balancerd_http_port: args.balancerd_http_port,
378+
balancerd_internal_http_port: args.balancerd_internal_http_port,
379+
console_http_port: args.console_http_port,
380+
default_certificate_specs: args.default_certificate_specs,
381+
disable_license_key_checks: args.disable_license_key_checks,
382+
tracing: args.tracing,
383+
orchestratord_namespace: namespace,
384+
},
137385
Arc::clone(&metrics),
138386
client.clone(),
139387
)

0 commit comments

Comments
 (0)