Skip to content

Commit d479250

Browse files
Merge pull request #15 from conplementAG/feature/limitrange
feat: add limit range
2 parents 61bdf56 + 504fc07 commit d479250

3 files changed

Lines changed: 73 additions & 1 deletion

File tree

Models/K8sLimitRange.cs

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
using Newtonsoft.Json;
2+
3+
namespace ConplementAG.CopsController.Models
4+
{
5+
public class K8SLimitRange
6+
{
7+
[JsonProperty("apiVersion")]
8+
public string ApiVersion { get; set; }
9+
10+
[JsonProperty("kind")]
11+
public string Kind { get; set; }
12+
13+
[JsonProperty("metadata")]
14+
public K8sMetadata Metadata { get; set; }
15+
16+
[JsonProperty("spec")]
17+
public K8sSpec Spec { get; set; }
18+
19+
public static K8SLimitRange Default(string namespacename)
20+
{
21+
return new K8SLimitRange
22+
{
23+
Kind = "LimitRange",
24+
ApiVersion = "v1",
25+
Metadata = new K8sMetadata { Name = "copsnamespace-default-limitrange", Namespace = namespacename },
26+
Spec = new K8sSpec
27+
{
28+
Limits = new[]
29+
{
30+
new K8sLimit{
31+
Default = new K8sDefault {Cpu = "20m", Memory = "50Mi"},
32+
DefaultRequest = new K8sDefault {Cpu = "10m", Memory = "25Mi"},
33+
Type = "Container"
34+
}
35+
}
36+
}
37+
};
38+
}
39+
}
40+
41+
public class K8sSpec
42+
{
43+
[JsonProperty("limits")]
44+
public K8sLimit[] Limits { get; set; }
45+
}
46+
47+
public class K8sLimit
48+
{
49+
[JsonProperty("default")]
50+
public K8sDefault Default { get; set; }
51+
52+
[JsonProperty("defaultRequest")]
53+
public K8sDefault DefaultRequest { get; set; }
54+
55+
[JsonProperty("type")]
56+
public string Type { get; set; }
57+
}
58+
59+
public class K8sDefault
60+
{
61+
[JsonProperty("cpu")]
62+
public string Cpu { get; set; }
63+
64+
[JsonProperty("memory")]
65+
public string Memory { get; set; }
66+
}
67+
}

Services/K8sResourceFactory.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ private static IList<object> Create(CopsNamespace copsNamespace)
2525
copsNamespace.Spec.NamespaceAdminServiceAccounts ?? new List<CopsAdminServiceAccountSpec>().ToArray()),
2626
K8sClusterRoleBinding.CopsNamespaceEditBinding(copsNamespace.Metadata.Name, copsNamespace.Spec.NamespaceAdminUsers,
2727
copsNamespace.Spec.NamespaceAdminServiceAccounts ?? new List<CopsAdminServiceAccountSpec>().ToArray()),
28-
K8sClusterRole.CopsNamespaceEdit(copsNamespace.Metadata.Name)
28+
K8sClusterRole.CopsNamespaceEdit(copsNamespace.Metadata.Name),
29+
K8SLimitRange.Default(copsNamespace.Metadata.Name)
2930
};
3031
}
3132
}

deployment/cops-controller/templates/02-controller.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ spec:
2525
resource: clusterroles
2626
updateStrategy:
2727
method: InPlace
28+
- apiVersion: v1
29+
resource: limitrange
30+
updateStrategy:
31+
method: InPlace
2832
hooks:
2933
sync:
3034
webhook:

0 commit comments

Comments
 (0)