feat: Add comp oc-shared with Helm chart templates

This commit is contained in:
na 2024-09-12 14:35:38 +02:00
parent 18fe4b01ed
commit 53f683ae79
8 changed files with 194 additions and 1 deletions

View File

@ -6,6 +6,9 @@ COPY . .
RUN apk add git RUN apk add git
#install bash
RUN apk add bash && PATH=$PATH:/bin/bash
RUN go get github.com/beego/bee/v2 && go install github.com/beego/bee/v2@master RUN go get github.com/beego/bee/v2 && go install github.com/beego/bee/v2@master
RUN timeout 15 bee run -gendoc=true -downdoc=true -runmode=dev || : RUN timeout 15 bee run -gendoc=true -downdoc=true -runmode=dev || :
@ -22,7 +25,7 @@ WORKDIR /app
COPY --from=builder /app/oc-shared /usr/bin/ COPY --from=builder /app/oc-shared /usr/bin/
COPY --from=builder /app/swagger /app/swagger COPY --from=builder /app/swagger /app/swagger
COPY --from=builder /app/conf /app/conf
COPY docker_shared.json /etc/oc/shared.json COPY docker_shared.json /etc/oc/shared.json
EXPOSE 8080 EXPOSE 8080

View File

@ -0,0 +1,41 @@
@startuml
skinparam componentStyle rectangle
node "Kubernetes Cluster" {
cloud "Service: oc-shared" as oc_shared_service {
oc_shared_service : Type: NodePort
oc_shared_service : External NodePort: 8091 # Exposed NodePort for external access
oc_shared_service : Internal TargetPort: 8080
}
' Deployment for oc-shared managing the pods
node "Deployment: oc-shared" as oc_shared_deployment {
oc_shared_deployment : Replicas: {{ .Values.replicaCount }}
oc_shared_deployment : Image: registry.dev.svc.cluster.local:5000/oc-shared:latest
oc_shared_deployment : PullPolicy: IfNotPresent
oc_shared_deployment : TargetPort: 8080
node "Pod: oc-shared-1" as shared_1 {
component "Container: oc-shared" as oc_shared_container1 {
oc_shared_container1 : Internal Port: 8080
oc_shared_container1 : MONGO_DATABASE=DC_myDC
oc_shared_container1 : MONGO_URI=mongodb://mongo:27017
}
}
}
oc_shared_service --> oc_shared_deployment : Routes traffic to Deployment
oc_shared_deployment --> shared_1 : Manages Pods
' MongoDB service and statefulset
cloud "Service: mongo" as mongo_service {
mongo_service : Type: ClusterIP
mongo_service : Internal Port: 27017
}
shared_1 --> mongo_service : Connects to MongoDB
}
@enduml

5
helm/Chart.yaml Normal file
View File

@ -0,0 +1,5 @@
apiVersion: v2
name: oc-shared
description: A Helm chart for deploying the oc-shared service
version: 0.1.0
appVersion: "1.0"

67
helm/README.md Normal file
View File

@ -0,0 +1,67 @@
# README.md - `oc-shared` Helm Chart
This document describes the different tags found in the `values.yml` file used in the Helm chart for the `oc-shared` 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-shared` service will be deployed.
### `image.repository`
- **Description**: Specifies the URL of the Docker image registry where the `oc-shared` component image is stored.
- **Example**: `registry.dev.svc.cluster.local:5000/oc-shared` 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**: `8091` means the service will be accessible on port `8091`.
### `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-shared` component. Each tag plays a specific role in defining the Docker image, service configuration, and resource allocation for the container within the Kubernetes cluster.

View File

@ -0,0 +1,7 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: oc-shared-configmap
data:
MONGO_DATABASE: "{{ .Values.env.mongoDatabase }}"
OCSHARED_MONGOURL: "{{ .Values.env.mongoUrl }}"

View File

@ -0,0 +1,31 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: oc-shared
labels:
app: oc-shared
spec:
replicas: 1
selector:
matchLabels:
app: oc-shared
template:
metadata:
labels:
app: oc-shared
spec:
containers:
- name: oc-shared
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
ports:
- containerPort: {{ .Values.service.targetPort }}
envFrom:
- configMapRef:
name: oc-shared-configmap
resources:
limits:
cpu: "{{ .Values.resources.limits.cpu }}"
memory: "{{ .Values.resources.limits.memory }}"
requests:
cpu: "{{ .Values.resources.requests.cpu }}"
memory: "{{ .Values.resources.requests.memory }}"

View File

@ -0,0 +1,16 @@
apiVersion: v1
kind: Service
metadata:
name: oc-shared
labels:
app: oc-shared
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
View File

@ -0,0 +1,23 @@
replicaCount: 1
image:
repository: registry.dev.svc.cluster.local:5000/oc-shared
tag: latest
pullPolicy: IfNotPresent
env:
mongoDatabase: DC_myDC
mongoUrl: mongodb://toto:27017
service:
type: ClusterIP
port: 8091
targetPort: 8080
resources:
limits:
cpu: "500m"
memory: "512Mi"
requests:
cpu: "250m"
memory: "256Mi"