<!--
============LICENSE_START=======================================================
- Copyright (C) 2025 OpenInfra Foundation Europe. All rights reserved.
+ Copyright (C) 2025-2026 OpenInfra Foundation Europe. All rights reserved.
================================================================================
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
# CPS and NCMP Helm Chart
-This Helm chart deploys the **CPS** and **NCMP** ecosystem along with PostgreSQL, Kafka, Zookeeper, and the DMI Stub service.
+This Helm chart deploys the **CPS** and **NCMP** ecosystem along with PostgreSQL, Kafka, Zookeeper, and dual DMI Stub services.
---
## Prerequisites
- Kubernetes cluster (tested on K8s 1.24+)
helm install cps ./<chart-directory>
```
Replace <chart-directory> with the path to this Helm chart.
-You can verify the deployment using:
-```bash
-kubectl get all -l app=ncmp
-```
+
---
-## Uninstallation
-To uninstall the chart and delete all related resources:
+
+## check deployment status
+You can verify the deployment using:
```bash
-helm uninstall cps
+kubectl get pods
```
---
-## Port Forwarding
-You can access the services locally using kubectl port-forward.
----
-## CPS and NCMP (API) Service
+
+# Port forwarding
+Required for local access to cluster services
```bash
-kubectl port-forward service/cps-ncmp 8080:8080
+kubectl port-forward service/cps-ncmp-service 8080:8080
```
-Once port forwarding is active, you can access the CPS/NCMP API at:
-http://localhost:8080
---
-## DMI Stub Service
+
+## Uninstallation
+To uninstall the chart and delete all related resources:
```bash
-kubectl port-forward service/cps-ncmp-dmi-stub 8092:8092
+helm uninstall cps
```
-Access the DMI stub API at:
-http://localhost:8092
----
-## Default Credentials
-### PostgreSQL
-Database: cpsdb
-Username: cps
-Password: cps
-### DMI Stub
-Username: cpsuser
-Password: cpsr0cks!
---
+
## Configuration
This chart includes default settings suitable for local development and testing. You can customize values using a custom values.yaml file or by passing --set parameters at install time.
Example:
- kafka: Kafka message broker
- zookeeper: Zookeeper coordination service for Kafka
- dmi-stub: Stub service for NCMP device interactions
----
+---
\ No newline at end of file
{{ .Chart.Name }}
{{- end }}
-{{- define "cps-and-ncmp.fullname" -}}
+{{- define "cps-and-ncmp.release-name" -}}
{{ .Release.Name }}-{{ .Chart.Name }}
{{- end }}
apiVersion: apps/v1
kind: Deployment
metadata:
- name: {{ include "cps-and-ncmp.fullname" . }}
+ name: {{ include "cps-and-ncmp.release-name" . }}
labels:
app: {{ include "cps-and-ncmp.name" . }}
component: cps-and-ncmp
component: cps
spec:
serviceAccountName: cps-hazelcast-service-account
+ initContainers:
+ # Wait for PostgreSQL and Kafka to be ready
+ - name: wait-for-dependencies
+ image: busybox:1.36
+ command:
+ - sh
+ - -c
+ - |
+ echo "Waiting for PostgreSQL..."
+ until nc -z {{ include "cps-and-ncmp.release-name" . }}-postgresql-service 5432; do
+ echo "PostgreSQL not ready, waiting..."
+ sleep 2
+ done
+ echo "PostgreSQL is ready"
+ echo "Waiting for Kafka..."
+ until nc -z {{ include "cps-and-ncmp.release-name" . }}-kafka-service 9092; do
+ echo "Kafka not ready, waiting..."
+ sleep 2
+ done
+ echo "Kafka is ready"
+ echo "All dependencies are ready"
containers:
- name: cps
image: "{{ .Values.cps.image.repository }}:{{ .Values.cps.image.tag }}"
value: "{{ $envValue }}"
{{- end }}
- name: CPS_NCMP_SERVICE_NAME
- value: cps-{{ include "cps-and-ncmp.name" . }}-hazelcast
+ value: cps-{{ include "cps-and-ncmp.name" . }}-hazelcast-service
resources:
- requests:
- cpu: {{ .Values.cps.resources.requests.cpu }}
- memory: {{ .Values.cps.resources.requests.memory }}
- limits:
- cpu: {{ .Values.cps.resources.limits.cpu }}
- memory: {{ .Values.cps.resources.limits.memory }}
- readinessProbe:
- httpGet:
- path: /actuator/health/readiness
- port: 8080
- initialDelaySeconds: 60
- periodSeconds: 10
- timeoutSeconds: 5
- failureThreshold: 5
+ {{- toYaml .Values.cps.resources | nindent 12 }}
livenessProbe:
- httpGet:
- path: /actuator/health/liveness
- port: 8080
- initialDelaySeconds: 60
- periodSeconds: 10
- timeoutSeconds: 5
- failureThreshold: 5
+ {{- toYaml .Values.cps.livenessProbe | nindent 12 }}
+ readinessProbe:
+ {{- toYaml .Values.cps.readinessProbe | nindent 12 }}
kind: ServiceAccount
metadata:
name: cps-hazelcast-service-account
- namespace: default
+ namespace: {{ .Release.Namespace }}
labels:
app: {{ include "cps-and-ncmp.name" . }}
component: hazelcast
subjects:
- kind: ServiceAccount
name: cps-hazelcast-service-account
- namespace: default
\ No newline at end of file
+ namespace: {{ .Release.Namespace }}
\ No newline at end of file
apiVersion: v1
kind: Service
metadata:
- name: cps-{{ include "cps-and-ncmp.name" . }}-hazelcast
+ name: cps-{{ include "cps-and-ncmp.name" . }}-hazelcast-service
labels:
app: {{ include "cps-and-ncmp.name" . }}
component: cps-and-ncmp
apiVersion: v1
kind: Service
metadata:
- name: {{ include "cps-and-ncmp.fullname" . }}
+ name: {{ include "cps-and-ncmp.release-name" . }}-service
labels:
app: {{ include "cps-and-ncmp.name" . }}
component: cps-and-ncmp
apiVersion: apps/v1
kind: Deployment
metadata:
- name: {{ include "cps-and-ncmp.fullname" . }}-dmi-stub-1
+ name: {{ include "cps-and-ncmp.release-name" . }}-dmi-stub-1
labels:
app: {{ include "cps-and-ncmp.name" . }}
component: dmi-stub
ports:
- containerPort: {{ .Values.dmiStub.deployment1.containerPort }}
env:
- - name: DMI_STUB_SERVER_PORT
- value: "{{ .Values.dmiStub.deployment1.containerPort }}"
- - name: MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE
- value: "health,info"
- - name: MANAGEMENT_ENDPOINT_HEALTH_SHOW_DETAILS
- value: "always"
{{- range $key, $value := .Values.dmiStub.env }}
- - name: {{ $key }}
+ - name: {{ $key | upper }}
value: "{{ $value }}"
{{- end }}
+ - name: DMI_SERVER_PORT
+ value: "{{ .Values.dmiStub.deployment1.containerPort }}"
resources:
{{- toYaml .Values.dmiStub.resources | nindent 12 }}
livenessProbe:
- {{- toYaml .Values.dmiStub.livenessProbe.deployment1 | nindent 12 }}
+ {{- toYaml .Values.dmiStub.livenessProbe | nindent 12 }}
readinessProbe:
- {{- toYaml .Values.dmiStub.readinessProbe.deployment1 | nindent 12 }}
\ No newline at end of file
+ {{- toYaml .Values.dmiStub.readinessProbe | nindent 12 }}
\ No newline at end of file
apiVersion: apps/v1
kind: Deployment
metadata:
- name: {{ include "cps-and-ncmp.fullname" . }}-dmi-stub-2
+ name: {{ include "cps-and-ncmp.release-name" . }}-dmi-stub-2
labels:
app: {{ include "cps-and-ncmp.name" . }}
component: dmi-stub
ports:
- containerPort: {{ .Values.dmiStub.deployment2.containerPort }}
env:
- - name: DMI_STUB_SERVER_PORT
- value: "{{ .Values.dmiStub.deployment2.containerPort }}"
- - name: MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE
- value: "health,info"
- - name: MANAGEMENT_ENDPOINT_HEALTH_SHOW_DETAILS
- value: "always"
{{- range $key, $value := .Values.dmiStub.env }}
- - name: {{ $key }}
+ - name: {{ $key | upper }}
value: "{{ $value }}"
{{- end }}
+ - name: DMI_STUB_SERVER_PORT
+ value: "{{ .Values.dmiStub.deployment2.containerPort }}"
resources:
{{- toYaml .Values.dmiStub.resources | nindent 12 }}
livenessProbe:
{{- toYaml .Values.dmiStub.livenessProbe.deployment2 | nindent 12 }}
readinessProbe:
- {{- toYaml .Values.dmiStub.readinessProbe.deployment2 | nindent 12 }}
+ {{- toYaml .Values.dmiStub.readinessProbe.deployment2 | nindent 12 }}
\ No newline at end of file
apiVersion: v1
kind: Service
metadata:
- name: {{ include "cps-and-ncmp.fullname" . }}-dmi-stub-1
+ name: {{ include "cps-and-ncmp.release-name" . }}-dmi-stub-1-service
labels:
app: {{ include "cps-and-ncmp.name" . }}
component: dmi-stub
selector:
app: {{ include "cps-and-ncmp.name" . }}
component: dmi-stub
- instance: dmi-stub-1
+ instance: dmi-stub-1
\ No newline at end of file
apiVersion: v1
kind: Service
metadata:
- name: {{ include "cps-and-ncmp.fullname" . }}-dmi-stub-2
+ name: {{ include "cps-and-ncmp.release-name" . }}-dmi-stub-2-service
labels:
app: {{ include "cps-and-ncmp.name" . }}
component: dmi-stub
selector:
app: {{ include "cps-and-ncmp.name" . }}
component: dmi-stub
- instance: dmi-stub-2
+ instance: dmi-stub-2
\ No newline at end of file
apiVersion: apps/v1
kind: Deployment
metadata:
- name: {{ include "cps-and-ncmp.fullname" . }}-kafka
+ name: {{ include "cps-and-ncmp.release-name" . }}-kafka
labels:
app: {{ include "cps-and-ncmp.name" . }}
component: kafka
replicas: {{ .Values.kafka.replicaCount }}
selector:
matchLabels:
- app: kafka
+ app: {{ include "cps-and-ncmp.name" . }}
+ component: kafka
template:
metadata:
labels:
- app: kafka
+ app: {{ include "cps-and-ncmp.name" . }}
+ component: kafka
spec:
containers:
- name: kafka
image: "{{ .Values.kafka.image.repository }}:{{ .Values.kafka.image.tag }}"
imagePullPolicy: {{ .Values.kafka.image.pullPolicy }}
ports:
- - containerPort: {{ .Values.kafka.service.ports.internal }}
+ - containerPort: 29092
name: internal
- - containerPort: {{ .Values.kafka.service.ports.external }}
+ - containerPort: 9092
name: external
+ - containerPort: 9093
+ name: nodeport
env:
- - name: KAFKA_BROKER_ID
- value: "{{ .Values.kafka.brokerId }}"
- - name: KAFKA_ZOOKEEPER_CONNECT
- value: "{{ .Values.kafka.zookeeperConnect }}:2181"
- - name: KAFKA_LISTENER_SECURITY_PROTOCOL_MAP
- value: "{{ .Values.kafka.listenerSecurityProtocolMap }}"
- - name: KAFKA_LISTENERS
- value: "{{ .Values.kafka.listeners }}"
- - name: KAFKA_ADVERTISED_LISTENERS
- value: "{{ .Values.kafka.advertisedListeners }}"
- - name: KAFKA_INTER_BROKER_LISTENER_NAME
- value: "{{ .Values.kafka.interBrokerListenerName }}"
- - name: KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR
- value: "{{ .Values.kafka.offsetsTopicReplicationFactor }}"
+ {{- range $key, $value := .Values.kafka.env }}
+ - name: {{ $key | upper }}
+ value: "{{ $value }}"
+ {{- end }}
resources:
- requests:
- cpu: {{ .Values.kafka.resources.requests.cpu }}
- memory: {{ .Values.kafka.resources.requests.memory }}
- limits:
- cpu: "{{ .Values.kafka.resources.limits.cpu }}"
- memory: "{{ .Values.kafka.resources.limits.memory }}"
+ {{- toYaml .Values.kafka.resources | nindent 12 }}
+ livenessProbe:
+ {{- toYaml .Values.kafka.livenessProbe | nindent 12 }}
readinessProbe:
- exec:
- command:
- - kafka-topics
- - --bootstrap-server
- - localhost:{{ .Values.kafka.service.ports.internal }}
- - --list
- initialDelaySeconds: {{ .Values.kafka.healthcheck.startPeriod | default 30 }}
- periodSeconds: {{ .Values.kafka.healthcheck.interval | default 10 }}
- timeoutSeconds: {{ .Values.kafka.healthcheck.timeout | default 10 }}
- failureThreshold: {{ .Values.kafka.healthcheck.retries | default 3 }}
+ {{- toYaml .Values.kafka.readinessProbe | nindent 12 }}
apiVersion: v1
kind: Service
metadata:
- name: {{ include "cps-and-ncmp.fullname" . }}-kafka-external
+ name: {{ include "cps-and-ncmp.release-name" . }}-kafka-external-service
labels:
app: {{ include "cps-and-ncmp.name" . }}
component: kafka-external
targetPort: {{ .Values.kafka.externalService.ports.external }}
nodePort: {{ .Values.kafka.externalService.nodePorts.external }}
selector:
- app: kafka
\ No newline at end of file
+ app: {{ include "cps-and-ncmp.name" . }}
+ component: kafka
\ No newline at end of file
apiVersion: v1
kind: Service
metadata:
- name: {{ include "cps-and-ncmp.fullname" . }}-kafka
+ name: {{ include "cps-and-ncmp.release-name" . }}-kafka-service
labels:
app: {{ include "cps-and-ncmp.name" . }}
component: kafka
port: {{ .Values.kafka.service.ports.external }}
targetPort: {{ .Values.kafka.service.ports.external }}
selector:
- app: kafka
\ No newline at end of file
+ app: {{ include "cps-and-ncmp.name" . }}
+ component: kafka
\ No newline at end of file
apiVersion: apps/v1
kind: Deployment
metadata:
- name: {{ include "cps-and-ncmp.fullname" . }}-postgresql
+ name: {{ include "cps-and-ncmp.release-name" . }}-postgresql
labels:
app: {{ include "cps-and-ncmp.name" . }}
- component: postgres
+ component: postgresql
spec:
replicas: 1
selector:
ports:
- containerPort: 5432
env:
- - name: POSTGRES_DB
- value: "{{ .Values.postgresql.env.POSTGRES_DB }}"
- - name: POSTGRES_USER
- value: "{{ .Values.postgresql.env.POSTGRES_USER }}"
- - name: POSTGRES_PASSWORD
- value: "{{ .Values.postgresql.env.POSTGRES_PASSWORD }}"
+ {{- range $envName, $envValue := .Values.postgresql.env }}
+ - name: {{ $envName | upper }}
+ value: "{{ $envValue }}"
+ {{- end }}
volumeMounts:
- name: init-sql
mountPath: {{ .Values.postgresql.initSql.mountPath }}
resources:
- requests:
- cpu: {{ .Values.postgresql.resources.requests.cpu }}
- memory: {{ .Values.postgresql.resources.requests.memory }}
- limits:
- cpu: {{ .Values.postgresql.resources.limits.cpu }}
- memory: {{ .Values.postgresql.resources.limits.memory }}
+ {{- toYaml .Values.postgresql.resources | nindent 12 }}
+ livenessProbe:
+ {{- toYaml .Values.postgresql.livenessProbe | nindent 12 }}
readinessProbe:
- exec:
- command:
- - sh
- - -c
- - pg_isready -U {{ .Values.postgresql.env.POSTGRES_USER }} -d {{ .Values.postgresql.env.POSTGRES_DB }}
- initialDelaySeconds: 10
- periodSeconds: 10
- timeoutSeconds: 5
- failureThreshold: 10
+ {{- toYaml .Values.postgresql.readinessProbe | nindent 12 }}
volumes:
- name: init-sql
configMap:
apiVersion: v1
kind: Service
metadata:
- name: {{ include "cps-and-ncmp.fullname" . }}-postgresql
+ name: {{ include "cps-and-ncmp.release-name" . }}-postgresql-service
labels:
app: {{ include "cps-and-ncmp.name" . }}
- component: postgres
+ component: postgresql
spec:
type: ClusterIP
selector:
apiVersion: apps/v1
kind: Deployment
metadata:
- name: {{ include "cps-and-ncmp.fullname" . }}-zookeeper
+ name: {{ include "cps-and-ncmp.release-name" . }}-zookeeper
labels:
app: {{ include "cps-and-ncmp.name" . }}
component: zookeeper
ports:
- containerPort: {{ .Values.zookeeper.service.port }}
env:
- - name: ZOOKEEPER_CLIENT_PORT
- value: "{{ .Values.zookeeper.env.ZOOKEEPER_CLIENT_PORT }}"
- readinessProbe:
- exec:
- command: {{ toJson .Values.zookeeper.healthcheck.command }}
- initialDelaySeconds: {{ .Values.zookeeper.healthcheck.startPeriod | int }}
- periodSeconds: {{ .Values.zookeeper.healthcheck.interval | int }}
- timeoutSeconds: {{ .Values.zookeeper.healthcheck.timeout | int }}
- failureThreshold: {{ .Values.zookeeper.healthcheck.retries | int }}
- livenessProbe:
- exec:
- command: {{ toJson .Values.zookeeper.healthcheck.command }}
- initialDelaySeconds: {{ .Values.zookeeper.healthcheck.startPeriod | int }}
- periodSeconds: {{ .Values.zookeeper.healthcheck.interval | int }}
- timeoutSeconds: {{ .Values.zookeeper.healthcheck.timeout | int }}
- failureThreshold: {{ .Values.zookeeper.healthcheck.retries | int }}
+ {{- range $envName, $envValue := .Values.zookeeper.env }}
+ - name: {{ $envName | upper}}
+ value: "{{ $envValue }}"
+ {{- end }}
resources:
- requests:
- cpu: {{ .Values.zookeeper.resources.requests.cpu }}
- memory: {{ .Values.zookeeper.resources.requests.memory }}
- limits:
- cpu: {{ .Values.zookeeper.resources.limits.cpu }}
- memory: {{ .Values.zookeeper.resources.limits.memory }}
+ {{- toYaml .Values.zookeeper.resources | nindent 12 }}
+ livenessProbe:
+ {{- toYaml .Values.zookeeper.livenessProbe | nindent 12 }}
+ readinessProbe:
+ {{- toYaml .Values.zookeeper.readinessProbe | nindent 12 }}
apiVersion: v1
kind: Service
metadata:
- name: {{ include "cps-and-ncmp.fullname" . }}-zookeeper
+ name: {{ include "cps-and-ncmp.release-name" . }}-zookeeper-service
labels:
app: {{ include "cps-and-ncmp.name" . }}
component: zookeeper
postgresql:
image: "postgres:14.1-alpine"
+ persistence:
+ enabled: false
resources:
requests:
cpu: "2000m"
POSTGRES_USER: "cps"
POSTGRES_PASSWORD: "cps"
initSql:
- enabled: true
+ enabled: false
configMapName: postgres-init-sql
mountPath: /docker-entrypoint-initdb.d
+ livenessProbe:
+ exec:
+ command:
+ - sh
+ - -c
+ - pg_isready -U cps
+ initialDelaySeconds: 30
+ periodSeconds: 10
+ failureThreshold: 3
+ readinessProbe:
+ exec:
+ command:
+ - sh
+ - -c
+ - pg_isready -U cps -d cpsdb
+ initialDelaySeconds: 5
+ periodSeconds: 5
+ timeoutSeconds: 3
+ failureThreshold: 6
cps:
image:
repository: "nexus3.onap.org:10003/onap/cps-and-ncmp"
tag: "latest"
- pullPolicy: IfNotPresent
+ pullPolicy: Always
replicas: 2
servicePort: 8080
service:
nodePort: 30080
resources:
requests:
- cpu: "2000m"
- memory: "3Gi"
+ cpu: "500m"
+ memory: "1Gi"
limits:
- cpu: "6000m"
- memory: "5Gi"
+ cpu: "2000m"
+ memory: "2Gi"
+ livenessProbe:
+ # Give cps up to 170 seconds to become alive
+ httpGet:
+ path: /actuator/health/liveness
+ port: 8080
+ initialDelaySeconds: 120
+ periodSeconds: 10
+ timeoutSeconds: 5
+ failureThreshold: 5
+ readinessProbe:
+ # After CPS is alive it can take up to 110 seconds to be ready for requests
+ httpGet:
+ path: /actuator/health/readiness
+ port: 8080
+ initialDelaySeconds: 60
+ periodSeconds: 10
+ timeoutSeconds: 5
+ failureThreshold: 5
env:
- DB_HOST: "cps-ncmp-postgresql"
+ DB_HOST: "cps-ncmp-postgresql-service"
DB_USERNAME: "cps"
DB_PASSWORD: "cps"
+ DB_NAME: "cpsdb"
+ SPRING_DATASOURCE_URL: "jdbc:postgresql://cps-ncmp-postgresql-service:5432/cpsdb"
+ SPRING_DATASOURCE_USERNAME: "cps"
+ SPRING_DATASOURCE_PASSWORD: "cps"
DMI_USERNAME: "cpsuser"
DMI_PASSWORD: "cpsr0cks!"
- KAFKA_BOOTSTRAP_SERVER: "cps-ncmp-kafka.default.svc.cluster.local:9092"
+ SPRING_KAFKA_BOOTSTRAP_SERVERS: "cps-ncmp-kafka-service:9092"
+ SPRING_KAFKA_CONSUMER_BOOTSTRAP_SERVERS: "cps-ncmp-kafka-service:9092"
+ SPRING_KAFKA_PRODUCER_BOOTSTRAP_SERVERS: "cps-ncmp-kafka-service:9092"
notification_enabled: "true"
ONAP_TRACING_ENABLED: "false"
ONAP_OTEL_SAMPLER_JAEGER_REMOTE_ENDPOINT: "http://jaeger-service:14250"
POLICY_SERVICE_ENABLED: "false"
POLICY_SERVICE_DEFAULT_DECISION: "deny from env"
CPS_MONITORING_MICROMETER_JVM_EXTRAS: "true"
- JAVA_TOOL_OPTIONS: "-XX:InitialRAMPercentage=70.0 -XX:MaxRAMPercentage=70.0"
+ JAVA_TOOL_OPTIONS: "-Xms512m -Xmx1g -XX:+UseG1GC"
HAZELCAST_MODE_KUBERNETES_ENABLED: "true"
NCMP_INVENTORY_MODEL_UPGRADE_R20250722_ENABLED: 'false'
service:
type: ClusterIP
ports:
- external: 9092
internal: 29092
+ external: 9092
externalService:
ports:
internal: 9092
external: 9093
nodePorts:
external: 30093
- zookeeperConnect: "cps-ncmp-zookeeper.default.svc.cluster.local"
- brokerId: 1
- listeners: "INTERNAL://0.0.0.0:29092,EXTERNAL://0.0.0.0:9092,NODEPORT://0.0.0.0:9093"
- advertisedListeners: "INTERNAL://localhost:29092,EXTERNAL://cps-ncmp-kafka:9092,NODEPORT://localhost:30093"
- interBrokerListenerName: "INTERNAL"
- listenerSecurityProtocolMap: "INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT,NODEPORT:PLAINTEXT"
- offsetsTopicReplicationFactor: 1
+ env:
+ KAFKA_ZOOKEEPER_CONNECT: "cps-ncmp-zookeeper-service:2181"
+ KAFKA_ZOOKEEPER_CONNECTION_TIMEOUT_MS: "60000"
+ KAFKA_ZOOKEEPER_SESSION_TIMEOUT_MS: "60000"
+ KAFKA_BROKER_ID: "1"
+ KAFKA_LISTENERS: "INTERNAL://0.0.0.0:29092,EXTERNAL://0.0.0.0:9092,NODEPORT://0.0.0.0:9093"
+ KAFKA_ADVERTISED_LISTENERS: "INTERNAL://cps-ncmp-kafka-service:29092,EXTERNAL://cps-ncmp-kafka-service:9092,NODEPORT://localhost:30093"
+ KAFKA_INTER_BROKER_LISTENER_NAME: "INTERNAL"
+ KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: "INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT,NODEPORT:PLAINTEXT"
+ KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: "1"
+ KAFKA_RESTART_ATTEMPTS: "10"
+ KAFKA_RESTART_DELAY_MS: "5000"
resources:
requests:
cpu: "500m"
limits:
cpu: "2000m"
memory: "2Gi"
- healthcheck:
- enabled: true
- command: >
- kafka-topics --bootstrap-server cps-ncmp-kafka:29092 --list || exit 1
- interval: 10
- timeout: 10
- retries: 3
- startPeriod: 30
+ livenessProbe:
+ tcpSocket:
+ port: 29092
+ initialDelaySeconds: 60
+ periodSeconds: 30
+ failureThreshold: 5
+ timeoutSeconds: 10
+ readinessProbe:
+ tcpSocket:
+ port: 29092
+ initialDelaySeconds: 5
+ periodSeconds: 3
+ timeoutSeconds: 3
+ failureThreshold: 3
zookeeper:
enabled: true
memory: "1Gi"
env:
ZOOKEEPER_CLIENT_PORT: 2181
- healthcheck:
- enabled: true
- command: ["sh", "-c", "nc -z localhost 2181 || exit 1"]
- interval: 10s
- timeout: 10s
- retries: 3
- startPeriod: 30s
+ livenessProbe:
+ exec:
+ command: [ "sh", "-c", "nc -z localhost 2181 || exit 1" ]
+ initialDelaySeconds: 15
+ periodSeconds: 5
+ failureThreshold: 3
+ readinessProbe:
+ exec:
+ command: [ "sh", "-c", "nc -z localhost 2181 || exit 1" ]
+ initialDelaySeconds: 5
+ periodSeconds: 3
+ timeoutSeconds: 3
+ failureThreshold: 3
dmiStub:
enabled: true
replicaCount: 1
deployment1:
containerPort: 8092
- deployment2:
- containerPort: 8092
service1:
type: NodePort
port: 8092
nodePort: 30092
+ deployment2:
+ containerPort: 8093
service2:
type: NodePort
port: 8092
- nodePort: 31092
+ nodePort: 30094
env:
- KAFKA_BOOTSTRAP_SERVER: "cps-ncmp-kafka.default.svc.cluster.local:9092"
+ KAFKA_BOOTSTRAP_SERVER: "cps-ncmp-kafka-service:9092"
NCMP_CONSUMER_GROUP_ID: "ncmp-group"
NCMP_ASYNC_M2M_TOPIC: "ncmp-async-m2m"
MODULE_INITIAL_PROCESSING_DELAY_MS: 180000
cpu: "1000m"
memory: "2Gi"
livenessProbe:
- deployment1:
- httpGet:
- path: /actuator/health
- port: 8092
- initialDelaySeconds: 60
- periodSeconds: 30
- failureThreshold: 5
- timeoutSeconds: 10
- deployment2:
- httpGet:
- path: /actuator/health
- port: 8092
- initialDelaySeconds: 60
- periodSeconds: 30
- failureThreshold: 5
- timeoutSeconds: 10
+ httpGet:
+ path: /actuator/health/liveness
+ port: 8092
+ initialDelaySeconds: 30
+ periodSeconds: 15
+ failureThreshold: 3
+ timeoutSeconds: 5
readinessProbe:
- deployment1:
- httpGet:
- path: /actuator/health
- port: 8092
- initialDelaySeconds: 30
- periodSeconds: 10
- failureThreshold: 3
- timeoutSeconds: 5
- deployment2:
- httpGet:
- path: /actuator/health
- port: 8092
- initialDelaySeconds: 30
- periodSeconds: 10
- failureThreshold: 3
- timeoutSeconds: 5
+ httpGet:
+ path: /actuator/health/readiness
+ port: 8092
+ initialDelaySeconds: 15
+ periodSeconds: 5
+ failureThreshold: 3
+ timeoutSeconds: 5
+
+
},
"k8sHosts": {
"ncmpBaseUrl": "http://localhost:30080",
- "dmiStubUrl": "http://cps-ncmp-dmi-stub-1:8092",
+ "dmiStubUrl": "http://cps-and-ncmp-dmi-stub-1-service:8092",
"kafkaBootstrapServer": "localhost:30093"
},
"scenarios": {
},
"k8sHosts": {
"ncmpBaseUrl": "http://localhost:30080",
- "dmiStubUrl": "http://cps-ncmp-dmi-stub-1:8092",
+ "dmiStubUrl": "http://cps-and-ncmp-dmi-stub-1-service:8092",
"kafkaBootstrapServer": "localhost:30093"
},
"scenarios": {