6 Commits

Author SHA1 Message Date
plm
5b90f637e3 Fix typo in name 2025-01-14 18:35:47 +01:00
plm
93e2d809cf Configuring loki as simpleBinary, deploying, configuring and integrating schedulerd 2025-01-14 18:35:12 +01:00
plm
7d5931045d Adding datacenter and peer support in k8s 2025-01-10 21:20:16 +01:00
plm
0b362983a3 Integrating catalog 2025-01-10 16:41:41 +01:00
plm
fb5aed882f Integrating workflow microservice 2025-01-10 11:43:01 +01:00
plm
5825c89a23 Adding collaborative area support 2025-01-09 16:24:43 +01:00
21 changed files with 623 additions and 9 deletions

View File

@@ -238,6 +238,108 @@ keto:
name: open-cloud name: open-cloud
dsn: memory dsn: memory
loki:
enabled: true
loki:
auth_enabled: false
commonConfig:
replication_factor: 1
storage:
type: filesystem
filesystem:
chunks_directory: /var/loki/chunks
rules_directory: /var/loki/rules
admin_api_directory: /var/loki/admin
storage_config:
boltdb_shipper:
active_index_directory: /var/loki/index
filesystem:
directory: /var/loki/chunks
limits_config:
allow_structured_metadata: false
schemaConfig:
configs:
- from: "2020-01-01"
store: boltdb-shipper
object_store: filesystem
schema: v11
index:
prefix: index_
period: 24h
ingester:
chunk_encoding: snappy
tracing:
enabled: true
querier:
max_concurrent: 2
deploymentMode: SingleBinary
singleBinary:
extraVolumes:
- name: loki-storage
persistentVolumeClaim:
claimName: loki-pvc
persistence:
enabled: false # Deactivate loki auto provisioning, rely on existing PVC
accessMode: ReadWriteOnce
size: 1Gi
storageClassName: kind-sc
claimName: loki-pvc
extraVolumeMounts:
- name: loki-storage
mountPath: /var/loki
replicas: 1
resources:
limits:
cpu: 3
memory: 4Gi
requests:
cpu: 1
memory: 0.5Gi
extraEnv:
- name: GOMEMLIMIT
value: 3750MiB
chunksCache:
# default is 500MB, with limited memory keep this smaller
writebackSizeLimit: 10MB
# Enable minio for storage
minio:
enabled: false
# Zero out replica counts of other deployment modes
backend:
replicas: 0
read:
replicas: 0
write:
replicas: 0
ingester:
replicas: 0
querier:
replicas: 0
queryFrontend:
replicas: 0
queryScheduler:
replicas: 0
distributor:
replicas: 0
compactor:
replicas: 0
indexGateway:
replicas: 0
bloomCompactor:
replicas: 0
bloomGateway:
replicas: 0
grafana:
enabled: false
ocAuth: ocAuth:
enabled: true enabled: true
image: oc/oc-auth:0.0.1 image: oc/oc-auth:0.0.1
@@ -281,8 +383,68 @@ ocWorkspace:
cpu: "128m" cpu: "128m"
memory: "256Mi" memory: "256Mi"
loki: ocShared:
enabled: false enabled: true
image: oc/oc-shared:0.0.1
resources:
limits:
cpu: "128m"
memory: "256Mi"
requests:
cpu: "128m"
memory: "256Mi"
grafana: ocWorkflow:
enabled: false enabled: true
image: oc/oc-workflow:0.0.1
resources:
limits:
cpu: "128m"
memory: "256Mi"
requests:
cpu: "128m"
memory: "256Mi"
ocCatalog:
enabled: true
image: oc/oc-catalog:0.0.1
resources:
limits:
cpu: "128m"
memory: "256Mi"
requests:
cpu: "128m"
memory: "256Mi"
ocPeer:
enabled: true
image: oc/oc-peer:0.0.1
resources:
limits:
cpu: "128m"
memory: "256Mi"
requests:
cpu: "128m"
memory: "256Mi"
ocDatacenter:
enabled: true
image: oc/oc-datacenter:0.0.1
resources:
limits:
cpu: "128m"
memory: "256Mi"
requests:
cpu: "128m"
memory: "256Mi"
ocSchedulerd:
enabled: true
image: oc/oc-schedulerd:0.0.1
resources:
limits:
cpu: "128m"
memory: "256Mi"
requests:
cpu: "128m"
memory: "256Mi"

View File

@@ -0,0 +1,16 @@
{{- if index .Values.loki.enabled }}
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: {{ .Values.loki.singleBinary.persistence.claimName }}
namespace: {{ .Release.Namespace }}
annotations:
helm.sh/resource-policy: keep
spec:
accessModes:
- {{ .Values.loki.singleBinary.persistence.accessMode }}
resources:
requests:
storage: {{ .Values.loki.singleBinary.persistence.size }}
storageClassName: {{ .Values.loki.singleBinary.persistence.storageClassName }}
{{- end }}

