forked from calfonso/rusternetes
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCargo.toml
More file actions
116 lines (110 loc) · 4.08 KB
/
Copy pathCargo.toml
File metadata and controls
116 lines (110 loc) · 4.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
[workspace]
resolver = "2"
members = [
"crates/api-server",
"crates/middleware",
"crates/discovery",
"crates/scheduler",
"crates/controller-manager",
"crates/kubelet",
"crates/cri",
"crates/kube-proxy",
"crates/kubectl",
"crates/common",
"crates/protobuf",
"crates/admission-webhook",
"crates/storage",
"crates/client",
"crates/cloud-providers",
"crates/dns",
"crates/rusternetes",
"crates/test_support",
"crates/streamproxy",
]
# rhino is a vendored third-party submodule (its own upstream project), wired in
# only as an optional path dependency of crates/storage. Exclude it from the
# workspace so `cargo clippy --workspace -- -D warnings` and `cargo fmt --all`
# don't lint/format someone else's crate — cargo still resolves the path dep.
# Without this, an in-tree path dep is treated as local and clippy gates our CI
# on rhino's lint cleanliness.
exclude = [
"rhino",
]
[workspace.package]
version = "0.1.0"
edition = "2021"
authors = ["Rusternetes Contributors"]
license = "Apache-2.0"
repository = "https://github.com/rusternetes/rusternetes"
[workspace.dependencies]
tokio = { version = "1.40", features = ["full"] }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
serde_yaml = "0.9"
ciborium = "0.2" # CBOR codec for application/cbor + application/apply-patch+cbor
anyhow = "1.0"
thiserror = "1.0"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
clap = { version = "4.5", features = ["derive"] }
axum = "0.7"
tower = "0.4"
tower-http = { version = "0.5", features = ["trace", "cors", "fs"] }
hyper = "1.0"
etcd-client = "0.14"
uuid = { version = "1.10", features = ["v4", "serde"] }
chrono = { version = "0.4", features = ["serde"] }
async-trait = "0.1"
async-stream = "0.3"
futures = "0.3"
tonic = "0.12" # gRPC
tonic-health = "0.12" # grpc.health.v1 client for gRPC liveness/readiness probes
prost = "0.13"
prost-types = "0.13"
jsonwebtoken = "9.3" # JWT token generation and validation
rustls = { version = "0.23", features = ["aws-lc-rs"] } # TLS support with aws-lc-rs crypto provider
tokio-rustls = "0.26" # Tokio integration for rustls
rcgen = { version = "0.13", features = [
"x509-parser",
] } # Certificate generation + CSR/CA PEM parsing (x509-parser feature gates from_ca_cert_pem / CertificateSigningRequestParams)
prometheus = "0.14" # Prometheus metrics
reqwest = { version = "0.12", features = ["json", "rustls-tls"], default-features = false } # HTTP client
cel = "0.13" # Common Expression Language (CEL) interpreter
x509-parser = "0.16" # X.509 certificate parsing
pem = "3.0" # PEM format encoding/decoding
base64 = "0.22" # Base64 encoding/decoding
serial_test = "3.0" # Serialize tests that modify global state
warp = "0.3" # HTTP server framework for testing
# Cloud provider SDKs
aws-config = "1.1"
aws-sdk-elasticloadbalancingv2 = "1.14"
aws-sdk-ec2 = "1.30"
[profile.dev]
# Default `debug = 2` (full DWARF) inflates target/debug to ~80GB on this
# workspace and dominates link time for the big crates (api-server alone
# is ~900MB per rlib copy). `line-tables-only` keeps panics + backtraces
# usable but cuts debug-info size 5-10x — huge link-time + I/O win, no
# correctness impact. Override locally with
# `RUSTFLAGS="-C debuginfo=2" cargo build` when stepping in a debugger.
debug = "line-tables-only"
[profile.release]
lto = "thin"
codegen-units = 1
opt-level = 3
strip = "symbols"
# Faster release profile for dev / canary / CI image builds.
#
# Whole-program LTO across our ~300 dep rlibs serialised on a single
# codegen unit dominates the link step (minutes per image build). For
# images we don't ship to end users (canary, dev iteration) we trade a
# few percent of runtime perf and ~10% larger binaries for a 2-3× faster
# link.
#
# Used by all-in-one.Dockerfile, services.Dockerfile, dns.Dockerfile and
# kubectl.Dockerfile via `cargo build --profile release-fast`. Shipped
# release artefacts (the indyjonesnl/rusternetes GitHub releases) still
# build with the regular `release` profile above.
[profile.release-fast]
inherits = "release"
lto = "off"
codegen-units = 16