kind: Deployment
metadata:
name: {{ include "cps-and-ncmp.fullname" . }}-cps
+ labels:
+ app: {{ include "cps-and-ncmp.name" . }}
+ component: cps-and-ncmp
spec:
replicas: {{ .Values.cps.replicas }}
selector:
app: {{ include "cps-and-ncmp.name" . }}
component: cps
spec:
+ serviceAccountName: cps-hazelcast-service-account
containers:
- name: cps
image: "{{ .Values.cps.image.repository }}:{{ .Values.cps.image.tag }}"
--- /dev/null
+# Reference : https://raw.githubusercontent.com/hazelcast/hazelcast/master/kubernetes-rbac.yaml
+# Simplified kubernetes-rbac.yaml with minimum necessary permissions granted to pods to query Kubernetes API.
+
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+ name: cps-hazelcast-service-account
+ namespace: default
+ labels:
+ app: {{ include "cps-and-ncmp.name" . }}
+ component: hazelcast
+ annotations:
+ description: "Hazelcast discovery via Kubernetes API to find cluster members - minimal RBAC"
+---
+
+apiVersion: rbac.authorization.k8s.io/v1
+kind: Role
+metadata:
+ name: cps-hazelcast-role
+ labels:
+ app: {{ include "cps-and-ncmp.name" . }}
+ component: hazelcast
+rules:
+ - apiGroups:
+ - "" # core API group (pods, nodes, services, endpoints)
+ resources:
+ - endpoints # used to discover other hazelcast members using kubernetes services
+ - pods
+ - services
+ verbs:
+ - get
+ - list
+ - apiGroups:
+ - "discovery.k8s.io"
+ resources:
+ - endpointslices # (for newer kubernetes versions) used to discover other hazelcast members using kubernetes services
+ verbs:
+ - get
+ - list
+
+---
+
+apiVersion: rbac.authorization.k8s.io/v1
+kind: RoleBinding
+metadata:
+ name: cps-hazelcast-role-binding
+roleRef:
+ apiGroup: rbac.authorization.k8s.io
+ kind: Role
+ name: cps-hazelcast-role
+subjects:
+ - kind: ServiceAccount
+ name: cps-hazelcast-service-account
+ namespace: default
\ No newline at end of file
kind: Service
metadata:
name: {{ include "cps-and-ncmp.name" . }}-cps-hazelcast
+ labels:
+ app: {{ include "cps-and-ncmp.name" . }}
+ component: cps-and-ncmp
spec:
clusterIP: None
selector:
kind: Service
metadata:
name: {{ include "cps-and-ncmp.fullname" . }}-cps
+ labels:
+ app: {{ include "cps-and-ncmp.name" . }}
+ component: cps-and-ncmp
spec:
type: {{ .Values.cps.service.type | default "ClusterIP" }}
selector:
name: {{ include "cps-and-ncmp.fullname" . }}-dmi-stub
labels:
app: {{ include "cps-and-ncmp.name" . }}
+ component: dmi-stub
spec:
replicas: {{ .Values.dmiStub.replicaCount }}
selector:
name: {{ include "cps-and-ncmp.fullname" . }}-dmi-stub
labels:
app: {{ include "cps-and-ncmp.name" . }}
+ component: dmi-stub
spec:
type: {{ .Values.dmiStub.service.type }}
ports:
metadata:
name: {{ include "cps-and-ncmp.fullname" . }}-kafka
labels:
- app: kafka
+ app: {{ include "cps-and-ncmp.name" . }}
+ component: kafka
spec:
replicas: {{ .Values.kafka.replicaCount }}
selector:
metadata:
name: {{ include "cps-and-ncmp.fullname" . }}-kafka
labels:
- app: kafka
+ app: {{ include "cps-and-ncmp.name" . }}
+ component: kafka
spec:
type: {{ .Values.kafka.service.type }}
ports:
kind: ConfigMap
metadata:
name: postgres-init-sql
+ labels:
+ app: {{ include "cps-and-ncmp.name" . }}
+ component: postgres
data:
postgres-init.sql: |-
{{ .Files.Get "config/postgres-init.sql" | indent 4 }}
\ No newline at end of file
kind: Deployment
metadata:
name: {{ include "cps-and-ncmp.fullname" . }}-postgresql
+ labels:
+ app: {{ include "cps-and-ncmp.name" . }}
+ component: postgres
spec:
replicas: 1
selector:
kind: Service
metadata:
name: {{ include "cps-and-ncmp.fullname" . }}-postgresql
+ labels:
+ app: {{ include "cps-and-ncmp.name" . }}
+ component: postgres
spec:
type: ClusterIP
selector: