feat: Add example-tenant (WIP)
This commit is contained in:
parent
5127f44ab3
commit
ec17ccc246
18
examples/tenant/Cargo.toml
Normal file
18
examples/tenant/Cargo.toml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
[package]
|
||||||
|
name = "example-tenant"
|
||||||
|
edition = "2024"
|
||||||
|
version.workspace = true
|
||||||
|
readme.workspace = true
|
||||||
|
license.workspace = true
|
||||||
|
publish = false
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
harmony = { path = "../../harmony" }
|
||||||
|
harmony_cli = { path = "../../harmony_cli" }
|
||||||
|
harmony_types = { path = "../../harmony_types" }
|
||||||
|
cidr = { workspace = true }
|
||||||
|
tokio = { workspace = true }
|
||||||
|
harmony_macros = { path = "../../harmony_macros" }
|
||||||
|
log = { workspace = true }
|
||||||
|
env_logger = { workspace = true }
|
||||||
|
url = { workspace = true }
|
41
examples/tenant/src/main.rs
Normal file
41
examples/tenant/src/main.rs
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
use harmony::{
|
||||||
|
data::Id,
|
||||||
|
inventory::Inventory,
|
||||||
|
maestro::Maestro,
|
||||||
|
modules::tenant::TenantScore,
|
||||||
|
topology::{K8sAnywhereTopology, tenant::TenantConfig},
|
||||||
|
};
|
||||||
|
|
||||||
|
#[tokio::main]
|
||||||
|
async fn main() {
|
||||||
|
let tenant = TenantScore {
|
||||||
|
config: TenantConfig {
|
||||||
|
id: Id::default(),
|
||||||
|
name: "TestTenant".to_string(),
|
||||||
|
..Default::default()
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
let mut maestro = Maestro::<K8sAnywhereTopology>::initialize(
|
||||||
|
Inventory::autoload(),
|
||||||
|
K8sAnywhereTopology::new(),
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
maestro.register_all(vec![Box::new(tenant)]);
|
||||||
|
harmony_cli::init(maestro, None).await.unwrap();
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO write tests
|
||||||
|
// - Create Tenant with default config mostly, make sure namespace is created
|
||||||
|
// - deploy sample client/server app with nginx unprivileged and a service
|
||||||
|
// - exec in the client pod and validate the following
|
||||||
|
// - can reach internet
|
||||||
|
// - can reach server pod
|
||||||
|
// - can resolve dns queries to internet
|
||||||
|
// - can resolve dns queries to services
|
||||||
|
// - cannot reach services and pods in other namespaces
|
||||||
|
// - Create Tenant with specific cpu/ram/storage requests / limits and make sure they are enforced by trying to
|
||||||
|
// deploy a pod with lower requests/limits (accepted) and higher requests/limits (rejected)
|
||||||
|
// - Create TenantCredentials and make sure they give only access to the correct tenant
|
Loading…
Reference in New Issue
Block a user