integration-test/kubernetes-api-java/kubernetes/pekko-cluster.yml (62 lines of code) (raw):
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: pekko-bootstrap-demo
name: pekko-bootstrap-demo
spec:
replicas: 3
selector:
matchLabels:
app: pekko-bootstrap-demo
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
type: RollingUpdate
template:
metadata:
labels:
app: pekko-bootstrap-demo
actorSystemName: pekko-bootstrap-demo
spec:
containers:
- name: pekko-boostrap-demo
image: integration-test-kubernetes-api:1.3.3.7
imagePullPolicy: Never
livenessProbe:
tcpSocket:
port: 7626
ports:
# pekko remoting
- name: remoting
containerPort: 7355
protocol: TCP
# pekko-management
- containerPort: 7626
protocol: TCP
# when contact-point-discovery.port-name is set for cluster bootstrap,
# the management port must be named accordingly:
# name: management
env:
# The Kubernetes API discovery will use this service name to look for
# nodes with this value in the 'app' label
# This can be customized with the 'pod-label-selector' setting.
- name: PEKKO_CLUSTER_BOOTSTRAP_SERVICE_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: "metadata.labels['app']"
---
#
# Create a role, `pod-reader`, that can list pods and
# bind the default service account in the namespace
# that the binding is deployed to to that role.
#
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: pod-reader
rules:
- apiGroups: [""] # "" indicates the core API group
resources: ["pods"]
verbs: ["get", "watch", "list"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: read-pods
subjects:
# Uses the default service account.
# Consider creating a dedicated service account to run your
# Apache Pekko Cluster services and binding the role to that one.
- kind: ServiceAccount
name: default
roleRef:
kind: Role
name: pod-reader
apiGroup: rbac.authorization.k8s.io