I can confirm Joshua’s verdict, as I get the same error as you when trying to create the cluster with a UM A/P license.
Here are my descriptors.
And I repeat: Clustering in K8S and OpenShift is NOT SUPPORTED by Software AG at the time of writing this post.
StatefulSet:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: umserver
labels:
app: umserver
spec:
serviceName: umserver-h
selector:
matchLabels:
name: umserver-pod
app: umserver
replicas: 3
template:
metadata:
name: umserver-pod
labels:
name: umserver-pod
app: umserver
annotations:
prometheus.io/scrape: "true"
spec:
securityContext:
fsGroup: 1724
containers:
- name: umserver-container
image: sagcr.azurecr.io/universalmessaging-server:10.15
volumeMounts:
- mountPath: /opt/softwareag/UniversalMessaging/server/umserver/licence
name: licenses
- mountPath: /opt/softwareag/UniversalMessaging/server/umserver/data
name: um-data-directory
- mountPath: /opt/softwareag/common/conf
name: um-conf-directory
ports:
- containerPort: 9000
name: nsp
- containerPort: 9200
name: metrics
resources:
limits:
cpu: 500m
memory: 1000Mi
requests:
cpu: 250m
memory: 250Mi
env:
- name: REALM_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: INIT_JAVA_MEM_SIZE
value: '512'
- name: MAX_JAVA_MEM_SIZE
value: '900'
livenessProbe:
httpGet:
port: 9000
path: /health/
failureThreshold: 2
initialDelaySeconds: 60
periodSeconds: 5
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
httpGet:
port: 9000
path: /health/
initialDelaySeconds: 10
periodSeconds: 1
failureThreshold: 50
imagePullSecrets:
- name: sagregcred
volumes:
- name: licenses
secret:
secretName: licenses
items:
- key: um-license
path: licence.xml
volumeClaimTemplates:
- metadata:
name: um-data-directory
spec:
accessModes:
- ReadWriteOnce
storageClassName: managed-csi-premium
resources:
requests:
storage: 5Gi
- metadata:
name: um-conf-directory
spec:
accessModes:
- ReadWriteOnce
storageClassName: managed-csi-premium
resources:
requests:
storage: 1Gi
Storage class names are Azure ones here, they need to be changed to match these supported by your platform.
I am using RWO access mode here since each pod has its own dedicated storage space.
Resource allocations could also need to be tuned, depending on requirements.
Services
apiVersion: v1
kind: Service
metadata:
name: umserver-0
spec:
clusterIP: None
ports:
- port: 9000
name: nsp
targetPort: 9000
protocol: TCP
selector:
statefulset.kubernetes.io/pod-name: umserver-0
---
apiVersion: v1
kind: Service
metadata:
name: umserver-1
spec:
clusterIP: None
ports:
- port: 9000
name: nsp
targetPort: 9000
protocol: TCP
selector:
statefulset.kubernetes.io/pod-name: umserver-1
---
apiVersion: v1
kind: Service
metadata:
name: umserver-2
spec:
clusterIP: None
ports:
- port: 9000
name: nsp
targetPort: 9000
protocol: TCP
selector:
statefulset.kubernetes.io/pod-name: umserver-2
---
apiVersion: v1
kind: Service
metadata:
name: umserver-h
spec:
clusterIP: None
ports:
- port: 9000
name: nsp
targetPort: 9000
protocol: TCP
selector:
app: umserver
umserver-0, umserver-1 and umserver-2 are there for realms to talk to each other.
Job:
kind: Job
apiVersion: batch/v1
metadata:
name: universalmessaging-job-cluster
spec:
template:
spec:
containers:
- name: create-cluster
image: sagcr.azurecr.io/universalmessaging-tools:10.15
command: ["sh", "-c"]
args:
- >
runUMTool.sh CreateCluster -clustername=umcluster -convertlocal=true
-rnames=nsp://umserver-0,nsp://umserver-1,nsp://umserver-2
resources:
limits:
cpu: 500m
memory: 500Mi
requests:
cpu: 250m
memory: 250Mi
imagePullSecrets:
- name: sagregcred
restartPolicy: Never
To create the sagregcred secret:
kubectl create secret docker-registry sagregcred \
--docker-server=sagcr.azurecr.io \
--docker-username=${SAG_ACR_USERNAME} \
--docker-password=${SAG_ACR_PASSWORD} \
--docker-email=${SAG_ACR_EMAIL_ADDRESS}
To create the licenses secret:
kubectl create secret generic licenses \
--from-file=um-license=${UM_LICENSE_FILE_PATH}
#webMethods#Integration-Server-and-ESB#Universal-Messaging-Broker#MWS-CAF-Task-Engine#BPM