View File

@@ -0,0 +1,35 @@
{{- if index .Values.ocCatalog.enabled }}
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: oc-catalog
name: {{ .Release.Name }}-oc-catalog
spec:
replicas: 1
selector:
matchLabels:
app: oc-catalog
template:
metadata:
labels:
app: oc-catalog
spec:
containers:
- image: "{{ .Values.ocCatalog.image }}"
name: oc-catalog
envFrom:
- configMapRef:
name: opencloud-config
ports:
- name: http
containerPort: 8080
protocol: TCP
resources:
limits:
cpu: "{{ .Values.ocCatalog.resources.limits.cpu }}"
memory: "{{ .Values.ocCatalog.resources.limits.memory }}"
requests:
cpu: "{{ .Values.ocCatalog.resources.requests.cpu }}"
memory: "{{ .Values.ocCatalog.resources.requests.memory }}"
{{- end }}

View File

@@ -0,0 +1,29 @@
{{- if index .Values.ocCatalog.enabled }}
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: oc-catalog-ingress
spec:
entryPoints:
- web
routes:
- kind: Rule
match: Host(`{{ .Values.host }}`) && PathPrefix(`/catalog`)
priority: 10
services:
- kind: Service
name: oc-catalog-svc
port: 8080
middlewares:
- name: strip-catalog-prefix
---
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: strip-catalog-prefix
spec:
stripPrefix:
prefixes:
- "/catalog"
{{- end }}

View File

@@ -0,0 +1,17 @@
{{- if index .Values.ocCatalog.enabled }}
apiVersion: v1
kind: Service
metadata:
name: oc-catalog-svc
labels:
app: oc-catalog-svc
spec:
ports:
- name: http
port: 8080
protocol: TCP
targetPort: 8080
selector:
app: oc-catalog
type: ClusterIP
{{- end }}

View File

@@ -0,0 +1,35 @@
{{- if index .Values.ocDatacenter.enabled }}
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: oc-datacenter
name: {{ .Release.Name }}-oc-datacenter
spec:
replicas: 1
selector:
matchLabels:
app: oc-datacenter
template:
metadata:
labels:
app: oc-datacenter
spec:
containers:
- image: "{{ .Values.ocDatacenter.image }}"
name: oc-datacenter
envFrom:
- configMapRef:
name: opencloud-config
ports:
- name: http
containerPort: 8080
protocol: TCP
resources:
limits:
cpu: "{{ .Values.ocDatacenter.resources.limits.cpu }}"
memory: "{{ .Values.ocDatacenter.resources.limits.memory }}"
requests:
cpu: "{{ .Values.ocDatacenter.resources.requests.cpu }}"
memory: "{{ .Values.ocDatacenter.resources.requests.memory }}"
{{- end }}

View File

@@ -0,0 +1,29 @@
{{- if index .Values.ocDatacenter.enabled }}
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: oc-datacenter-ingress
spec:
entryPoints:
- web
routes:
- kind: Rule
match: Host(`{{ .Values.host }}`) && PathPrefix(`/datacenter`)
priority: 10
services:
- kind: Service
name: oc-datacenter-svc
port: 8080
middlewares:
- name: strip-datacenter-prefix
---
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: strip-datacenter-prefix
spec:
stripPrefix:
prefixes:
- "/datacenter"
{{- end }}

View File

@@ -0,0 +1,17 @@
{{- if index .Values.ocDatacenter.enabled }}
apiVersion: v1
kind: Service
metadata:
name: oc-datacenter-svc
labels:
app: oc-datacenter-svc
spec:
ports:
- name: http
port: 8080
protocol: TCP
targetPort: 8080
selector:
app: oc-datacenter
type: ClusterIP
{{- end }}

View File

