feat: Add oc-scheduler component to Helm chart
This commit is contained in:
parent
f3db3e4139
commit
0bdf93f8b7
41
arch/diagrams/src/oc-scheduler.puml
Normal file
41
arch/diagrams/src/oc-scheduler.puml
Normal file
@ -0,0 +1,41 @@
|
||||
@startuml
|
||||
skinparam componentStyle rectangle
|
||||
|
||||
node "Kubernetes Cluster" {
|
||||
|
||||
cloud "Service: oc-scheduler" as oc_scheduler_service {
|
||||
oc_scheduler_service : Type: NodePort
|
||||
oc_scheduler_service : External NodePort: 8090 # Exposed NodePort for external access
|
||||
oc_scheduler_service : Internal TargetPort: 8080
|
||||
}
|
||||
|
||||
' Deployment for oc-scheduler managing the pods
|
||||
node "Deployment: oc-scheduler" as oc_scheduler_deployment {
|
||||
oc_scheduler_deployment : Replicas: {{ .Values.replicaCount }}
|
||||
oc_scheduler_deployment : Image: registry.dev.svc.cluster.local:5000/oc-scheduler:latest
|
||||
oc_scheduler_deployment : PullPolicy: IfNotPresent
|
||||
oc_scheduler_deployment : TargetPort: 8080
|
||||
|
||||
node "Pod: oc-scheduler-1" as scheduler_1 {
|
||||
component "Container: oc-scheduler" as oc_scheduler_container1 {
|
||||
oc_scheduler_container1 : Internal Port: 8080
|
||||
oc_scheduler_container1 : MONGO_DATABASE=DC_myDC
|
||||
oc_scheduler_container1 : MONGO_URI=mongodb://mongo:27017
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
oc_scheduler_service --> oc_scheduler_deployment : Routes traffic to Deployment
|
||||
oc_scheduler_deployment --> scheduler_1 : Manages Pods
|
||||
|
||||
' MongoDB service and statefulset
|
||||
|
||||
cloud "Service: mongo" as mongo_service {
|
||||
mongo_service : Type: ClusterIP
|
||||
mongo_service : Internal Port: 27017
|
||||
}
|
||||
|
||||
scheduler_1 --> mongo_service : Connects to MongoDB
|
||||
|
||||
}
|
||||
@enduml
|
5
helm/Chart.yaml
Normal file
5
helm/Chart.yaml
Normal file
@ -0,0 +1,5 @@
|
||||
apiVersion: v2
|
||||
name: oc-scheduler
|
||||
description: A Helm chart for deploying the oc-scheduler service
|
||||
version: 0.1.0
|
||||
appVersion: "1.0"
|
67
helm/README.md
Normal file
67
helm/README.md
Normal file
@ -0,0 +1,67 @@
|
||||
# README.md - `oc-scheduler` Helm Chart
|
||||
|
||||
This document describes the different tags found in the `values.yml` file used in the Helm chart for the `oc-scheduler` component.
|
||||
|
||||
## Tags in the `values.yml` file
|
||||
|
||||
### `replicaCount`
|
||||
- **Description**: Defines the number of replicas for the deployment. A replica represents an instance of the application that will be deployed.
|
||||
- **Example**: `1` means a single instance of the `oc-scheduler` service will be deployed.
|
||||
|
||||
### `image.repository`
|
||||
- **Description**: Specifies the URL of the Docker image registry where the `oc-scheduler` component image is stored.
|
||||
- **Example**: `registry.dev.svc.cluster.local:5000/oc-scheduler` refers to a local registry hosted within the `cluster.local` network.
|
||||
|
||||
### `image.tag`
|
||||
- **Description**: Indicates the tag of the Docker image to use. Typically, this could be a specific version or `latest` to always pull the latest version.
|
||||
- **Example**: `latest` means the most recent version of the image will be used.
|
||||
|
||||
### `image.pullPolicy`
|
||||
- **Description**: Defines the image pull policy. The possible options are:
|
||||
- `Always`: Always pull the image.
|
||||
- `IfNotPresent`: Pull the image only if it is not already present on the node.
|
||||
- `Never`: Never pull the image.
|
||||
- **Example**: `IfNotPresent` means the image will only be pulled if it is not already present on the node.
|
||||
|
||||
### `env.mongoDatabase`
|
||||
- **Description**: Defines the name of the MongoDB database the application will connect to.
|
||||
- **Example**: `DC_myDC` refers to the MongoDB database used by the application.
|
||||
|
||||
### `env.mongoUrl`
|
||||
- **Description**: Specifies the connection URL for MongoDB used by the application.
|
||||
- **Example**: `mongodb://toto:27017` indicates that the application will connect to the MongoDB instance hosted at `toto` on port `27017`.
|
||||
|
||||
### `service.type`
|
||||
- **Description**: Defines the type of Kubernetes service. Possible types include:
|
||||
- `ClusterIP`: The service is only accessible within the cluster.
|
||||
- `NodePort`: The service is accessible via a specific port on all cluster nodes.
|
||||
- `LoadBalancer`: The service is exposed via an external Load Balancer.
|
||||
- **Example**: `ClusterIP` means the service will only be accessible within the Kubernetes cluster.
|
||||
|
||||
### `service.port`
|
||||
- **Description**: Specifies the port on which the service will be exposed within the cluster.
|
||||
- **Example**: `8090` means the service will be accessible on port `8090`.
|
||||
|
||||
### `service.targetPort`
|
||||
- **Description**: Defines the port on which the application listens inside the container.
|
||||
- **Example**: `8080` means the application listens on port `8080` within the container.
|
||||
|
||||
### `resources.limits.cpu`
|
||||
- **Description**: Specifies the maximum amount of CPU (in millicores) allocated to the container.
|
||||
- **Example**: `500m` means the container can use up to 0.5 CPU (or 50% of a full CPU core).
|
||||
|
||||
### `resources.limits.memory`
|
||||
- **Description**: Specifies the maximum amount of memory (in MiB) allocated to the container.
|
||||
- **Example**: `512Mi` means the container can use up to 512 MiB of memory.
|
||||
|
||||
### `resources.requests.cpu`
|
||||
- **Description**: Defines the guaranteed amount of CPU (in millicores) for the container. Kubernetes will ensure this amount is always available.
|
||||
- **Example**: `250m` means the container will have at least 0.25 CPU (or 25% of a full CPU core).
|
||||
|
||||
### `resources.requests.memory`
|
||||
- **Description**: Defines the guaranteed amount of memory (in MiB) for the container. Kubernetes will reserve this memory for the container.
|
||||
- **Example**: `256Mi` means the container will have at least 256 MiB of memory.
|
||||
|
||||
## Conclusion
|
||||
|
||||
This `values.yml` file allows configuring the deployment settings for the `oc-scheduler` component. Each tag plays a specific role in defining the Docker image, service configuration, and resource allocation for the container within the Kubernetes cluster.
|
7
helm/templates/configmap.yml
Normal file
7
helm/templates/configmap.yml
Normal file
@ -0,0 +1,7 @@
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: oc-scheduler-configmap
|
||||
data:
|
||||
MONGO_DATABASE: "{{ .Values.env.mongoDatabase }}"
|
||||
OCSHARED_MONGOURL: "{{ .Values.env.mongoUrl }}"
|
31
helm/templates/deployment.yml
Normal file
31
helm/templates/deployment.yml
Normal file
@ -0,0 +1,31 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: oc-scheduler
|
||||
labels:
|
||||
app: oc-scheduler
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: oc-scheduler
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: oc-scheduler
|
||||
spec:
|
||||
containers:
|
||||
- name: oc-scheduler
|
||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
||||
ports:
|
||||
- containerPort: {{ .Values.service.targetPort }}
|
||||
envFrom:
|
||||
- configMapRef:
|
||||
name: oc-scheduler-configmap
|
||||
resources:
|
||||
limits:
|
||||
cpu: "{{ .Values.resources.limits.cpu }}"
|
||||
memory: "{{ .Values.resources.limits.memory }}"
|
||||
requests:
|
||||
cpu: "{{ .Values.resources.requests.cpu }}"
|
||||
memory: "{{ .Values.resources.requests.memory }}"
|
16
helm/templates/service.yml
Normal file
16
helm/templates/service.yml
Normal file
@ -0,0 +1,16 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: oc-scheduler
|
||||
labels:
|
||||
app: oc-scheduler
|
||||
release: {{ .Release.Name }}
|
||||
spec:
|
||||
type: {{ .Values.service.type }} # Utilisation du type de service configuré (ClusterIP, NodePort, LoadBalancer)
|
||||
selector:
|
||||
app: oc-catalog
|
||||
release: {{ .Release.Name }}
|
||||
ports:
|
||||
- protocol: TCP
|
||||
port: {{ .Values.service.port }} # Port exposé (8091 par défaut)
|
||||
targetPort: {{ .Values.service.targetPort }} # Port du conteneur interne (8080 par défaut)
|
23
helm/values.yaml
Normal file
23
helm/values.yaml
Normal file
@ -0,0 +1,23 @@
|
||||
replicaCount: 1
|
||||
|
||||
image:
|
||||
repository: registry.dev.svc.cluster.local:5000/oc-scheduler
|
||||
tag: latest
|
||||
pullPolicy: IfNotPresent
|
||||
|
||||
env:
|
||||
mongoDatabase: DC_myDC
|
||||
mongoUrl: mongodb://toto:27017
|
||||
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 8090
|
||||
targetPort: 8080
|
||||
|
||||
resources:
|
||||
limits:
|
||||
cpu: "500m"
|
||||
memory: "512Mi"
|
||||
requests:
|
||||
cpu: "250m"
|
||||
memory: "256Mi"
|
Loading…
Reference in New Issue
Block a user