Skip to content
Snippets Groups Projects

Add RP schema

Merged Sébastien Heurtematte requested to merge feat/rp_schema into main
3 files
+ 335
1
Compare changes
  • Side-by-side
  • Inline
Files
3
+ 175
1
@@ -389,6 +389,180 @@ Sponsored Projects
A public [API of sponsored projects](https://api.eclipse.org/cbi/sponsorships) is accessible. Organizations can check how many Resource Packs they have left for project sponsoring on the [membership portal](https://membership.eclipse.org/portal/login).
## Understand the impact of Resource Pack on the EF infrastructure
Pods and containers definition:
```plantuml
@startuml kubernetes
footer Kubernetes Plant-UML
scale max 1024 width
skinparam nodesep 10
skinparam ranksep 10
' Kubernetes
!define KubernetesPuml https://raw.githubusercontent.com/dcasati/kubernetes-PlantUML/master/dist
!includeurl KubernetesPuml/kubernetes_Common.puml
!includeurl KubernetesPuml/kubernetes_Context.puml
!includeurl KubernetesPuml/kubernetes_Simplified.puml
!includeurl KubernetesPuml/OSS/KubernetesSvc.puml
!includeurl KubernetesPuml/OSS/KubernetesIng.puml
!includeurl KubernetesPuml/OSS/KubernetesPod.puml
!includeurl KubernetesPuml/OSS/KubernetesRs.puml
!includeurl KubernetesPuml/OSS/KubernetesDeploy.puml
!includeurl KubernetesPuml/OSS/KubernetesHpa.puml
!includeurl KubernetesPuml/OSS/KubernetesQuota.puml
!includeurl KubernetesPuml/OSS/KubernetesLimits.puml
!includeurl KubernetesPuml/OSS/KubernetesNode.puml
!includeurl KubernetesPuml/kubernetes_Container.puml
' Kubernetes Components
Namespace_Boundary(podns, "Pod/Container Definitions") {
Container_Boundary(runnerContainerBoundaries, "Pod Runner") {
Container(runnerContainer, "Runner Container", "", "cpu: 100/200,\n mem: 128/256mi")
}
Container_Boundary(smallContainerBoundaries, "Small Pod Runner") {
Container(smallBuildContainer, "Build Container", "", "cpu: 250/500,\n mem: 1Gi")
Container(smallHelperContainer, "Helper Container", "", "cpu: 100/150,\n mem: 1Gi")
Container(smallInitContainer, "Init Container", "temporary", "cpu: 100/150,\n mem: 128mi")
}
Container_Boundary(mediumContainerBoundaries, "Medium Pod Runner") {
Container(mediumBuildContainer, "Build Container", "", "cpu: 1000/2000,\n mem: 4Gi")
Container(mediumHelperContainer, "Helper Container", "", "cpu: 100/150,\n mem: 1Gi")
Container(mediumInitContainer, "Init Container", "temporary", "cpu: 100/150,\n mem: 128m")
}
Container_Boundary(largeContainerBoundaries, "Large Pod Runner") {
Container(largeBuildContainer, "Build Container", "", "cpu: 2000/4000,\n mem: 8Gi")
Container(largeHelperContainer, "Helper Container", "", "cpu: 100/150,\n mem: 1Gi")
Container(largeInitContainer, "Init Container", "temporary", "cpu: 100/150,\n mem: 128mi")
}
Container_Boundary(serviceContainerBoundaries, "Service Pod Runner") {
Container(serviceContainer, "Service Container", "", "cpu: 500/1000,\n mem: 1/2Gi")
}
}
@enduml
```
A concrete example of competing project pipelines running in the EF infrastructure:
```plantuml
@startuml kubernetes
footer Kubernetes Plant-UML
scale max 1024 width
skinparam nodesep 10
skinparam ranksep 10
' Kubernetes
!define KubernetesPuml https://raw.githubusercontent.com/dcasati/kubernetes-PlantUML/master/dist
!includeurl KubernetesPuml/kubernetes_Common.puml
!includeurl KubernetesPuml/kubernetes_Context.puml
!includeurl KubernetesPuml/kubernetes_Simplified.puml
!includeurl KubernetesPuml/OSS/KubernetesSvc.puml
!includeurl KubernetesPuml/OSS/KubernetesIng.puml
!includeurl KubernetesPuml/OSS/KubernetesPod.puml
!includeurl KubernetesPuml/OSS/KubernetesRs.puml
!includeurl KubernetesPuml/OSS/KubernetesDeploy.puml
!includeurl KubernetesPuml/OSS/KubernetesHpa.puml
!includeurl KubernetesPuml/OSS/KubernetesQuota.puml
!includeurl KubernetesPuml/OSS/KubernetesLimits.puml
!includeurl KubernetesPuml/OSS/KubernetesNode.puml
!includeurl KubernetesPuml/kubernetes_Container.puml
' Kubernetes Components
Cluster_Boundary(cluster, "Eclipse Foundation Kubernetes Cluster") {
Namespace_Boundary(nodens, "Nodes infrastructure") {
KubernetesNode(node1, "Node 1", "")
KubernetesNode(node2, "Node 2", "")
KubernetesNode(node3, "Node ...", "")
}
Namespace_Boundary(ns, "Project Runner Namespace") {
Container_Boundary(RunnerBoundaries, "Runner context") {
KubernetesPod(runner, "Gitlab Runner", "")
Container_Boundary(concurrentBoundaries, "Concurrent Jobs") {
KubernetesPod(JobMedium, "Job1 Medium Runner \nBuild:\n cpu: 1000/2000,\n mem: 4Gi" , "")
KubernetesPod(JobSmall1, "Job2 Small Runner \nBuild:\n cpu: 250/500,\n mem: 1Gi", "")
KubernetesPod(JobSmall2, "Job3 Small Runner \nBuild:\n cpu: 250/500,\n mem: 1Gi", "")
KubernetesPod(JobSmall3, "Job4 Small Runner \nBuild:\n cpu: 250/500,\n mem: 1Gi", "")
}
KubernetesPod(JobMediumPodService1, "Job1 Service\n cpu: 500/1000,\n mem: 1Gi/2Gi", "")
}
KubernetesLimits(limit,"Resource Pack 1", " ")
Container_Boundary(ResourceBoundaries, "Resource limits") {
KubernetesQuota(quota,"Resource Quotas \ncpu:2750/5100, \nmem: 12032/12288, \npods: 8", " ")
}
}
Namespace_Boundary(nsOther, "Other Project Runner Namespace") {
Container_Boundary(RunnerBoundariesOther, "Runner context") {
KubernetesPod(runnerOther, "Gitlab Runner", "")
KubernetesPod(JobSmall1Other, "Job1 Small Runner \nBuild: cpu: 250/500,\n mem: 1Gi", "")
}
KubernetesLimits(limitOther,"Resource Pack...", " ")
Container_Boundary(ResourceBoundariesOther, "Resource limits") {
KubernetesQuota(quotaOther,"Resource Quotas...", " ")
}
}
}
Rel(runner, JobMedium, " ")
Rel(runner, JobSmall1, " ")
Rel(runner, JobSmall2, " ")
Rel(runner, JobSmall3, " ")
Rel_Left(JobMedium, JobMediumPodService1, " ")
Rel(JobMedium, node1, " ")
Rel(JobSmall1, node2, " ")
Rel(JobSmall2, node2, " ")
Rel(JobSmall3, node3, " ")
Rel(runnerOther, JobSmall1Other, " ")
Rel(JobSmall1Other, node1, " ")
Rel_Down(limit, ResourceBoundaries, "Define Namespace Quotas")
Rel_Right(limit, RunnerBoundaries, "Define Runner Quotas")
Rel_Down(limitOther, ResourceBoundariesOther, "Define Namespace Quotas")
Rel_Right(limitOther, RunnerBoundariesOther, "Define Runner Quotas")
@enduml
```
# Service Level Agreement (SLA)
Most CBI services are Tier 2 - Best Effort, which means they are expected to be available at all times, and rapid restoration can be expected in the event of an outage. Eclipse Strategic Members can contact the Webmaster in certain cases of off-hours support.
@@ -519,4 +693,4 @@ WARN: Common errors with mask password:
```
This value cannot be masked because it contains the following characters: &
```
\ No newline at end of file
```
Loading