@@ -8,12 +8,12 @@ data:
{ {
"WORKSPACE_HOST": "{{ .Values.scheme }}://{{ .Values.host }}/workspace/oc", "WORKSPACE_HOST": "{{ .Values.scheme }}://{{ .Values.host }}/workspace/oc",
"WORKFLOW_HOST": "{{ .Values.scheme }}://{{ .Values.host }}/workflow/oc", "WORKFLOW_HOST": "{{ .Values.scheme }}://{{ .Values.host }}/workflow/oc",
"ITEM_HOST": "{{ .Values.scheme }}://{{ .Values.host }}/item/oc", "ITEM_HOST": "{{ .Values.scheme }}://{{ .Values.host }}/catalog/oc",
"SCHEDULER_HOST": "{{ .Values.scheme }}://{{ .Values.host }}/scheduler/oc", "SCHEDULER_HOST": "{{ .Values.scheme }}://{{ .Values.host }}/scheduler/oc",
"LOGS_HOST": "{{ .Values.scheme }}://{{ .Values.host }}/logs", "LOGS_HOST": "{{ .Values.scheme }}://{{ .Values.host }}/logs",
"PEER_HOST": "{{ .Values.scheme }}://{{ .Values.host }}/peers/oc", "PEER_HOST": "{{ .Values.scheme }}://{{ .Values.host }}/peers/oc",
"DATACENTER_HOST": "{{ .Values.scheme }}://{{ .Values.host }}/datacenter/oc", "DATACENTER_HOST": "{{ .Values.scheme }}://{{ .Values.host }}/datacenter/oc",
"COLLABORATIVE_AREA_HOST": "{{ .Values.scheme }}://{{ .Values.host }}/collaborative/oc", "COLLABORATIVE_AREA_HOST": "{{ .Values.scheme }}://{{ .Values.host }}/shared/oc",
"HOST": "{{ .Values.scheme }}://{{ .Values.host }}/oc", "HOST": "{{ .Values.scheme }}://{{ .Values.host }}/oc",
"AUTH_HOST": "{{ .Values.scheme }}://{{ .Values.host }}/auth/oc" "AUTH_HOST": "{{ .Values.scheme }}://{{ .Values.host }}/auth/oc"
} }

View File

@@ -9,7 +9,7 @@ spec:
routes: routes:
- kind: Rule - kind: Rule
match: Host(`{{ .Values.host }}`) && PathPrefix(`/`) match: Host(`{{ .Values.host }}`) && PathPrefix(`/`)
priority: 10 priority: 5
services: services:
- kind: Service - kind: Service
name: oc-front-svc name: oc-front-svc

View File

@@ -0,0 +1,35 @@
{{- if index .Values.ocPeer.enabled }}
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: oc-peer
name: {{ .Release.Name }}-oc-peer
spec:
replicas: 1
selector:
matchLabels:
app: oc-peer
template:
metadata:
labels:
app: oc-peer
spec:
containers:
- image: "{{ .Values.ocPeer.image }}"
name: oc-peer
envFrom:
- configMapRef:
name: opencloud-config
ports:
- name: http
containerPort: 8080
protocol: TCP
resources:
limits:
cpu: "{{ .Values.ocPeer.resources.limits.cpu }}"
memory: "{{ .Values.ocPeer.resources.limits.memory }}"
requests:
cpu: "{{ .Values.ocPeer.resources.requests.cpu }}"
memory: "{{ .Values.ocPeer.resources.requests.memory }}"
{{- end }}

View File

@@ -0,0 +1,29 @@
{{- if index .Values.ocPeer.enabled }}
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: oc-peer-ingress
spec:
entryPoints:
- web
routes:
- kind: Rule
match: Host(`{{ .Values.host }}`) && PathPrefix(`/peers`)
priority: 10
services:
- kind: Service
name: oc-peer-svc
port: 8080
middlewares:
- name: strip-peer-prefix
---
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: strip-peer-prefix
spec:
stripPrefix:
prefixes:
- "/peers"
{{- end }}

View File

@@ -0,0 +1,17 @@
{{- if index .Values.ocPeer.enabled }}
apiVersion: v1
kind: Service
metadata:
name: oc-peer-svc
labels:
app: oc-peer-svc
spec:
ports:
- name: http
port: 8080
protocol: TCP
targetPort: 8080
selector:
app: oc-peer
type: ClusterIP
{{- end }}

View File

@@ -0,0 +1,31 @@
{{- if index .Values.ocSchedulerd.enabled }}
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: oc-schedulerd
name: {{ .Release.Name }}-oc-schedulerd
spec:
replicas: 1
selector:
matchLabels:
app: oc-schedulerd
template:
metadata:
labels:
app: oc-schedulerd
spec:
containers:
- image: "{{ .Values.ocSchedulerd.image }}"
name: oc-schedulerd
envFrom:
- configMapRef:
name: opencloud-config
resources:
limits:
cpu: "{{ .Values.ocSchedulerd.resources.limits.cpu }}"
memory: "{{ .Values.ocSchedulerd.resources.limits.memory }}"
requests:
cpu: "{{ .Values.ocSchedulerd.resources.requests.cpu }}"
memory: "{{ .Values.ocSchedulerd.resources.requests.memory }}"
{{- end }}

View File

