feat: added default resource limit and request to k8s tenant
Some checks failed
Run Check Script / check (pull_request) Failing after 35s
Some checks failed
Run Check Script / check (pull_request) Failing after 35s
This commit is contained in:
parent
197770a603
commit
4baa3ae707
@ -8,7 +8,7 @@ use async_trait::async_trait;
|
|||||||
use derive_new::new;
|
use derive_new::new;
|
||||||
use k8s_openapi::{
|
use k8s_openapi::{
|
||||||
api::{
|
api::{
|
||||||
core::v1::{Namespace, ResourceQuota},
|
core::v1::{LimitRange, Namespace, ResourceQuota},
|
||||||
networking::v1::{
|
networking::v1::{
|
||||||
NetworkPolicy, NetworkPolicyEgressRule, NetworkPolicyIngressRule, NetworkPolicyPort,
|
NetworkPolicy, NetworkPolicyEgressRule, NetworkPolicyIngressRule, NetworkPolicyPort,
|
||||||
},
|
},
|
||||||
@ -132,6 +132,43 @@ impl K8sTenantManager {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn build_limit_range(&self, config: &TenantConfig) -> Result<LimitRange, ExecutorError> {
|
||||||
|
let limit_range = json!({
|
||||||
|
"apiVersion": "v1",
|
||||||
|
"kind": "LimitRange",
|
||||||
|
"metadata": {
|
||||||
|
"name": format!("{}-defaults", config.name),
|
||||||
|
"labels": {
|
||||||
|
"harmony.nationtech.io/tenant.id": config.id.to_string(),
|
||||||
|
"harmony.nationtech.io/tenant.name": config.name,
|
||||||
|
},
|
||||||
|
"namespace": self.get_namespace_name(config),
|
||||||
|
},
|
||||||
|
"spec": {
|
||||||
|
"limits": [
|
||||||
|
{
|
||||||
|
"type": "Container",
|
||||||
|
"default": {
|
||||||
|
"cpu": "500m",
|
||||||
|
"memory": "500Mi"
|
||||||
|
},
|
||||||
|
"defaultRequest": {
|
||||||
|
"cpu": "100m",
|
||||||
|
"memory": "100Mi"
|
||||||
|
},
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
serde_json::from_value(limit_range).map_err(|e| {
|
||||||
|
ExecutorError::ConfigurationError(format!(
|
||||||
|
"Could not build TenantManager LimitRange. {}",
|
||||||
|
e
|
||||||
|
))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
fn build_network_policy(&self, config: &TenantConfig) -> Result<NetworkPolicy, ExecutorError> {
|
fn build_network_policy(&self, config: &TenantConfig) -> Result<NetworkPolicy, ExecutorError> {
|
||||||
let network_policy = json!({
|
let network_policy = json!({
|
||||||
"apiVersion": "networking.k8s.io/v1",
|
"apiVersion": "networking.k8s.io/v1",
|
||||||
@ -328,6 +365,7 @@ impl TenantManager for K8sTenantManager {
|
|||||||
let namespace = self.build_namespace(config)?;
|
let namespace = self.build_namespace(config)?;
|
||||||
let resource_quota = self.build_resource_quota(config)?;
|
let resource_quota = self.build_resource_quota(config)?;
|
||||||
let network_policy = self.build_network_policy(config)?;
|
let network_policy = self.build_network_policy(config)?;
|
||||||
|
let resource_limit_range = self.build_limit_range(config)?;
|
||||||
|
|
||||||
self.ensure_constraints(&namespace)?;
|
self.ensure_constraints(&namespace)?;
|
||||||
|
|
||||||
@ -337,6 +375,9 @@ impl TenantManager for K8sTenantManager {
|
|||||||
debug!("Creating resource_quota for tenant {}", config.name);
|
debug!("Creating resource_quota for tenant {}", config.name);
|
||||||
self.apply_resource(resource_quota, config).await?;
|
self.apply_resource(resource_quota, config).await?;
|
||||||
|
|
||||||
|
debug!("Creating limit_range for tenant {}", config.name);
|
||||||
|
self.apply_resource(resource_limit_range, config).await?;
|
||||||
|
|
||||||
debug!("Creating network_policy for tenant {}", config.name);
|
debug!("Creating network_policy for tenant {}", config.name);
|
||||||
self.apply_resource(network_policy, config).await?;
|
self.apply_resource(network_policy, config).await?;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user