@@ -0,0 +1,35 @@
{{- if index .Values.ocShared.enabled }}
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: oc-shared
name: {{ .Release.Name }}-oc-shared
spec:
replicas: 1
selector:
matchLabels:
app: oc-shared
template:
metadata:
labels:
app: oc-shared
spec:
containers:
- image: "{{ .Values.ocShared.image }}"
name: oc-shared
envFrom:
- configMapRef:
name: opencloud-config
ports:
- name: http
containerPort: 8080
protocol: TCP
resources:
limits:
cpu: "{{ .Values.ocShared.resources.limits.cpu }}"
memory: "{{ .Values.ocShared.resources.limits.memory }}"
requests:
cpu: "{{ .Values.ocShared.resources.requests.cpu }}"
memory: "{{ .Values.ocShared.resources.requests.memory }}"
{{- end }}

View File

@@ -0,0 +1,29 @@
{{- if index .Values.ocShared.enabled }}
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: oc-shared-ingress
spec:
entryPoints:
- web
routes:
- kind: Rule
match: Host(`{{ .Values.host }}`) && PathPrefix(`/shared`)
priority: 10
services:
- kind: Service
name: oc-shared-svc
port: 8080
middlewares:
- name: strip-shared-prefix
---
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: strip-shared-prefix
spec:
stripPrefix:
prefixes:
- "/shared"
{{- end }}

View File

@@ -0,0 +1,17 @@
{{- if index .Values.ocShared.enabled }}
apiVersion: v1
kind: Service
metadata:
name: oc-shared-svc
labels:
app: oc-shared-svc
spec:
ports:
- name: http
port: 8080
protocol: TCP
targetPort: 8080
selector:
app: oc-shared
type: ClusterIP
{{- end }}

View File

@@ -0,0 +1,35 @@
{{- if index .Values.ocWorkflow.enabled }}
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: oc-workflow
name: {{ .Release.Name }}-oc-workflow
spec:
replicas: 1
selector:
matchLabels:
app: oc-workflow
template:
metadata:
labels:
app: oc-workflow
spec:
containers:
- image: "{{ .Values.ocWorkflow.image }}"
name: oc-shared
envFrom:
- configMapRef:
name: opencloud-config
ports:
- name: http
containerPort: 8080
protocol: TCP
resources:
limits:
cpu: "{{ .Values.ocWorkflow.resources.limits.cpu }}"
memory: "{{ .Values.ocWorkflow.resources.limits.memory }}"
requests:
cpu: "{{ .Values.ocWorkflow.resources.requests.cpu }}"
memory: "{{ .Values.ocWorkflow.resources.requests.memory }}"
{{- end }}

View File

@@ -0,0 +1,29 @@
{{- if index .Values.ocWorkflow.enabled }}
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: oc-workflow-ingress
spec:
entryPoints:
- web
routes:
- kind: Rule
match: Host(`{{ .Values.host }}`) && PathPrefix(`/workflow`)
priority: 10
services:
- kind: Service
name: oc-workflow-svc
port: 8080
middlewares:
- name: strip-workflow-prefix
---
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: strip-workflow-prefix
spec:
stripPrefix:
prefixes:
- "/workflow"
{{- end }}

View File

@@ -0,0 +1,17 @@
{{- if index .Values.ocWorkflow.enabled }}
apiVersion: v1
kind: Service
metadata:
name: oc-workflow-svc
labels:
app: oc-workflow-svc
spec:
ports:
- name: http
port: 8080
protocol: TCP
targetPort: 8080
selector:
app: oc-workflow
type: ClusterIP
{{- end }}

View File

@@ -21,5 +21,5 @@ data:
OC_LDAP_ROLE_BASEDN: "{{ index .Values.ocAuth.ldap.roleBaseDn }}" OC_LDAP_ROLE_BASEDN: "{{ index .Values.ocAuth.ldap.roleBaseDn }}"
OC_MONGO_URL: "mongodb://{{ index .Values.mongodb.auth.usernames 0 }}:{{ index .Values.mongodb.auth.passwords 0 }}@{{ .Release.Name }}-mongodb.{{ .Release.Namespace }}:27017/{{ index .Values.mongodb.auth.databases 0 }}" OC_MONGO_URL: "mongodb://{{ index .Values.mongodb.auth.usernames 0 }}:{{ index .Values.mongodb.auth.passwords 0 }}@{{ .Release.Name }}-mongodb.{{ .Release.Namespace }}:27017/{{ index .Values.mongodb.auth.databases 0 }}"
OC_MONGO_DATABASE: "{{ index .Values.mongodb.auth.databases 0 }}" OC_MONGO_DATABASE: "{{ index .Values.mongodb.auth.databases 0 }}"
OC_NATS_URL: "nats://dev-nats.{{ .Release.Namespace }}.svc.cluster.local:4222" OC_NATS_URL: "nats://dev-nats.{{ .Release.Namespace }}:4222"
OC_LOKI_URL: "{{ .Values.SERVER_PATH }}" OC_LOKI_URL: "http://{{ .Release.Name }}-loki.{{ .Release.Namespace }}:3100"